Search in sources :

Example 76 with MDSKey

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);
}
Also used : MDSKey(co.cask.cdap.data2.dataset2.lib.table.MDSKey)

Example 77 with MDSKey

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);
}
Also used : Arrays(java.util.Arrays) CConfiguration(co.cask.cdap.common.conf.CConfiguration) ProgramOptionConstants(co.cask.cdap.internal.app.runtime.ProgramOptionConstants) LoggerFactory(org.slf4j.LoggerFactory) MDSKey(co.cask.cdap.data2.dataset2.lib.table.MDSKey) TopicMessageIdStore(co.cask.cdap.internal.app.runtime.messaging.TopicMessageIdStore) RunIds(co.cask.cdap.common.app.RunIds) GsonBuilder(com.google.gson.GsonBuilder) ProgramType(co.cask.cdap.proto.ProgramType) Gson(com.google.gson.Gson) Map(java.util.Map) ApplicationSpecification(co.cask.cdap.api.app.ApplicationSpecification) RunId(org.apache.twill.api.RunId) ProgramId(co.cask.cdap.proto.id.ProgramId) BasicThrowable(co.cask.cdap.proto.BasicThrowable) ImmutableMap(com.google.common.collect.ImmutableMap) Predicate(java.util.function.Predicate) MetadataStoreDataset(co.cask.cdap.data2.dataset2.lib.table.MetadataStoreDataset) Set(java.util.Set) ProjectInfo(co.cask.cdap.common.utils.ProjectInfo) WorkflowToken(co.cask.cdap.api.workflow.WorkflowToken) Ticker(com.google.common.base.Ticker) BasicWorkflowToken(co.cask.cdap.internal.app.runtime.workflow.BasicWorkflowToken) NamespaceMeta(co.cask.cdap.proto.NamespaceMeta) List(java.util.List) Type(java.lang.reflect.Type) StreamSpecification(co.cask.cdap.api.data.stream.StreamSpecification) NamespaceId(co.cask.cdap.proto.id.NamespaceId) Iterables(com.google.common.collect.Iterables) ProgramRunClusterStatus(co.cask.cdap.proto.ProgramRunClusterStatus) ProgramController(co.cask.cdap.app.runtime.ProgramController) Stopwatch(com.google.common.base.Stopwatch) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) TypeToken(com.google.common.reflect.TypeToken) Function(java.util.function.Function) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) Table(co.cask.cdap.api.dataset.table.Table) ProgramRunStatus(co.cask.cdap.proto.ProgramRunStatus) Nullable(javax.annotation.Nullable) WorkflowNodeStateDetail(co.cask.cdap.proto.WorkflowNodeStateDetail) ProgramRunCluster(co.cask.cdap.proto.ProgramRunCluster) Logger(org.slf4j.Logger) Bytes(co.cask.cdap.api.common.Bytes) ApplicationId(co.cask.cdap.proto.id.ApplicationId) TxConstants(org.apache.tephra.TxConstants) BufferUnderflowException(java.nio.BufferUnderflowException) TimeUnit(java.util.concurrent.TimeUnit) ApplicationSpecificationAdapter(co.cask.cdap.internal.app.ApplicationSpecificationAdapter) Preconditions(com.google.common.base.Preconditions) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Collections(java.util.Collections) ProgramRunId(co.cask.cdap.proto.id.ProgramRunId) MDSKey(co.cask.cdap.data2.dataset2.lib.table.MDSKey) ProgramRunId(co.cask.cdap.proto.id.ProgramRunId) ProgramId(co.cask.cdap.proto.id.ProgramId) HashSet(java.util.HashSet)

Example 78 with MDSKey

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));
}
Also used : GsonBuilder(com.google.gson.GsonBuilder) MDSKey(co.cask.cdap.data2.dataset2.lib.table.MDSKey)

Example 79 with MDSKey

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();
    }
}
Also used : Scanner(co.cask.cdap.api.dataset.table.Scanner) MDSKey(co.cask.cdap.data2.dataset2.lib.table.MDSKey) Row(co.cask.cdap.api.dataset.table.Row)

Example 80 with MDSKey

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);
}
Also used : MDSKey(co.cask.cdap.data2.dataset2.lib.table.MDSKey) Row(co.cask.cdap.api.dataset.table.Row) RunId(org.apache.twill.api.RunId) Nullable(javax.annotation.Nullable)

Aggregations

MDSKey (co.cask.cdap.data2.dataset2.lib.table.MDSKey)66 MDSKey (io.cdap.cdap.data2.dataset2.lib.table.MDSKey)31 GsonBuilder (com.google.gson.GsonBuilder)22 IOException (java.io.IOException)16 Gson (com.google.gson.Gson)14 HashMap (java.util.HashMap)12 ProgramRunId (co.cask.cdap.proto.id.ProgramRunId)11 ApplicationId (io.cdap.cdap.proto.id.ApplicationId)9 Row (co.cask.cdap.api.dataset.table.Row)8 ProgramId (co.cask.cdap.proto.id.ProgramId)8 Nullable (javax.annotation.Nullable)8 ImmutableMap (com.google.common.collect.ImmutableMap)7 Test (org.junit.Test)7 Scanner (co.cask.cdap.api.dataset.table.Scanner)6 MetadataStoreDataset (co.cask.cdap.data2.dataset2.lib.table.MetadataStoreDataset)6 ArrayList (java.util.ArrayList)6 WorkflowNodeStateDetail (co.cask.cdap.proto.WorkflowNodeStateDetail)5 ApplicationId (co.cask.cdap.proto.id.ApplicationId)5 Row (io.cdap.cdap.api.dataset.table.Row)5 Scanner (io.cdap.cdap.api.dataset.table.Scanner)5