Commit f4672292 by Ashutosh Mestry

ATLAS-3775: Migration Import: Status display fix.

parent de696534
...@@ -22,15 +22,12 @@ import org.apache.atlas.model.migration.MigrationImportStatus; ...@@ -22,15 +22,12 @@ import org.apache.atlas.model.migration.MigrationImportStatus;
import org.apache.atlas.repository.Constants; import org.apache.atlas.repository.Constants;
import org.apache.atlas.repository.graph.AtlasGraphProvider; import org.apache.atlas.repository.graph.AtlasGraphProvider;
import org.apache.atlas.repository.graphdb.AtlasGraph; import org.apache.atlas.repository.graphdb.AtlasGraph;
import org.apache.atlas.repository.graphdb.AtlasIndexQuery;
import org.apache.atlas.repository.graphdb.AtlasVertex; import org.apache.atlas.repository.graphdb.AtlasVertex;
import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2; import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Date; import java.util.Date;
import java.util.Iterator;
import static org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2.getEncodedProperty; import static org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2.getEncodedProperty;
import static org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2.setEncodedProperty; import static org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2.setEncodedProperty;
...@@ -47,8 +44,8 @@ public class DataMigrationStatusService { ...@@ -47,8 +44,8 @@ public class DataMigrationStatusService {
this.migrationStatusVertexManagement = new MigrationStatusVertexManagement(AtlasGraphProvider.getGraphInstance()); this.migrationStatusVertexManagement = new MigrationStatusVertexManagement(AtlasGraphProvider.getGraphInstance());
} }
public DataMigrationStatusService(AtlasGraph atlasGraph) { public DataMigrationStatusService(AtlasGraph graph) {
this.migrationStatusVertexManagement = new MigrationStatusVertexManagement(atlasGraph); this.migrationStatusVertexManagement = new MigrationStatusVertexManagement(graph);
} }
...@@ -76,13 +73,11 @@ public class DataMigrationStatusService { ...@@ -76,13 +73,11 @@ public class DataMigrationStatusService {
} }
public MigrationImportStatus getStatus() { public MigrationImportStatus getStatus() {
if (this.status != null && if (this.status != null && this.migrationStatusVertexManagement.exists(this.status.getName())) {
StringUtils.isEmpty(this.status.getOperationStatus()) &&
this.migrationStatusVertexManagement.exists(this.status.getName())) {
return getCreate(this.status); return getCreate(this.status);
} else {
return this.status;
} }
return this.status;
} }
public MigrationImportStatus getByName(String name) { public MigrationImportStatus getByName(String name) {
...@@ -115,18 +110,18 @@ public class DataMigrationStatusService { ...@@ -115,18 +110,18 @@ public class DataMigrationStatusService {
public static final String PROPERTY_KEY_POSITION = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "migration.position"); public static final String PROPERTY_KEY_POSITION = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "migration.position");
public static final String PROPERTY_KEY_STATUS = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "migration.status"); public static final String PROPERTY_KEY_STATUS = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "migration.status");
private AtlasGraph atlasGraph; private AtlasGraph graph;
private AtlasVertex vertex; private AtlasVertex vertex;
public MigrationStatusVertexManagement(AtlasGraph atlasGraph) { public MigrationStatusVertexManagement(AtlasGraph graph) {
this.atlasGraph = atlasGraph; this.graph = graph;
} }
public MigrationImportStatus createOrUpdate(MigrationImportStatus status) { public MigrationImportStatus createOrUpdate(MigrationImportStatus status) {
this.vertex = findByNameInternal(status.getName()); this.vertex = findByNameInternal(status.getName());
if (this.vertex == null) { if (this.vertex == null) {
this.vertex = atlasGraph.addVertex(); this.vertex = graph.addVertex();
LOG.info("MigrationStatusVertexManagement: Vertex created!"); LOG.info("MigrationStatusVertexManagement: Vertex created!");
updateVertex(this.vertex, status); updateVertex(this.vertex, status);
} }
...@@ -156,29 +151,20 @@ public class DataMigrationStatusService { ...@@ -156,29 +151,20 @@ public class DataMigrationStatusService {
public void delete(String name) { public void delete(String name) {
try { try {
AtlasVertex vertex = findByNameInternal(name); AtlasVertex vertex = findByNameInternal(name);
atlasGraph.removeVertex(vertex); graph.removeVertex(vertex);
this.vertex = null; this.vertex = null;
} finally { } finally {
atlasGraph.commit(); graph.commit();
} }
} }
private AtlasVertex findByNameInternal(String name) { private AtlasVertex findByNameInternal(String name) {
try { try {
String idxQueryString = String.format("%s\"%s\":\"%s\"", AtlasGraphUtilsV2.getIndexSearchPrefix(), Constants.GUID_PROPERTY_KEY, name); return AtlasGraphUtilsV2.findByGuid(graph, name);
AtlasIndexQuery idxQuery = atlasGraph.indexQuery(Constants.VERTEX_INDEX, idxQueryString);
Iterator<AtlasIndexQuery.Result<Object, Object>> results = idxQuery.vertices();
AtlasIndexQuery.Result<?, ?> qryResult = results.hasNext() ? results.next() : null;
if (qryResult != null) {
return qryResult.getVertex();
} else {
return null;
}
} catch (Exception e) { } catch (Exception e) {
LOG.error("MigrationStatusVertexManagement.findByNameInternal: Failed!", e); LOG.error("MigrationStatusVertexManagement.findByNameInternal: Failed!", e);
} finally { } finally {
atlasGraph.commit(); graph.commit();
} }
return null; return null;
...@@ -190,7 +176,7 @@ public class DataMigrationStatusService { ...@@ -190,7 +176,7 @@ public class DataMigrationStatusService {
} catch (Exception e) { } catch (Exception e) {
LOG.warn("Error updating status. Please rely on log messages.", e); LOG.warn("Error updating status. Please rely on log messages.", e);
} finally { } finally {
atlasGraph.commit(); graph.commit();
} }
} }
...@@ -200,7 +186,7 @@ public class DataMigrationStatusService { ...@@ -200,7 +186,7 @@ public class DataMigrationStatusService {
} catch (Exception e) { } catch (Exception e) {
LOG.warn("Error updating status. Please rely on log messages.", e); LOG.warn("Error updating status. Please rely on log messages.", e);
} finally { } finally {
atlasGraph.commit(); graph.commit();
} }
} }
...@@ -219,7 +205,7 @@ public class DataMigrationStatusService { ...@@ -219,7 +205,7 @@ public class DataMigrationStatusService {
} catch (Exception ex) { } catch (Exception ex) {
LOG.error("Error updating MigrationImportStatus vertex. Status may not be persisted correctly.", ex); LOG.error("Error updating MigrationImportStatus vertex. Status may not be persisted correctly.", ex);
} finally { } finally {
atlasGraph.commit(); graph.commit();
} }
} }
......
...@@ -73,8 +73,10 @@ public class ZipFileMigrationImporter implements Runnable { ...@@ -73,8 +73,10 @@ public class ZipFileMigrationImporter implements Runnable {
dataMigrationStatusService.setStatus("DONE"); dataMigrationStatusService.setStatus("DONE");
} catch (IOException e) { } catch (IOException e) {
LOG.error("Migration Import: IO Error!", e); LOG.error("Migration Import: IO Error!", e);
dataMigrationStatusService.setStatus("FAIL");
} catch (AtlasBaseException e) { } catch (AtlasBaseException e) {
LOG.error("Migration Import: Error!", e); LOG.error("Migration Import: Error!", e);
dataMigrationStatusService.setStatus("FAIL");
} }
} }
......
...@@ -68,6 +68,5 @@ public class DataMigrationStatusServiceTest { ...@@ -68,6 +68,5 @@ public class DataMigrationStatusServiceTest {
dataMigrationStatusService.delete(); dataMigrationStatusService.delete();
assertNull(dataMigrationStatusService.getStatus()); assertNull(dataMigrationStatusService.getStatus());
assertNull(dataMigrationStatusService.getByName(ret.getName()));
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment