ATLAS-4358: Address race condition in AtlasPatchRegistry in HA mode.
diff --git a/repository/src/main/java/org/apache/atlas/repository/patches/AtlasPatchManager.java b/repository/src/main/java/org/apache/atlas/repository/patches/AtlasPatchManager.java
index e2a38ab..d30971a 100644
--- a/repository/src/main/java/org/apache/atlas/repository/patches/AtlasPatchManager.java
+++ b/repository/src/main/java/org/apache/atlas/repository/patches/AtlasPatchManager.java
@@ -40,28 +40,19 @@
public class AtlasPatchManager {
private static final Logger LOG = LoggerFactory.getLogger(AtlasPatchManager.class);
- private final PatchContext context;
private final List<AtlasPatchHandler> handlers = new ArrayList<>();
+ private final AtlasGraph atlasGraph;
+ private final AtlasTypeRegistry typeRegistry;
+ private final GraphBackedSearchIndexer indexer;
+ private final EntityGraphMapper entityGraphMapper;
+ private PatchContext context;
@Inject
public AtlasPatchManager(AtlasGraph atlasGraph, AtlasTypeRegistry typeRegistry, GraphBackedSearchIndexer indexer, EntityGraphMapper entityGraphMapper) {
- this.context = new PatchContext(atlasGraph, typeRegistry, indexer, entityGraphMapper);
- }
-
- @PostConstruct
- public void init() {
- LOG.info("==> AtlasPatchManager.init()");
-
- // register all java patches here
- handlers.add(new UniqueAttributePatch(context));
- handlers.add(new ClassificationTextPatch(context));
- handlers.add(new FreeTextRequestHandlerPatch(context));
- handlers.add(new SuggestionsRequestHandlerPatch(context));
- handlers.add(new IndexConsistencyPatch(context));
- handlers.add(new ReIndexPatch(context));
- handlers.add(new ProcessNamePatch(context));
-
- LOG.info("<== AtlasPatchManager.init()");
+ this.atlasGraph = atlasGraph;
+ this.typeRegistry = typeRegistry;
+ this.indexer = indexer;
+ this.entityGraphMapper = entityGraphMapper;
}
public AtlasPatches getAllPatches() {
@@ -70,6 +61,7 @@
public void applyAll() {
LOG.info("==> AtlasPatchManager.applyAll()");
+ init();
try {
for (AtlasPatchHandler handler : handlers) {
@@ -90,6 +82,23 @@
LOG.info("<== AtlasPatchManager.applyAll()");
}
+ private void init() {
+ LOG.info("==> AtlasPatchManager.init()");
+
+ this.context = new PatchContext(atlasGraph, typeRegistry, indexer, entityGraphMapper);
+
+ // register all java patches here
+ handlers.add(new UniqueAttributePatch(context));
+ handlers.add(new ClassificationTextPatch(context));
+ handlers.add(new FreeTextRequestHandlerPatch(context));
+ handlers.add(new SuggestionsRequestHandlerPatch(context));
+ handlers.add(new IndexConsistencyPatch(context));
+ handlers.add(new ReIndexPatch(context));
+ handlers.add(new ProcessNamePatch(context));
+
+ LOG.info("<== AtlasPatchManager.init()");
+ }
+
public void addPatchHandler(AtlasPatchHandler patchHandler) {
handlers.add(patchHandler);
}