use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class AppMetadataStore method addWorkflowNodeState.
/**
* This method is called to associate node state of custom action with the Workflow run.
*
* @param workflowRunId the run for which node state is to be added
* @param nodeStateDetail node state details to be added
*/
public void addWorkflowNodeState(ProgramRunId workflowRunId, WorkflowNodeStateDetail nodeStateDetail) {
// Node states will be stored with following key:
// workflowNodeState.namespace.app.WORKFLOW.workflowName.workflowRun.workflowNodeId
MDSKey key = getProgramKeyBuilder(TYPE_WORKFLOW_NODE_STATE, workflowRunId).add(nodeStateDetail.getNodeId()).build();
write(key, nodeStateDetail);
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class AppMetadataStore method getRunsForRunIds.
private Map<ProgramRunId, RunRecordMeta> getRunsForRunIds(final Set<ProgramRunId> runIds, String recordType, int limit) {
Set<MDSKey> keySet = new HashSet<>();
boolean includeVersionLessKeys = !upgradeComplete.get();
for (ProgramRunId programRunId : runIds) {
keySet.add(getProgramKeyBuilder(recordType, programRunId.getParent()).build());
if (includeVersionLessKeys && programRunId.getVersion().equals(ApplicationId.DEFAULT_VERSION)) {
keySet.add(getVersionLessProgramKeyBuilder(recordType, programRunId.getParent()).build());
}
}
Predicate<KeyValue<RunRecordMeta>> combinedFilter = input -> {
ProgramId programId = getProgramID(input.getKey());
RunRecordMeta meta = input.getValue();
ProgramRunId programRunId = programId.run(meta.getPid());
return runIds.contains(programRunId);
};
Map<MDSKey, RunRecordMeta> returnMap = listKV(keySet, RunRecordMeta.class, limit, combinedFilter);
return getProgramRunIdMap(returnMap);
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class AppMetadataStore method writeApplication.
public void writeApplication(String namespaceId, String appId, String versionId, ApplicationSpecification spec) {
if (!upgradeComplete.get() && versionId.equals(ApplicationId.DEFAULT_VERSION)) {
MDSKey mdsKey = new MDSKey.Builder().add(TYPE_APP_META, namespaceId, appId).build();
ApplicationMeta appMeta = get(mdsKey, ApplicationMeta.class);
// If app meta exists for the application without a version, delete that key.
if (appMeta != null) {
delete(mdsKey);
}
}
write(new MDSKey.Builder().add(TYPE_APP_META, namespaceId, appId, versionId).build(), new ApplicationMeta(appId, spec));
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class WorkflowDataset method delete.
public void delete(ApplicationId id) {
MDSKey mdsKey = new MDSKey.Builder().add(id.getNamespace()).add(id.getApplication()).build();
Scanner scanner = table.scan(mdsKey.getKey(), Bytes.stopKeyForPrefix(mdsKey.getKey()));
Row row;
try {
while ((row = scanner.next()) != null) {
table.delete(row.getRow());
}
} finally {
scanner.close();
}
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class WorkflowDataset method getRecord.
@Nullable
WorkflowRunRecord getRecord(WorkflowId id, String pid) {
RunId runId = RunIds.fromString(pid);
long startTime = RunIds.getTime(runId, TimeUnit.SECONDS);
MDSKey mdsKey = getRowKeyBuilder(id, startTime).build();
byte[] startRowKey = mdsKey.getKey();
Row indexRow = table.get(startRowKey);
if (indexRow.isEmpty()) {
return null;
}
Map<byte[], byte[]> columns = indexRow.getColumns();
String workflowRunId = Bytes.toString(columns.get(RUNID));
long timeTaken = Bytes.toLong(columns.get(TIME_TAKEN));
List<ProgramRun> actionRunsList = GSON.fromJson(Bytes.toString(columns.get(NODES)), PROGRAM_RUNS_TYPE);
return new WorkflowRunRecord(workflowRunId, timeTaken, actionRunsList);
}
Aggregations