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);
     }