use of co.cask.cdap.proto.id.NamespacedEntityId in project cdap by caskdata.
the class LineageDataset method getEntitiesForRun.
/**
* @return a set of entities (program and data it accesses) associated with a program run.
*/
public Set<NamespacedEntityId> getEntitiesForRun(ProgramRunId run) {
ImmutableSet.Builder<NamespacedEntityId> recordBuilder = ImmutableSet.builder();
byte[] startKey = getRunScanStartKey(run);
try (Scanner scanner = accessRegistryTable.scan(startKey, Bytes.stopKeyForPrefix(startKey))) {
Row row;
while ((row = scanner.next()) != null) {
if (LOG.isTraceEnabled()) {
LOG.trace("Got row key = {}", Bytes.toString(row.getRow()));
}
RowKey rowKey = parseRow(row);
if (run.getEntityName().equals(rowKey.getRunId().getId())) {
recordBuilder.add(rowKey.getProgram());
recordBuilder.add(rowKey.getData());
}
}
}
return recordBuilder.build();
}
use of co.cask.cdap.proto.id.NamespacedEntityId in project cdap by caskdata.
the class LineageDataset method toRelation.
private Relation toRelation(Row row) {
Map<Character, EntityId> rowInfo = new HashMap<>(4);
MDSKey.Splitter splitter = new MDSKey(row.getRow()).split();
char marker = (char) splitter.getInt();
LOG.trace("Got marker {}", marker);
EntityId id1 = toEntityId(splitter, marker);
LOG.trace("Got id1 {}", id1);
rowInfo.put(marker, id1);
// inverted time - not required for relation
splitter.skipLong();
marker = (char) splitter.getInt();
LOG.trace("Got marker {}", marker);
EntityId id2 = toEntityId(splitter, marker);
LOG.trace("Got id2 {}", id1);
rowInfo.put(marker, id2);
RunId runId = RunIds.fromString(splitter.getString());
LOG.trace("Got runId {}", runId);
AccessType accessType = AccessType.fromType((char) splitter.getInt());
LOG.trace("Got access type {}", accessType);
DatasetId datasetInstance = (DatasetId) rowInfo.get(DATASET_MARKER);
LOG.trace("Got datasetInstance {}", datasetInstance);
StreamId stream = (StreamId) rowInfo.get(STREAM_MARKER);
LOG.trace("Got stream {}", stream);
ProgramId program = (ProgramId) rowInfo.get(PROGRAM_MARKER);
LOG.trace("Got program {}", program);
NamespacedEntityId component = toComponent(splitter, program);
LOG.trace("Got component {}", component);
if (stream == null) {
return new Relation(datasetInstance, program, accessType, runId, component == null ? ImmutableSet.<NamespacedEntityId>of() : ImmutableSet.of((NamespacedEntityId) component));
}
return new Relation(stream, program, accessType, runId, component == null ? ImmutableSet.<NamespacedEntityId>of() : ImmutableSet.of((NamespacedEntityId) component));
}
use of co.cask.cdap.proto.id.NamespacedEntityId in project cdap by caskdata.
the class MetadataStoreTest method testPublishing.
@Test
public void testPublishing() throws InterruptedException {
generateMetadataUpdates();
// Audit messages for metadata changes
List<AuditMessage> actualAuditMessages = new ArrayList<>();
for (AuditMessage auditMessage : auditPublisher.popMessages()) {
// Ignore system audit messages
if (auditMessage.getEntityId() instanceof NamespacedEntityId) {
String systemNs = NamespaceId.SYSTEM.getNamespace();
if (!((NamespacedEntityId) auditMessage.getEntityId()).getNamespace().equals(systemNs)) {
actualAuditMessages.add(auditMessage);
}
}
}
Assert.assertEquals(expectedAuditMessages, actualAuditMessages);
}
Aggregations