ATLAS-4727: admin/audits , admin/purge APIs fail with '[__AtlasAuditEntry.startTime] is not indexed in the targeted index [vertex_index]'
Signed-off-by: Pinal Shah <pinal.shah@freestoneinfotech.com>
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
index 8447ae2..c5e2448 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
@@ -48,6 +48,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.LinkedHashSet;
import static org.apache.atlas.model.discovery.SearchParameters.ALL_ENTITY_TYPES;
import static org.apache.atlas.model.discovery.SearchParameters.ALL_CLASSIFICATION_TYPES;
@@ -67,9 +68,9 @@
private final int typeUpdateLockMaxWaitTimeSeconds;
protected AtlasTypeDefGraphStore(AtlasTypeRegistry typeRegistry,
- Set<TypeDefChangeListener> typeDefChangeListeners) {
+ List<TypeDefChangeListener> typeDefChangeListenersList) {
this.typeRegistry = typeRegistry;
- this.typeDefChangeListeners = typeDefChangeListeners;
+ this.typeDefChangeListeners = new LinkedHashSet<>(typeDefChangeListenersList);
this.typeUpdateLockMaxWaitTimeSeconds = AtlasRepositoryConfiguration.getTypeUpdateLockMaxWaitTimeInSeconds();
}
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasTypeDefGraphStoreV2.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasTypeDefGraphStoreV2.java
index 5da6fde..1a18e16 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasTypeDefGraphStoreV2.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasTypeDefGraphStoreV2.java
@@ -50,6 +50,7 @@
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import java.util.List;
import static org.apache.atlas.repository.Constants.TYPE_CATEGORY_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.VERTEX_TYPE_PROPERTY_KEY;
@@ -70,7 +71,7 @@
@Inject
public AtlasTypeDefGraphStoreV2(AtlasTypeRegistry typeRegistry,
- Set<TypeDefChangeListener> typeDefChangeListeners,
+ List<TypeDefChangeListener> typeDefChangeListeners,
AtlasGraph atlasGraph,
EntityDiscoveryService entityDiscoveryService) {
super(typeRegistry, typeDefChangeListeners);
diff --git a/repository/src/test/java/org/apache/atlas/TestModules.java b/repository/src/test/java/org/apache/atlas/TestModules.java
index a0a6354..06ff36c 100644
--- a/repository/src/test/java/org/apache/atlas/TestModules.java
+++ b/repository/src/test/java/org/apache/atlas/TestModules.java
@@ -20,6 +20,7 @@
import com.google.inject.AbstractModule;
import com.google.inject.Binder;
import com.google.inject.Provider;
+import com.google.inject.Provides;
import com.google.inject.Singleton;
import com.google.inject.matcher.Matchers;
import com.google.inject.multibindings.Multibinder;
@@ -79,6 +80,9 @@
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
+import java.util.Arrays;
+import java.util.List;
+
import static org.apache.atlas.graph.GraphSandboxUtil.useLocalSolr;
@Test(enabled = false)
@@ -141,11 +145,6 @@
bind(EntityGraphMapper.class).asEagerSingleton();
bind(ExportService.class).asEagerSingleton();
- // New typesdef/instance change listener should also be bound to the corresponding implementation
- Multibinder<TypeDefChangeListener> typeDefChangeListenerMultibinder =
- Multibinder.newSetBinder(binder(), TypeDefChangeListener.class);
- typeDefChangeListenerMultibinder.addBinding().to(GraphBackedSearchIndexer.class).asEagerSingleton();
-
bind(SearchTracker.class).asEagerSingleton();
bind(AtlasEntityStore.class).to(AtlasEntityStoreV2.class);
@@ -196,6 +195,12 @@
bindInterceptor(Matchers.any(), Matchers.annotatedWith(GraphTransaction.class), graphTransactionInterceptor);
}
+ @Singleton
+ @Provides
+ public List<TypeDefChangeListener> getTypeDefChangeListenerList(GraphBackedSearchIndexer indexer) {
+ return Arrays.asList(indexer);
+ }
+
protected void bindAuditRepository(Binder binder) {
Class<? extends EntityAuditRepository> auditRepoImpl = AtlasRepositoryConfiguration.getAuditRepositoryImpl();