@ductape/sdk 0.2.9 → 0.2.10
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/dist/api/services/processorApi.service.d.ts +4 -0
- package/dist/api/services/processorApi.service.js +13 -0
- package/dist/api/services/processorApi.service.js.map +1 -1
- package/dist/api/services/productsApi.service.d.ts +7 -0
- package/dist/api/services/productsApi.service.js.map +1 -1
- package/dist/features/feature-executor.js +3 -17
- package/dist/features/feature-executor.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +25 -5
- package/dist/index.js.map +1 -1
- package/dist/logs/logs.service.d.ts +3 -0
- package/dist/logs/logs.service.js +21 -0
- package/dist/logs/logs.service.js.map +1 -1
- package/dist/processor/services/processor.service.d.ts +7 -2
- package/dist/processor/services/processor.service.js +24 -1
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/products/services/products.service.js +2 -2
- package/dist/products/services/products.service.js.map +1 -1
- package/dist/resilience/fallback.service.d.ts +2 -4
- package/dist/resilience/fallback.service.js +56 -65
- package/dist/resilience/fallback.service.js.map +1 -1
- package/dist/resilience/health-status-cache.d.ts +11 -0
- package/dist/resilience/health-status-cache.js +46 -0
- package/dist/resilience/health-status-cache.js.map +1 -0
- package/dist/resilience/healthcheck.service.js +1 -1
- package/dist/resilience/healthcheck.service.js.map +1 -1
- package/dist/resilience/quota.service.d.ts +3 -5
- package/dist/resilience/quota.service.js +82 -62
- package/dist/resilience/quota.service.js.map +1 -1
- package/dist/resilience/resilience.service.js +6 -2
- package/dist/resilience/resilience.service.js.map +1 -1
- package/dist/resilience/types/index.d.ts +8 -0
- package/dist/runtime/resilient-write-queue.d.ts +18 -0
- package/dist/runtime/resilient-write-queue.js +74 -0
- package/dist/runtime/resilient-write-queue.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/productsBuilder.types.d.ts +2 -0
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/package.json +1 -1
|
@@ -24,6 +24,8 @@ export default class LogsService {
|
|
|
24
24
|
private environment;
|
|
25
25
|
private ip_address;
|
|
26
26
|
private language;
|
|
27
|
+
private retryTimer?;
|
|
28
|
+
private retryAttempt;
|
|
27
29
|
constructor({ workspace_id, public_key, user_id, token, product_id, env_type, app_id, workspace_private_key, ip_address, language }: ILoggerInit);
|
|
28
30
|
add(item: ILogData): void;
|
|
29
31
|
fetchLogs(): ILogData[];
|
|
@@ -38,6 +40,7 @@ export default class LogsService {
|
|
|
38
40
|
* Logs API. Failed and unsent entries remain queued for a later flush.
|
|
39
41
|
*/
|
|
40
42
|
publish(): Promise<void>;
|
|
43
|
+
private scheduleRetry;
|
|
41
44
|
fetch(params: LogQueryParams): Promise<any>;
|
|
42
45
|
private getUserAccess;
|
|
43
46
|
}
|
|
@@ -4,6 +4,7 @@ const logsApi_service_1 = require("../api/services/logsApi.service");
|
|
|
4
4
|
const processor_utils_1 = require("../processor/utils/processor.utils");
|
|
5
5
|
class LogsService {
|
|
6
6
|
constructor({ workspace_id, public_key, user_id, token, product_id, env_type, app_id, workspace_private_key, ip_address, language }) {
|
|
7
|
+
this.retryAttempt = 0;
|
|
7
8
|
this.workspace_id = workspace_id;
|
|
8
9
|
this.public_key = public_key;
|
|
9
10
|
this.user_id = user_id;
|
|
@@ -111,6 +112,8 @@ class LogsService {
|
|
|
111
112
|
const maxEntryDataBytes = this.configuredByteLimit('DUCTAPE_LOG_MAX_ENTRY_DATA_BYTES', LogsService.DEFAULT_ENTRY_DATA_BYTES);
|
|
112
113
|
const payload = pending.map((item) => {
|
|
113
114
|
var _a;
|
|
115
|
+
if (item.data_encrypted)
|
|
116
|
+
return item;
|
|
114
117
|
const rawData = typeof item.data === 'string' ? item.data : JSON.stringify((_a = item.data) !== null && _a !== void 0 ? _a : {});
|
|
115
118
|
const dataStr = this.truncateUtf8(rawData, maxEntryDataBytes);
|
|
116
119
|
if (!this.workspace_private_key)
|
|
@@ -147,9 +150,27 @@ class LogsService {
|
|
|
147
150
|
this.eventLogs.unshift(...unsent);
|
|
148
151
|
console.warn(`[Ductape Logs] Flush failed; ${unsent.length} log entries retained for retry. ` +
|
|
149
152
|
'Request details were suppressed.');
|
|
153
|
+
this.scheduleRetry();
|
|
150
154
|
return;
|
|
151
155
|
}
|
|
152
156
|
}
|
|
157
|
+
this.retryAttempt = 0;
|
|
158
|
+
if (this.retryTimer)
|
|
159
|
+
clearTimeout(this.retryTimer);
|
|
160
|
+
this.retryTimer = undefined;
|
|
161
|
+
}
|
|
162
|
+
scheduleRetry() {
|
|
163
|
+
var _a, _b;
|
|
164
|
+
if (this.retryTimer)
|
|
165
|
+
return;
|
|
166
|
+
this.retryAttempt += 1;
|
|
167
|
+
const exponential = Math.min(60000, 500 * (2 ** Math.min(this.retryAttempt, 7)));
|
|
168
|
+
const jitter = Math.floor(Math.random() * Math.max(1, exponential / 4));
|
|
169
|
+
this.retryTimer = setTimeout(() => {
|
|
170
|
+
this.retryTimer = undefined;
|
|
171
|
+
void this.publish();
|
|
172
|
+
}, exponential + jitter);
|
|
173
|
+
(_b = (_a = this.retryTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
153
174
|
}
|
|
154
175
|
async fetch(params) {
|
|
155
176
|
if (!params.component) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.service.js","sourceRoot":"","sources":["../../src/logs/logs.service.ts"],"names":[],"mappings":";;AAAA,qEAAgF;AAChF,wEAA6D;AAY7D,MAAqB,WAAW;
|
|
1
|
+
{"version":3,"file":"logs.service.js","sourceRoot":"","sources":["../../src/logs/logs.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -388,9 +388,9 @@ export default class ProcessorService implements IProcessorService {
|
|
|
388
388
|
runBrokerPublish(data: IStepEvent, additional_logs?: Partial<ILogData>): Promise<{
|
|
389
389
|
published: boolean;
|
|
390
390
|
}>;
|
|
391
|
-
processStorageRequest(data: IStepEvent, input: IStorageRequest, storageEnv: IProductStorageEnvs, additional_logs: Partial<ILogData>, decryptionKey?: string): Promise<{
|
|
391
|
+
processStorageRequest(data: IStepEvent, input: IStorageRequest, storageEnv: IProductStorageEnvs, additional_logs: Partial<ILogData>, decryptionKey?: string): Promise<IProcessingFailure | {
|
|
392
392
|
url: string;
|
|
393
|
-
}
|
|
393
|
+
}>;
|
|
394
394
|
writeResult(status: LogEventStatus, retryable?: boolean): Promise<void>;
|
|
395
395
|
/**
|
|
396
396
|
* Separate credentials into prefixed (e.g., 'headers:Authorization') and non-prefixed (e.g., 'api_key').
|
|
@@ -461,6 +461,11 @@ export default class ProcessorService implements IProcessorService {
|
|
|
461
461
|
* Fetches the latest healthcheck status for a product/env from Redis cache.
|
|
462
462
|
*/
|
|
463
463
|
getHealthcheckStatusFromCache(productTag: string, envSlug: string): Promise<any>;
|
|
464
|
+
/**
|
|
465
|
+
* Opens the provider circuit immediately after an operation failure. The
|
|
466
|
+
* interval monitor is deliberately the only path that closes it again.
|
|
467
|
+
*/
|
|
468
|
+
markHealthcheckUnavailable(productTag: string, healthcheckTag: string, envSlug: string, reason?: string): Promise<void>;
|
|
464
469
|
/**
|
|
465
470
|
* Updates the healthcheck in the remote DB for a product with all envs' results.
|
|
466
471
|
*/
|
|
@@ -49,6 +49,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
49
49
|
var _a, _b;
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
51
|
const products_service_1 = __importDefault(require("../../products/services/products.service"));
|
|
52
|
+
const health_status_cache_1 = require("../../resilience/health-status-cache");
|
|
52
53
|
const types_1 = require("../../types");
|
|
53
54
|
const logs_service_1 = __importDefault(require("../../logs/logs.service"));
|
|
54
55
|
const cloud_runtime_util_1 = require("../../cloud/cloud-runtime.util");
|
|
@@ -4684,7 +4685,7 @@ class ProcessorService {
|
|
|
4684
4685
|
async writeResult(status, retryable = true) {
|
|
4685
4686
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
4686
4687
|
const envSlug = (_f = (_d = (_b = (_a = this.processEnv) === null || _a === void 0 ? void 0 : _a.slug) !== null && _b !== void 0 ? _b : (_c = this.input) === null || _c === void 0 ? void 0 : _c.env) !== null && _d !== void 0 ? _d : (_e = this.baseLogs) === null || _e === void 0 ? void 0 : _e.env) !== null && _f !== void 0 ? _f : '';
|
|
4687
|
-
|
|
4688
|
+
this.processorApiService.enqueueResult(Object.assign(Object.assign({ status, component: this.component, start: this.start, end: this.end, retryable, result: (0, processor_utils_1.encrypt)(JSON.stringify(this.processingOutput), this.productBuilderService.fetchPrivateKey()), process_id: this.process_id, product_id: this.productId, product_tag: this.productTag ||
|
|
4688
4689
|
((_g = this.input) === null || _g === void 0 ? void 0 : _g.product) ||
|
|
4689
4690
|
((_h = this.baseLogs) === null || _h === void 0 ? void 0 : _h.product_tag), workspace_id: this.workspace_id }, ((_j = this.featureExecutionContext) !== null && _j !== void 0 ? _j : {})), { env: envSlug, input: (0, processor_utils_1.encrypt)(JSON.stringify(this.input), this.productBuilderService.fetchPrivateKey()) }), Object.assign(Object.assign({}, this.getUserAccess()), { access_key: this.accessKey }));
|
|
4690
4691
|
}
|
|
@@ -5426,6 +5427,15 @@ class ProcessorService {
|
|
|
5426
5427
|
* Writes the healthcheck result to Redis cache for fast status retrieval.
|
|
5427
5428
|
*/
|
|
5428
5429
|
async writeHealthcheckResultToCache(data, result) {
|
|
5430
|
+
var _a, _b, _c;
|
|
5431
|
+
if ((data === null || data === void 0 ? void 0 : data.product) && (data === null || data === void 0 ? void 0 : data.healthcheck) && (data === null || data === void 0 ? void 0 : data.env)) {
|
|
5432
|
+
(0, health_status_cache_1.setRuntimeHealthState)(this.workspace_id, data.product, data.env, data.healthcheck, {
|
|
5433
|
+
status: (result === null || result === void 0 ? void 0 : result.status) === 'available' || (result === null || result === void 0 ? void 0 : result.status) === 'unavailable' ? result.status : 'unknown',
|
|
5434
|
+
lastChecked: (_b = (_a = result === null || result === void 0 ? void 0 : result.checkedAt) !== null && _a !== void 0 ? _a : result === null || result === void 0 ? void 0 : result.lastChecked) !== null && _b !== void 0 ? _b : new Date().toISOString(),
|
|
5435
|
+
latency: Number.isFinite(Number(result === null || result === void 0 ? void 0 : result.latency)) ? Number(result.latency) : undefined,
|
|
5436
|
+
statusSource: (_c = result === null || result === void 0 ? void 0 : result.status_source) !== null && _c !== void 0 ? _c : result === null || result === void 0 ? void 0 : result.statusSource,
|
|
5437
|
+
});
|
|
5438
|
+
}
|
|
5429
5439
|
if (!this.redisClient)
|
|
5430
5440
|
return;
|
|
5431
5441
|
const key = `healthcheck:${data.product}:${data.healthcheck}:${data.env}`;
|
|
@@ -5443,6 +5453,19 @@ class ProcessorService {
|
|
|
5443
5453
|
const cached = await this.redisClient.get(key);
|
|
5444
5454
|
return cached ? JSON.parse(cached) : null;
|
|
5445
5455
|
}
|
|
5456
|
+
/**
|
|
5457
|
+
* Opens the provider circuit immediately after an operation failure. The
|
|
5458
|
+
* interval monitor is deliberately the only path that closes it again.
|
|
5459
|
+
*/
|
|
5460
|
+
async markHealthcheckUnavailable(productTag, healthcheckTag, envSlug, reason) {
|
|
5461
|
+
const checkedAt = new Date().toISOString();
|
|
5462
|
+
const result = Object.assign({ status: 'unavailable', checkedAt, latency: 0, status_source: 'runtime_failure' }, (reason ? { reason: reason.slice(0, 500) } : {}));
|
|
5463
|
+
void this.writeHealthcheckResultToCache({ product: productTag, healthcheck: healthcheckTag, env: envSlug }, result).catch(() => undefined);
|
|
5464
|
+
void this.updateHealthcheckOnProcessor(productTag, [{
|
|
5465
|
+
tag: healthcheckTag,
|
|
5466
|
+
environments: [Object.assign({ slug: envSlug }, result)],
|
|
5467
|
+
}]).catch(() => undefined);
|
|
5468
|
+
}
|
|
5446
5469
|
/**
|
|
5447
5470
|
* Updates the healthcheck in the remote DB for a product with all envs' results.
|
|
5448
5471
|
*/
|