hikoutei 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -2
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts +2 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +5 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +52 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +195 -13
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts +24 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js +124 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts +15 -2
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +27 -3
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +2 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +3 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +9 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +137 -20
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +82 -34
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts +31 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js +567 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +12 -17
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +27 -213
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +81 -8
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +1 -6
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +15 -9
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -1
- package/dist/application/orm/mapping/projection.js +1 -1
- package/dist/application/orm/mapping/projection.js.map +1 -1
- package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
- package/dist/application/orm/persistence/flush/flushCoordinator.js +1 -0
- package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +1 -1
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts +3 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +1 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js +3 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +1 -1
- package/dist/application/sync/gateway/conflictProjection.d.ts +13 -0
- package/dist/application/sync/gateway/conflictProjection.d.ts.map +1 -0
- package/dist/application/sync/gateway/conflictProjection.js +58 -0
- package/dist/application/sync/gateway/conflictProjection.js.map +1 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts +11 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts.map +1 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.js +70 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.js.map +1 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts +102 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts.map +1 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js +221 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js.map +1 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts +51 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts.map +1 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.js +65 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.js.map +1 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts +31 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts.map +1 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js +13 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js.map +1 -0
- package/dist/application/sync/gateway/syncGateway.d.ts +26 -6
- package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -1
- package/dist/application/sync/gateway/syncGateway.js +10 -2
- package/dist/application/sync/gateway/syncGateway.js.map +1 -1
- package/dist/application/sync/gateway/transportClassification.d.ts +62 -0
- package/dist/application/sync/gateway/transportClassification.d.ts.map +1 -0
- package/dist/application/sync/gateway/transportClassification.js +133 -0
- package/dist/application/sync/gateway/transportClassification.js.map +1 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.d.ts +26 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.d.ts.map +1 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.js +335 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.js.map +1 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts +50 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js +97 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +4 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +35 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +14 -2
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js +190 -31
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +25 -2
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +25 -2
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +14 -7
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +118 -14
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +30 -9
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +102 -18
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +49 -14
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +97 -17
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts +17 -0
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js +125 -10
- package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
- package/dist/application/sync/service/contracts.d.ts +2 -0
- package/dist/application/sync/service/contracts.d.ts.map +1 -1
- package/dist/application/sync/telemetry/syncTiming.d.ts +6 -0
- package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -1
- package/dist/application/sync/telemetry/syncTiming.js +2 -0
- package/dist/application/sync/telemetry/syncTiming.js.map +1 -1
- package/dist/domain/conflict/index.d.ts +1 -1
- package/dist/domain/conflict/index.d.ts.map +1 -1
- package/dist/domain/conflict/index.js +1 -1
- package/dist/domain/conflict/index.js.map +1 -1
- package/dist/domain/conflict/transitions.d.ts +3 -0
- package/dist/domain/conflict/transitions.d.ts.map +1 -1
- package/dist/domain/conflict/transitions.js +3 -2
- package/dist/domain/conflict/transitions.js.map +1 -1
- package/dist/domain/model/constants.d.ts +1 -0
- package/dist/domain/model/constants.d.ts.map +1 -1
- package/dist/domain/model/constants.js +1 -0
- package/dist/domain/model/constants.js.map +1 -1
- package/dist/infrastructure/storage/index.d.ts +4 -2
- package/dist/infrastructure/storage/index.d.ts.map +1 -1
- package/dist/infrastructure/storage/index.js +2 -1
- package/dist/infrastructure/storage/index.js.map +1 -1
- package/dist/infrastructure/storage/sqlite/migrateSchema.d.ts.map +1 -1
- package/dist/infrastructure/storage/sqlite/migrateSchema.js +59 -1
- package/dist/infrastructure/storage/sqlite/migrateSchema.js.map +1 -1
- package/dist/infrastructure/storage/sqlite/schema.d.ts +12 -1
- package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -1
- package/dist/infrastructure/storage/sqlite/schema.js +47 -3
- package/dist/infrastructure/storage/sqlite/schema.js.map +1 -1
- package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts +2 -2
- package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +1 -1
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -1
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts +1 -0
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js +1 -1
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js.map +1 -1
- package/dist/infrastructure/storage/state/observation/observationAudit.js +5 -1
- package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts +10 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +106 -20
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts +9 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js +3 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +11 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +35 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +12 -4
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +46 -15
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +24 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +9 -7
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +44 -8
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +3 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +35 -2
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js +1 -0
- package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js.map +1 -1
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts +31 -0
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js +92 -0
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js.map +1 -0
- package/dist/infrastructure/storage/sync/shared/writerLease.js +3 -1
- package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -1
- package/docs/advanced-sheets-gateway-concurrency-problem.md +434 -0
- package/docs/architecture.md +53 -11
- package/docs/google-sheets-sync-scaling-strategy.md +459 -0
- package/docs/quick-start.md +15 -1
- package/docs/sync-bulk-write-benchmark.md +520 -0
- package/docs/sync-observability.md +39 -3
- package/docs/write-and-synchronization-flow.md +76 -17
- package/package.json +1 -1
|
@@ -9,16 +9,17 @@ import { randomUUID } from "node:crypto";
|
|
|
9
9
|
import { EMPTY_STRING_LENGTH_ZERO, NON_NEGATIVE_SAFE_INTEGER_MINIMUM, POSITIVE_SAFE_INTEGER_MINIMUM, } from "../../../../domain/index.js";
|
|
10
10
|
import { CONFLICT_STATUSES } from "../../../../domain/model/constants.js";
|
|
11
11
|
import { LOOKUP_RESULT_KINDS, absentValue, presentValue, } from "../../../../shared/state/index.js";
|
|
12
|
-
import { applyEffectResultWithAdapter, claimEffectWithAdapter, claimWriterLeaseWithAdapter, recoverExpiredLeasesWithAdapter, listReadyEffectsWithAdapter, releaseUnprocessedEffectWithAdapter, retryClaimedEffectWithAdapter, supersedeAndReplanWithAdapter, hasActiveUserInputCandidateWithSql, } from "../../../../infrastructure/storage/index.js";
|
|
12
|
+
import { applyEffectResultWithAdapter, claimEffectWithAdapter, claimWriterLeaseWithAdapter, markDeliveryUncertainWithAdapter, renewEffectLeaseWithAdapter, recoverExpiredLeasesWithAdapter, listReadyEffectsWithAdapter, releaseUnprocessedEffectWithAdapter, retryClaimedEffectWithAdapter, supersedeAndReplanWithAdapter, hasActiveUserInputCandidateWithSql, ensureSpreadsheetAuthorityWithAdapter, } from "../../../../infrastructure/storage/index.js";
|
|
13
13
|
import { SYNC_GATEWAY_EFFECT_RESULT_STATUSES, SYNC_GATEWAY_PROJECTIONS, } from "../../gateway/constants.js";
|
|
14
|
+
import { classifyTransportOutcome, TRANSPORT_OUTCOME_KINDS, } from "../../gateway/transportClassification.js";
|
|
14
15
|
import { WRITER_LEASE_CLAIM_RESULT_KINDS } from "../../../../infrastructure/storage/sync/shared/writerLease.js";
|
|
15
16
|
import { SYNC_TIMING_SCOPES, } from "../../telemetry/syncTiming.js";
|
|
16
|
-
import { DEFAULT_EFFECT_LEASE_DURATION_MS, DEFAULT_WORKER_ROLE, DEFAULT_WRITER_LEASE_DURATION_MS, OUTBOX_EFFECT_STATUSES, WORKER_ERROR_CODES, } from "./SyncEffectWorkerConstants.js";
|
|
17
|
+
import { DEFAULT_EFFECT_LEASE_DURATION_MS, DEFAULT_WORKER_ROLE, EFFECT_LEASE_GATEWAY_HEADROOM_MS, DEFAULT_WRITER_LEASE_DURATION_MS, GATEWAY_EFFECT_BATCH_LIMIT, MAX_IN_FLIGHT_EFFECTS, OUTBOX_EFFECT_STATUSES, WORKER_ERROR_CODES, } from "./SyncEffectWorkerConstants.js";
|
|
17
18
|
import { isAbsent, isPresent, lookupResult, safeErrorMessage, throwWorkerError, } from "./SyncEffectWorkerHelpers.js";
|
|
18
19
|
import { countsForItems, countsForPendingEffects, emptyOperationCounts, emitGatewayTiming, emitWorkerTiming, operationKindsForItems, operationKindsForPendingEffects, operationKindsForCounts, } from "./SyncEffectWorkerTiming.js";
|
|
19
20
|
import { completeFailure, completeGatewayResult, recoverUnknownResults, } from "./SyncEffectWorkerTransitions.js";
|
|
20
|
-
import { dispatchFastAppendGroup, rejectUnsupportedGatewayEffects, } from "./SyncEffectWorkerDispatch.js";
|
|
21
|
-
import { fenceFromLease, groupByFastAppendRequest, groupByGatewayRequest, isCandidateProtectingUserInputEffect, isFastAppendCandidate, isSuccessfulGatewayPostcondition, toGatewayEffect, } from "./SyncEffectWorkerRouting.js";
|
|
21
|
+
import { dispatchFastAppendGroup, handleGatewayDispatchError, rejectUnsupportedGatewayEffects, } from "./SyncEffectWorkerDispatch.js";
|
|
22
|
+
import { fenceFromLease, groupByFastAppendRequest, groupByGatewayRequest, chunkFastAppendGroups, chunkGatewayEffectGroups, gatewayRouteKey, isCandidateProtectingUserInputEffect, isFastAppendCandidate, isSuccessfulGatewayPostcondition, toGatewayEffect, } from "./SyncEffectWorkerRouting.js";
|
|
22
23
|
/**
|
|
23
24
|
* Processes effects through an adapter-owned SQL connection.
|
|
24
25
|
*
|
|
@@ -30,6 +31,13 @@ export async function runSyncEffectWorkerWithAdapter(options) {
|
|
|
30
31
|
}
|
|
31
32
|
async function runEffectWorker(options, storage) {
|
|
32
33
|
const passStartedAt = Date.now();
|
|
34
|
+
if (options.clock === undefined) {
|
|
35
|
+
const baselineNow = options.now;
|
|
36
|
+
options = {
|
|
37
|
+
...options,
|
|
38
|
+
clock: () => baselineNow + Math.max(0, Date.now() - passStartedAt),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
33
41
|
validateOptions(options);
|
|
34
42
|
const role = options.writerRole ?? DEFAULT_WORKER_ROLE;
|
|
35
43
|
const leaseDuration = options.writerLeaseDurationMs ?? DEFAULT_WRITER_LEASE_DURATION_MS;
|
|
@@ -67,27 +75,118 @@ async function runEffectWorker(options, storage) {
|
|
|
67
75
|
operationKinds: [],
|
|
68
76
|
operationCounts: emptyOperationCounts(),
|
|
69
77
|
});
|
|
70
|
-
|
|
78
|
+
let fence = fenceFromLease(claimResult.lease, options.now);
|
|
79
|
+
const leaseNow = () => options.clock?.() ?? options.now + Math.max(0, Date.now() - passStartedAt);
|
|
80
|
+
const currentFence = () => ({
|
|
81
|
+
...fence,
|
|
82
|
+
// Direct worker callers may provide a deterministic `now` but no clock;
|
|
83
|
+
// advance that baseline by elapsed wall time so a slow remote call cannot
|
|
84
|
+
// reuse a pass-start timestamp after the writer lease has expired.
|
|
85
|
+
now: leaseNow(),
|
|
86
|
+
});
|
|
87
|
+
const refreshDispatchLeases = async (items) => {
|
|
88
|
+
const now = leaseNow();
|
|
89
|
+
const writerRefresh = await storage.claimWriterLease({
|
|
90
|
+
role,
|
|
91
|
+
writerId: options.workerId,
|
|
92
|
+
leaseDurationMs: leaseDuration,
|
|
93
|
+
now,
|
|
94
|
+
});
|
|
95
|
+
if (writerRefresh.kind !== WRITER_LEASE_CLAIM_RESULT_KINDS.CLAIMED)
|
|
96
|
+
return false;
|
|
97
|
+
if (writerRefresh.lease.writerEpoch !== fence.writerEpoch ||
|
|
98
|
+
writerRefresh.lease.fencingToken !== fence.fencingToken) {
|
|
99
|
+
// The old fence expired and was taken over. Do not dispatch effects
|
|
100
|
+
// claimed under that token; the next pass will recover them safely.
|
|
101
|
+
fence = fenceFromLease(writerRefresh.lease, now);
|
|
102
|
+
await storage.recoverExpiredLeases(currentFence());
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
const authoritySheetIds = new Set(items.map((item) => item.pending.physical_sheet_id));
|
|
106
|
+
for (const physicalSheetId of authoritySheetIds) {
|
|
107
|
+
if (!(await storage.ensureSpreadsheetAuthority({
|
|
108
|
+
...currentFence(),
|
|
109
|
+
physicalSheetId,
|
|
110
|
+
ownerId: options.workerId,
|
|
111
|
+
}))) {
|
|
112
|
+
await storage.recoverExpiredLeases(currentFence());
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const renewed = [];
|
|
117
|
+
const notRenewed = [];
|
|
118
|
+
for (const item of items) {
|
|
119
|
+
if (await storage.renewEffectLease({
|
|
120
|
+
...currentFence(),
|
|
121
|
+
effectId: item.pending.effect_id,
|
|
122
|
+
claimToken: item.claimToken,
|
|
123
|
+
leaseDurationMs: effectLeaseDuration,
|
|
124
|
+
}))
|
|
125
|
+
renewed.push(item);
|
|
126
|
+
else
|
|
127
|
+
notRenewed.push(item);
|
|
128
|
+
}
|
|
129
|
+
if (renewed.length === items.length)
|
|
130
|
+
return true;
|
|
131
|
+
await storage.recoverExpiredLeases(currentFence());
|
|
132
|
+
for (const item of renewed) {
|
|
133
|
+
if (await storage.releaseUnprocessedEffect({
|
|
134
|
+
...currentFence(),
|
|
135
|
+
effectId: item.pending.effect_id,
|
|
136
|
+
claimToken: item.claimToken,
|
|
137
|
+
}))
|
|
138
|
+
report.deferred += 1;
|
|
139
|
+
}
|
|
140
|
+
for (const item of notRenewed) {
|
|
141
|
+
if (await storage.retryClaimedEffect({
|
|
142
|
+
...currentFence(),
|
|
143
|
+
effectId: item.pending.effect_id,
|
|
144
|
+
claimToken: item.claimToken,
|
|
145
|
+
lastErrorCode: WORKER_ERROR_CODES.GATEWAY_RETRYABLE_ERROR,
|
|
146
|
+
lastErrorMessage: "Effect lease could not be renewed before remote dispatch.",
|
|
147
|
+
})) {
|
|
148
|
+
report.requeued += 1;
|
|
149
|
+
report.deferred += 1;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
};
|
|
154
|
+
const coalesceStartedAt = Date.now();
|
|
155
|
+
const coalescedMs = await options.batchController?.waitForCoalescing(Date.now()) ?? 0;
|
|
156
|
+
if (coalescedMs > 0) {
|
|
157
|
+
emitWorkerTiming(options, {
|
|
158
|
+
scope: SYNC_TIMING_SCOPES.WORKER,
|
|
159
|
+
phase: "batch_coalesce_wait",
|
|
160
|
+
durationMs: Date.now() - coalesceStartedAt,
|
|
161
|
+
operationKinds: [],
|
|
162
|
+
operationCounts: emptyOperationCounts(),
|
|
163
|
+
});
|
|
164
|
+
}
|
|
71
165
|
const selectStartedAt = Date.now();
|
|
72
|
-
report.expiredLeasesRecovered = await storage.recoverExpiredLeases(
|
|
73
|
-
const selected = await storage.listReadyEffects(options.maxEffects);
|
|
74
|
-
|
|
166
|
+
report.expiredLeasesRecovered = await storage.recoverExpiredLeases(currentFence());
|
|
167
|
+
const selected = await storage.listReadyEffects(options.maxEffects, currentFence().now);
|
|
168
|
+
// Keep maxEffects as the SQLite selection upper bound, but only lease a
|
|
169
|
+
// bounded in-flight window before the first remote dispatch. Remaining rows
|
|
170
|
+
// stay durable and are picked up on the next pass.
|
|
171
|
+
const claimable = selected.slice(0, MAX_IN_FLIGHT_EFFECTS);
|
|
172
|
+
report.selected = claimable.length;
|
|
75
173
|
emitWorkerTiming(options, {
|
|
76
174
|
scope: SYNC_TIMING_SCOPES.WORKER,
|
|
77
175
|
phase: "recover_and_select",
|
|
78
176
|
durationMs: Date.now() - selectStartedAt,
|
|
79
|
-
operationKinds: operationKindsForPendingEffects(
|
|
80
|
-
operationCounts: countsForPendingEffects(
|
|
177
|
+
operationKinds: operationKindsForPendingEffects(claimable),
|
|
178
|
+
operationCounts: countsForPendingEffects(claimable),
|
|
81
179
|
});
|
|
82
180
|
const claimed = [];
|
|
83
181
|
const recoveryCandidates = [];
|
|
84
182
|
const claimEffectsStartedAt = Date.now();
|
|
85
|
-
for (const pending of
|
|
183
|
+
for (const pending of claimable) {
|
|
86
184
|
const claimToken = "claim:" + randomUUID();
|
|
87
185
|
const claim = await storage.claimEffect({
|
|
88
|
-
...
|
|
186
|
+
...currentFence(),
|
|
89
187
|
effectId: pending.effect_id,
|
|
90
188
|
claimToken,
|
|
189
|
+
dispatchId: "dispatch:" + randomUUID(),
|
|
91
190
|
leaseDurationMs: effectLeaseDuration,
|
|
92
191
|
});
|
|
93
192
|
if (claim.status !== "claimed")
|
|
@@ -104,7 +203,8 @@ async function runEffectWorker(options, storage) {
|
|
|
104
203
|
invalidPayloadError = presentValue(safeErrorMessage(error));
|
|
105
204
|
}
|
|
106
205
|
const item = { pending, claimToken, gatewayEffect, invalidPayloadError };
|
|
107
|
-
if (pending.status === OUTBOX_EFFECT_STATUSES.FAILED
|
|
206
|
+
if (pending.status === OUTBOX_EFFECT_STATUSES.FAILED ||
|
|
207
|
+
pending.status === OUTBOX_EFFECT_STATUSES.DELIVERY_UNCERTAIN) {
|
|
108
208
|
recoveryCandidates.push(item);
|
|
109
209
|
continue;
|
|
110
210
|
}
|
|
@@ -121,14 +221,14 @@ async function runEffectWorker(options, storage) {
|
|
|
121
221
|
? options.gateway
|
|
122
222
|
: undefined;
|
|
123
223
|
if (fullGateway === undefined) {
|
|
124
|
-
await rejectUnsupportedGatewayEffects(storage,
|
|
224
|
+
await rejectUnsupportedGatewayEffects(storage, currentFence(), recoveryCandidates, report);
|
|
125
225
|
}
|
|
126
|
-
else {
|
|
127
|
-
await recoverUnknownResults({ ...options, gateway: fullGateway }, storage,
|
|
226
|
+
else if (await refreshDispatchLeases(recoveryCandidates)) {
|
|
227
|
+
await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, currentFence(), recoveryCandidates, report);
|
|
128
228
|
}
|
|
129
229
|
const usable = claimed.filter((item) => isPresent(item.gatewayEffect));
|
|
130
230
|
for (const invalid of claimed.filter((item) => isAbsent(item.gatewayEffect))) {
|
|
131
|
-
await completeFailure(storage,
|
|
231
|
+
await completeFailure(storage, currentFence(), invalid, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, invalid.invalidPayloadError, report);
|
|
132
232
|
}
|
|
133
233
|
// A User_Input reconcile or physical delete is safe only while no unresolved
|
|
134
234
|
// user candidate owns one of its fields. This local gate runs before the
|
|
@@ -142,7 +242,7 @@ async function runEffectWorker(options, storage) {
|
|
|
142
242
|
continue;
|
|
143
243
|
}
|
|
144
244
|
if (await storage.applyEffectResult({
|
|
145
|
-
...
|
|
245
|
+
...currentFence(),
|
|
146
246
|
effectId: item.pending.effect_id,
|
|
147
247
|
claimToken: item.claimToken,
|
|
148
248
|
status: OUTBOX_EFFECT_STATUSES.BLOCKED_CANDIDATE,
|
|
@@ -161,41 +261,82 @@ async function runEffectWorker(options, storage) {
|
|
|
161
261
|
});
|
|
162
262
|
const fastAppendItems = dispatchable.filter(isFastAppendCandidate);
|
|
163
263
|
const regularItems = dispatchable.filter((item) => !isFastAppendCandidate(item));
|
|
164
|
-
|
|
165
|
-
|
|
264
|
+
const fastAppendGroups = chunkFastAppendGroups(groupByFastAppendRequest(fastAppendItems, {
|
|
265
|
+
epoch: currentFence().writerEpoch,
|
|
266
|
+
token: currentFence().fencingToken,
|
|
267
|
+
}), (group) => options.batchController?.limitFor(gatewayRouteKey(group.request)) ?? GATEWAY_EFFECT_BATCH_LIMIT);
|
|
268
|
+
for (const group of fastAppendGroups) {
|
|
269
|
+
if (!(await refreshDispatchLeases(group.items)))
|
|
270
|
+
continue;
|
|
271
|
+
await dispatchFastAppendGroup(options, storage, currentFence(), group, report, fullGateway, () => refreshDispatchLeases(group.items));
|
|
166
272
|
}
|
|
167
273
|
if (fullGateway === undefined) {
|
|
168
|
-
await rejectUnsupportedGatewayEffects(storage,
|
|
274
|
+
await rejectUnsupportedGatewayEffects(storage, currentFence(), regularItems, report);
|
|
169
275
|
}
|
|
170
276
|
else {
|
|
171
|
-
|
|
277
|
+
// Chunk each physical route to the Apps Script bounded effect batch so one
|
|
278
|
+
// applyEffects call returns a complete result set. An oversized configured
|
|
279
|
+
// worker limit (maxEffects) would otherwise send more effects than the
|
|
280
|
+
// gateway acknowledges per call, producing hasMore partial prefixes and the
|
|
281
|
+
// deferred/requeue churn they cause on every pass.
|
|
282
|
+
const regularGroups = chunkGatewayEffectGroups(groupByGatewayRequest(regularItems, {
|
|
283
|
+
epoch: currentFence().writerEpoch,
|
|
284
|
+
token: currentFence().fencingToken,
|
|
285
|
+
}), (group) => options.batchController?.limitFor(gatewayRouteKey(group.request)) ?? GATEWAY_EFFECT_BATCH_LIMIT);
|
|
286
|
+
for (const group of regularGroups) {
|
|
287
|
+
if (!(await refreshDispatchLeases(group.items)))
|
|
288
|
+
continue;
|
|
172
289
|
const deferredEffectIds = new Set();
|
|
173
290
|
let response;
|
|
174
291
|
const regularOperationCounts = countsForItems(group.items);
|
|
175
292
|
const regularOperationKinds = operationKindsForCounts(regularOperationCounts);
|
|
176
293
|
const gatewayStartedAt = Date.now();
|
|
294
|
+
const routeKey = gatewayRouteKey(group.request);
|
|
295
|
+
const batchLimit = options.batchController?.beginDispatch(routeKey, gatewayStartedAt) ?? GATEWAY_EFFECT_BATCH_LIMIT;
|
|
177
296
|
try {
|
|
178
297
|
response = await fullGateway.applyEffects(group.request);
|
|
179
298
|
}
|
|
180
|
-
catch {
|
|
299
|
+
catch (error) {
|
|
300
|
+
const outcome = classifyTransportOutcome(error);
|
|
301
|
+
options.batchController?.observe(routeKey, {
|
|
302
|
+
durationMs: Date.now() - gatewayStartedAt,
|
|
303
|
+
responseSucceeded: false,
|
|
304
|
+
responseLoss: outcome.kind === TRANSPORT_OUTCOME_KINDS.DELIVERY_UNCERTAIN,
|
|
305
|
+
});
|
|
306
|
+
const failedDurationMs = Date.now() - gatewayStartedAt;
|
|
181
307
|
emitWorkerTiming(options, {
|
|
182
308
|
scope: SYNC_TIMING_SCOPES.WORKER,
|
|
183
309
|
phase: "regular_gateway_dispatch",
|
|
184
|
-
durationMs:
|
|
310
|
+
durationMs: failedDurationMs,
|
|
185
311
|
operationKinds: regularOperationKinds,
|
|
186
312
|
operationCounts: regularOperationCounts,
|
|
313
|
+
routeKey,
|
|
314
|
+
batchLimit,
|
|
315
|
+
responseSucceeded: false,
|
|
187
316
|
});
|
|
188
|
-
// Remote side may have written the effect before
|
|
189
|
-
|
|
317
|
+
// Remote side may have written the effect before an uncertain
|
|
318
|
+
// transport failure. Explicit remote failures skip recovery because
|
|
319
|
+
// the Gateway already proved that the operation was rejected.
|
|
320
|
+
const resultFence = currentFence();
|
|
321
|
+
await handleGatewayDispatchError(options, storage, resultFence, group.items, report, outcome, fullGateway, () => refreshDispatchLeases(group.items));
|
|
190
322
|
continue;
|
|
191
323
|
}
|
|
324
|
+
const regularGatewayDurationMs = Date.now() - gatewayStartedAt;
|
|
325
|
+
options.batchController?.observe(routeKey, {
|
|
326
|
+
durationMs: regularGatewayDurationMs,
|
|
327
|
+
responseSucceeded: response.results.length === group.items.length && !response.hasMore,
|
|
328
|
+
responseLoss: response.results.length !== group.items.length || response.hasMore,
|
|
329
|
+
});
|
|
192
330
|
emitGatewayTiming(options, response.timing);
|
|
193
331
|
emitWorkerTiming(options, {
|
|
194
332
|
scope: SYNC_TIMING_SCOPES.WORKER,
|
|
195
333
|
phase: "regular_gateway_dispatch",
|
|
196
|
-
durationMs:
|
|
334
|
+
durationMs: regularGatewayDurationMs,
|
|
197
335
|
operationKinds: regularOperationKinds,
|
|
198
336
|
operationCounts: regularOperationCounts,
|
|
337
|
+
routeKey,
|
|
338
|
+
batchLimit,
|
|
339
|
+
responseSucceeded: response.results.length === group.items.length && !response.hasMore,
|
|
199
340
|
});
|
|
200
341
|
const resultPersistenceStartedAt = Date.now();
|
|
201
342
|
const byEffectId = new Map(response.results.map((result) => [result.effectId, result]));
|
|
@@ -203,7 +344,7 @@ async function runEffectWorker(options, storage) {
|
|
|
203
344
|
const result = lookupResult(byEffectId.get(item.pending.effect_id));
|
|
204
345
|
if (result.kind === LOOKUP_RESULT_KINDS.NOT_FOUND && response.hasMore) {
|
|
205
346
|
if (await storage.releaseUnprocessedEffect({
|
|
206
|
-
...
|
|
347
|
+
...currentFence(),
|
|
207
348
|
effectId: item.pending.effect_id,
|
|
208
349
|
claimToken: item.claimToken,
|
|
209
350
|
})) {
|
|
@@ -236,9 +377,11 @@ async function runEffectWorker(options, storage) {
|
|
|
236
377
|
recoveryItems.push(item);
|
|
237
378
|
continue;
|
|
238
379
|
}
|
|
239
|
-
await completeGatewayResult(options, storage,
|
|
380
|
+
await completeGatewayResult(options, storage, currentFence(), item, result.value, report);
|
|
381
|
+
}
|
|
382
|
+
if (await refreshDispatchLeases(recoveryItems)) {
|
|
383
|
+
await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, currentFence(), recoveryItems, report);
|
|
240
384
|
}
|
|
241
|
-
await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, fence, recoveryItems, report);
|
|
242
385
|
emitWorkerTiming(options, {
|
|
243
386
|
scope: SYNC_TIMING_SCOPES.WORKER,
|
|
244
387
|
phase: "regular_result_persistence",
|
|
@@ -261,8 +404,14 @@ function createAdapterEffectWorkerStorage(storage) {
|
|
|
261
404
|
return {
|
|
262
405
|
claimWriterLease: (options) => claimWriterLeaseWithAdapter(storage, options),
|
|
263
406
|
recoverExpiredLeases: (fence) => recoverExpiredLeasesWithAdapter(storage, fence),
|
|
264
|
-
listReadyEffects: (limit) => listReadyEffectsWithAdapter(storage, limit),
|
|
407
|
+
listReadyEffects: (limit, now) => listReadyEffectsWithAdapter(storage, limit, now),
|
|
265
408
|
claimEffect: (options) => claimEffectWithAdapter(storage, options),
|
|
409
|
+
ensureSpreadsheetAuthority: async (options) => {
|
|
410
|
+
const result = await ensureSpreadsheetAuthorityWithAdapter(storage, options);
|
|
411
|
+
return result.kind === "claimed";
|
|
412
|
+
},
|
|
413
|
+
markDeliveryUncertain: (options) => markDeliveryUncertainWithAdapter(storage, options),
|
|
414
|
+
renewEffectLease: (options) => renewEffectLeaseWithAdapter(storage, options),
|
|
266
415
|
applyEffectResult: (options) => applyEffectResultWithAdapter(storage, options),
|
|
267
416
|
releaseUnprocessedEffect: (options) => releaseUnprocessedEffectWithAdapter(storage, options),
|
|
268
417
|
retryClaimedEffect: (options) => retryClaimedEffectWithAdapter(storage, options),
|
|
@@ -336,11 +485,21 @@ function validateOptions(options) {
|
|
|
336
485
|
for (const [name, value] of [
|
|
337
486
|
["writerLeaseDurationMs", options.writerLeaseDurationMs],
|
|
338
487
|
["effectLeaseDurationMs", options.effectLeaseDurationMs],
|
|
488
|
+
["gatewayTimeoutMs", options.gatewayTimeoutMs],
|
|
339
489
|
]) {
|
|
340
490
|
if (value !== undefined &&
|
|
341
491
|
(!Number.isSafeInteger(value) || value < POSITIVE_SAFE_INTEGER_MINIMUM)) {
|
|
342
492
|
throwWorkerError(name + " must be a positive safe integer");
|
|
343
493
|
}
|
|
344
494
|
}
|
|
495
|
+
const writerLeaseDuration = options.writerLeaseDurationMs ?? DEFAULT_WRITER_LEASE_DURATION_MS;
|
|
496
|
+
const effectLeaseDuration = options.effectLeaseDurationMs ?? DEFAULT_EFFECT_LEASE_DURATION_MS;
|
|
497
|
+
if (writerLeaseDuration <= effectLeaseDuration) {
|
|
498
|
+
throwWorkerError("writerLeaseDurationMs must exceed effectLeaseDurationMs");
|
|
499
|
+
}
|
|
500
|
+
if (options.gatewayTimeoutMs !== undefined &&
|
|
501
|
+
effectLeaseDuration <= options.gatewayTimeoutMs + EFFECT_LEASE_GATEWAY_HEADROOM_MS) {
|
|
502
|
+
throwWorkerError("effectLeaseDurationMs must exceed gatewayTimeoutMs by 30 seconds");
|
|
503
|
+
}
|
|
345
504
|
}
|
|
346
505
|
//# sourceMappingURL=SyncEffectWorker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorker.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SyncEffectWorker.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
/** Constants and durable status contracts shared by the effect worker modules. */
|
|
2
2
|
export declare const DEFAULT_WORKER_ROLE = "sync-effect-worker";
|
|
3
|
-
|
|
4
|
-
export declare const
|
|
3
|
+
/** Outbound writer lease must outlive the longest remote effect request. */
|
|
4
|
+
export declare const DEFAULT_WRITER_LEASE_DURATION_MS = 180000;
|
|
5
|
+
/** Minimum headroom between the remote timeout and the effect lease. */
|
|
6
|
+
export declare const EFFECT_LEASE_GATEWAY_HEADROOM_MS = 30000;
|
|
7
|
+
/** Must exceed the 60-second Apps Script transport timeout plus recovery margin. */
|
|
8
|
+
export declare const DEFAULT_EFFECT_LEASE_DURATION_MS = 120000;
|
|
9
|
+
/**
|
|
10
|
+
* Maximum effects one Apps Script `applyEffects` call will acknowledge.
|
|
11
|
+
*
|
|
12
|
+
* The deployed gateway caps a single bounded effect batch (see `MAX_EFFECTS`
|
|
13
|
+
* in effectOperationScript.ts). Chunking each physical route's dispatch to
|
|
14
|
+
* this limit keeps every request inside that batch, so an oversized configured
|
|
15
|
+
* worker limit (`maxEffects`) does not turn one route into repeated partial
|
|
16
|
+
* (`hasMore`) responses and the deferred/requeue churn they cause.
|
|
17
|
+
*/
|
|
18
|
+
export declare const GATEWAY_EFFECT_BATCH_LIMIT = 20;
|
|
19
|
+
/**
|
|
20
|
+
* Maximum number of effects leased before dispatch starts. Selection may use a
|
|
21
|
+
* larger SQLite upper bound, but a worker pass must not lease an unbounded
|
|
22
|
+
* backlog while a remote batch is in flight.
|
|
23
|
+
*/
|
|
24
|
+
export declare const MAX_IN_FLIGHT_EFFECTS = 20;
|
|
5
25
|
export declare const SYNC_EFFECT_KINDS: {
|
|
6
26
|
readonly SYSTEM_PROJECTION: "system_projection";
|
|
7
27
|
readonly CANDIDATE_RECONCILE: "candidate_reconcile";
|
|
@@ -17,6 +37,7 @@ export declare const EFFECT_TARGET_KINDS: {
|
|
|
17
37
|
readonly CONFLICT: "conflict";
|
|
18
38
|
};
|
|
19
39
|
export declare const OUTBOX_EFFECT_STATUSES: {
|
|
40
|
+
readonly DELIVERY_UNCERTAIN: "delivery_uncertain";
|
|
20
41
|
readonly FAILED: "failed";
|
|
21
42
|
readonly APPLIED: "applied";
|
|
22
43
|
readonly BLOCKED_CANDIDATE: "blocked_candidate";
|
|
@@ -30,7 +51,9 @@ export declare const WORKER_ERROR_CODES: {
|
|
|
30
51
|
readonly CANDIDATE_GUARD_MISMATCH: "candidate_guard_mismatch";
|
|
31
52
|
readonly VISIBLE_GUARD_MISMATCH: "visible_guard_mismatch";
|
|
32
53
|
readonly GATEWAY_SCHEMA_ERROR: "gateway_schema_error";
|
|
54
|
+
readonly GATEWAY_REMOTE_ERROR: "gateway_remote_error";
|
|
33
55
|
readonly GATEWAY_RETRYABLE_ERROR: "gateway_retryable_error";
|
|
56
|
+
readonly DELIVERY_UNCERTAIN_REQUIRES_PROBE: "delivery_uncertain_requires_probe";
|
|
34
57
|
readonly POSTCONDITION_READ_FAILED: "postcondition_read_failed";
|
|
35
58
|
readonly POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE: "postcondition_applied_without_visible_state";
|
|
36
59
|
readonly POSTCONDITION_UNAVAILABLE: "postcondition_unavailable";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorkerConstants.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAUlF,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AACxD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,gCAAgC,
|
|
1
|
+
{"version":3,"file":"SyncEffectWorkerConstants.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAUlF,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AACxD,4EAA4E;AAC5E,eAAO,MAAM,gCAAgC,SAAU,CAAC;AACxD,wEAAwE;AACxE,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,oFAAoF;AACpF,eAAO,MAAM,gCAAgC,SAAU,CAAC;AAExD;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAA6B,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;CAA8D,CAAC;AAE7F,eAAO,MAAM,mBAAmB;;;;;CAA2E,CAAC;AAE5G,eAAO,MAAM,sBAAsB;;;;;;;CAOc,CAAC;AAElD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;CAqBrB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -2,11 +2,32 @@
|
|
|
2
2
|
import { EFFECT_KINDS as CANONICAL_EFFECT_KINDS, EFFECT_STATUSES as CANONICAL_EFFECT_STATUSES, EFFECT_TARGET_KINDS as CANONICAL_EFFECT_TARGET_KINDS, } from "../../../../domain/model/constants.js";
|
|
3
3
|
import { SYNC_EFFECT_RECOVERY_ERROR_CODES } from "../../../../infrastructure/storage/sync/outbound/effectOutbox.js";
|
|
4
4
|
export const DEFAULT_WORKER_ROLE = "sync-effect-worker";
|
|
5
|
-
|
|
6
|
-
export const
|
|
5
|
+
/** Outbound writer lease must outlive the longest remote effect request. */
|
|
6
|
+
export const DEFAULT_WRITER_LEASE_DURATION_MS = 180_000;
|
|
7
|
+
/** Minimum headroom between the remote timeout and the effect lease. */
|
|
8
|
+
export const EFFECT_LEASE_GATEWAY_HEADROOM_MS = 30_000;
|
|
9
|
+
/** Must exceed the 60-second Apps Script transport timeout plus recovery margin. */
|
|
10
|
+
export const DEFAULT_EFFECT_LEASE_DURATION_MS = 120_000;
|
|
11
|
+
/**
|
|
12
|
+
* Maximum effects one Apps Script `applyEffects` call will acknowledge.
|
|
13
|
+
*
|
|
14
|
+
* The deployed gateway caps a single bounded effect batch (see `MAX_EFFECTS`
|
|
15
|
+
* in effectOperationScript.ts). Chunking each physical route's dispatch to
|
|
16
|
+
* this limit keeps every request inside that batch, so an oversized configured
|
|
17
|
+
* worker limit (`maxEffects`) does not turn one route into repeated partial
|
|
18
|
+
* (`hasMore`) responses and the deferred/requeue churn they cause.
|
|
19
|
+
*/
|
|
20
|
+
export const GATEWAY_EFFECT_BATCH_LIMIT = 20;
|
|
21
|
+
/**
|
|
22
|
+
* Maximum number of effects leased before dispatch starts. Selection may use a
|
|
23
|
+
* larger SQLite upper bound, but a worker pass must not lease an unbounded
|
|
24
|
+
* backlog while a remote batch is in flight.
|
|
25
|
+
*/
|
|
26
|
+
export const MAX_IN_FLIGHT_EFFECTS = GATEWAY_EFFECT_BATCH_LIMIT;
|
|
7
27
|
export const SYNC_EFFECT_KINDS = CANONICAL_EFFECT_KINDS;
|
|
8
28
|
export const EFFECT_TARGET_KINDS = CANONICAL_EFFECT_TARGET_KINDS;
|
|
9
29
|
export const OUTBOX_EFFECT_STATUSES = {
|
|
30
|
+
DELIVERY_UNCERTAIN: CANONICAL_EFFECT_STATUSES.DELIVERY_UNCERTAIN,
|
|
10
31
|
FAILED: CANONICAL_EFFECT_STATUSES.FAILED,
|
|
11
32
|
APPLIED: CANONICAL_EFFECT_STATUSES.APPLIED,
|
|
12
33
|
BLOCKED_CANDIDATE: CANONICAL_EFFECT_STATUSES.BLOCKED_CANDIDATE,
|
|
@@ -20,7 +41,9 @@ export const WORKER_ERROR_CODES = {
|
|
|
20
41
|
CANDIDATE_GUARD_MISMATCH: "candidate_guard_mismatch",
|
|
21
42
|
VISIBLE_GUARD_MISMATCH: "visible_guard_mismatch",
|
|
22
43
|
GATEWAY_SCHEMA_ERROR: "gateway_schema_error",
|
|
44
|
+
GATEWAY_REMOTE_ERROR: "gateway_remote_error",
|
|
23
45
|
GATEWAY_RETRYABLE_ERROR: SYNC_EFFECT_RECOVERY_ERROR_CODES.GATEWAY_RETRYABLE_ERROR,
|
|
46
|
+
DELIVERY_UNCERTAIN_REQUIRES_PROBE: SYNC_EFFECT_RECOVERY_ERROR_CODES.DELIVERY_UNCERTAIN_REQUIRES_PROBE,
|
|
24
47
|
POSTCONDITION_READ_FAILED: SYNC_EFFECT_RECOVERY_ERROR_CODES.POSTCONDITION_READ_FAILED,
|
|
25
48
|
POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE: "postcondition_applied_without_visible_state",
|
|
26
49
|
POSTCONDITION_UNAVAILABLE: SYNC_EFFECT_RECOVERY_ERROR_CODES.POSTCONDITION_UNAVAILABLE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorkerConstants.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,EACL,YAAY,IAAI,sBAAsB,EACtC,eAAe,IAAI,yBAAyB,EAC5C,mBAAmB,IAAI,6BAA6B,GACrD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AAEpH,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SyncEffectWorkerConstants.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,EACL,YAAY,IAAI,sBAAsB,EACtC,eAAe,IAAI,yBAAyB,EAC5C,mBAAmB,IAAI,6BAA6B,GACrD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AAEpH,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CAAC;AACxD,wEAAwE;AACxE,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,oFAAoF;AACpF,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAA2D,CAAC;AAE7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAAwE,CAAC;AAE5G,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,kBAAkB,EAAE,yBAAyB,CAAC,kBAAkB;IAChE,MAAM,EAAE,yBAAyB,CAAC,MAAM;IACxC,OAAO,EAAE,yBAAyB,CAAC,OAAO;IAC1C,iBAAiB,EAAE,yBAAyB,CAAC,iBAAiB;IAC9D,UAAU,EAAE,yBAAyB,CAAC,UAAU;IAChD,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;CACG,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;IACxD,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,gCAAgC,CAAC,uBAAuB;IACjF,iCAAiC,EAC/B,gCAAgC,CAAC,iCAAiC;IACpE,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,2CAA2C,EAAE,6CAA6C;IAC1F,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,qBAAqB,EAAE,uBAAuB;IAC9C,wCAAwC,EACtC,gCAAgC,CAAC,wCAAwC;IAC3E,uCAAuC,EAAE,yCAAyC;IAClF,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;CAChD,CAAC"}
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
/** Fast-append and unsupported-capability dispatch paths for the effect worker. */
|
|
2
2
|
import type { FencingContext } from "../../../../infrastructure/storage/sync/shared/writerLease.js";
|
|
3
|
-
import type { FastAppendRowsRequest } from "../../gateway/syncGateway.js";
|
|
3
|
+
import type { FastAppendRowsRequest, SyncEffectWorkerFullGateway } from "../../gateway/syncGateway.js";
|
|
4
|
+
import { type TransportOutcome } from "../../gateway/transportClassification.js";
|
|
4
5
|
import type { ClaimedEffect, EffectWorkerStorage, MutableReport, SyncEffectWorkerBaseOptions } from "./SyncEffectWorker.js";
|
|
5
6
|
/** Fails regular effects explicitly when the configured gateway is fast-only. */
|
|
6
7
|
export declare function rejectUnsupportedGatewayEffects(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* Handles a failed remote dispatch at the transport boundary.
|
|
9
10
|
*
|
|
10
|
-
* A
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* A thrown batch-level dispatch error is not per-effect rejection evidence for
|
|
12
|
+
* an uncertain transport. Explicit structured remote failures are different:
|
|
13
|
+
* the Gateway has returned a verified rejection, so they close the effects in
|
|
14
|
+
* the terminal failure path rather than entering recovery.
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleGatewayDispatchError(options: SyncEffectWorkerBaseOptions, storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport, outcome: TransportOutcome, fullGateway?: SyncEffectWorkerFullGateway, beforeRecovery?: () => Promise<boolean>, onUncertainWithoutRecovery?: () => Promise<void>): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Dispatches append-only rows through the idempotent Gateway batch operation.
|
|
19
|
+
* A lost response is still returned to recovery; the Gateway receipt batch lets
|
|
20
|
+
* the next attempt classify an already committed write without appending again.
|
|
13
21
|
*/
|
|
14
22
|
export declare function dispatchFastAppendGroup(options: SyncEffectWorkerBaseOptions, storage: EffectWorkerStorage, fence: FencingContext, group: {
|
|
15
23
|
readonly request: FastAppendRowsRequest;
|
|
16
24
|
readonly items: readonly ClaimedEffect[];
|
|
17
|
-
}, report: MutableReport): Promise<void>;
|
|
18
|
-
/** Returns a response-lost fast append to pending for reconciliation-backed retry. */
|
|
25
|
+
}, report: MutableReport, fullGateway?: SyncEffectWorkerFullGateway, beforeRecovery?: () => Promise<boolean>): Promise<void>;
|
|
19
26
|
export declare function requeueFastAppendItems(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
|
|
20
27
|
//# sourceMappingURL=SyncEffectWorkerDispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorkerDispatch.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EACV,qBAAqB,
|
|
1
|
+
{"version":3,"file":"SyncEffectWorkerDispatch.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EACV,qBAAqB,EACrB,2BAA2B,EAE5B,MAAM,8BAA8B,CAAC;AAoBtC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,iFAAiF;AACjF,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,2BAA2B,EACzC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACvC,0BAA0B,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;IACL,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C,EACD,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,2BAA2B,EACzC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CAyIf;AA2CD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAaf"}
|