function propsWithDefaults()

in lib/dms-stack.ts [57:279]


function propsWithDefaults(context: ContextProps): ContextProps {
  context.replicationTaskSettings = context.replicationTaskSettings || {};

  context.replicationTaskSettings.TargetMetadata = Object.assign(
    {
      TargetSchema: '',
      SupportLobs: true,
      FullLobMode: true,
      LobChunkSize: 256,
      LimitedSizeLobMode: false,
      LobMaxSize: 0,
      InlineLobMaxSize: 64,
      LoadMaxFileSize: 500,
      ParallelLoadThreads: 0,
      ParallelLoadBufferSize: 0,
      BatchApplyEnabled: true,
      TaskRecoveryTableEnabled: true,
      ParallelLoadQueuesPerThread: 0,
      ParallelApplyThreads: 0,
      ParallelApplyBufferSize: 0,
      ParallelApplyQueuesPerThread: 0,
    },
    context.replicationTaskSettings.TargetMetadata
  );

  context.replicationTaskSettings.FullLoadSettings = Object.assign(
    {
      TargetTablePrepMode: 'TRUNCATE_BEFORE_LOAD',
      CreatePkAfterFullLoad: false,
      StopTaskCachedChangesApplied: false,
      StopTaskCachedChangesNotApplied: true,
      MaxFullLoadSubTasks: 16,
      TransactionConsistencyTimeout: 900,
      CommitRate: 50000,
    },
    context.replicationTaskSettings.FullLoadSettings
  );

  context.replicationTaskSettings.Logging = Object.assign(
    {
      EnableLogging: true,
      LogComponents: [
        {
          Id: 'TRANSFORMATION',
          Severity: 'LOGGER_SEVERITY_DEFAULT',
        },
        {
          Id: 'SOURCE_UNLOAD',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'IO',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'TARGET_LOAD',
          Severity: 'LOGGER_SEVERITY_DEFAULT',
        },
        {
          Id: 'PERFORMANCE',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'SOURCE_CAPTURE',
          Severity: 'LOGGER_SEVERITY_DEFAULT',
        },
        {
          Id: 'SORTER',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'REST_SERVER',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'VALIDATOR_EXT',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'TARGET_APPLY',
          Severity: 'LOGGER_SEVERITY_DEFAULT',
        },
        {
          Id: 'TASK_MANAGER',
          Severity: 'LOGGER_SEVERITY_DEFAULT',
        },
        {
          Id: 'TABLES_MANAGER',
          Severity: 'LOGGER_SEVERITY_DEFAULT',
        },
        {
          Id: 'METADATA_MANAGER',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'FILE_FACTORY',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'COMMON',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'ADDONS',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'DATA_STRUCTURE',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'COMMUNICATION',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
        {
          Id: 'FILE_TRANSFER',
          Severity: 'LOGGER_SEVERITY_ERROR',
        },
      ],
    },
    context.replicationTaskSettings.Logging
  );

  context.replicationTaskSettings.ControlTablesSettings = Object.assign(
    {
      ControlSchema: '',
      HistoryTimeslotInMinutes: 5,
      HistoryTableEnabled: false,
      SuspendedTablesTableEnabled: false,
      StatusTableEnabled: false,
      FullLoadExceptionTableEnabled: false,
    },
    context.replicationTaskSettings.ControlTablesSettings
  );

  context.replicationTaskSettings.StreamBufferSettings = Object.assign(
    {
      StreamBufferCount: 4,
      StreamBufferSizeInMB: 16,
      CtrlStreamBufferSizeInMB: 5,
    },
    context.replicationTaskSettings.StreamBufferSettings
  );

  context.replicationTaskSettings.ChangeProcessingDdlHandlingPolicy = Object.assign(
    {
      HandleSourceTableDropped: true,
      HandleSourceTableTruncated: true,
      HandleSourceTableAltered: true,
    },
    context.replicationTaskSettings.ChangeProcessingDdlHandlingPolicy
  );

  context.replicationTaskSettings.ErrorBehavior = Object.assign(
    {
      DataErrorPolicy: 'LOG_ERROR',
      DataTruncationErrorPolicy: 'LOG_ERROR',
      DataErrorEscalationPolicy: 'SUSPEND_TABLE',
      DataErrorEscalationCount: 0,
      TableErrorPolicy: 'SUSPEND_TABLE',
      TableErrorEscalationPolicy: 'STOP_TASK',
      TableErrorEscalationCount: 0,
      RecoverableErrorCount: -1,
      RecoverableErrorInterval: 5,
      RecoverableErrorThrottling: true,
      RecoverableErrorThrottlingMax: 1800,
      RecoverableErrorStopRetryAfterThrottlingMax: true,
      ApplyErrorDeletePolicy: 'IGNORE_RECORD',
      ApplyErrorInsertPolicy: 'LOG_ERROR',
      ApplyErrorUpdatePolicy: 'LOG_ERROR',
      ApplyErrorEscalationPolicy: 'LOG_ERROR',
      ApplyErrorEscalationCount: 0,
      ApplyErrorFailOnTruncationDdl: false,
      FullLoadIgnoreConflicts: true,
      FailOnTransactionConsistencyBreached: false,
      FailOnNoTablesCaptured: true,
    },
    context.replicationTaskSettings.ErrorBehavior
  );

  context.replicationTaskSettings.ChangeProcessingTuning = Object.assign(
    {
      BatchApplyPreserveTransaction: true,
      BatchApplyTimeoutMin: 1,
      BatchApplyTimeoutMax: 120,
      BatchApplyMemoryLimit: 500,
      BatchSplitSize: 0,
      MinTransactionSize: 1000,
      CommitTimeout: 1,
      MemoryLimitTotal: 2048,
      MemoryKeepTime: 120,
      StatementCacheSize: 50,
    },
    context.replicationTaskSettings.ChangeProcessingTuning
  );

  context.replicationTaskSettings.ValidationSettings = Object.assign(
    {
      EnableValidation: false,
      ValidationMode: 'ROW_LEVEL',
      ThreadCount: 8,
      PartitionSize: 10000,
      FailureMaxCount: 10000,
      RecordFailureDelayInMinutes: 5,
      RecordSuspendDelayInMinutes: 30,
      MaxKeyColumnSize: 8096,
      TableFailureMaxCount: 1000,
      ValidationOnly: false,
      HandleCollationDiff: false,
      RecordFailureDelayLimitInMinutes: 0,
      SkipLobColumns: false,
      ValidationPartialLobSize: 0,
      ValidationQueryCdcDelaySeconds: 0,
    },
    context.replicationTaskSettings.ValidationSettings
  );

  context.replicationTaskSettings.FailTaskWhenCleanTaskResourceFailed = Boolean(
    context.replicationTaskSettings.FailTaskWhenCleanTaskResourceFailed
  );

  return context;
}