@exabugs/dynamodb-client 1.7.0 → 1.8.0
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/CHANGELOG.md +12 -0
- package/dist/scripts/operations/bulkRecordRepair.js +2 -1
- package/dist/scripts/operations/bulkRecordRepair.js.map +1 -1
- package/dist/server/handler.cjs +51 -31
- package/dist/server/handler.cjs.map +2 -2
- package/dist/server/media-handler.cjs +2 -2
- package/dist/server/media-process-handler-dlq.cjs +50 -30
- package/dist/server/media-process-handler-dlq.cjs.map +2 -2
- package/dist/server/media-process-handler.cjs +50 -30
- package/dist/server/media-process-handler.cjs.map +2 -2
- package/dist/server/operations/find/idQuery.d.ts.map +1 -1
- package/dist/server/operations/find/idQuery.js +57 -39
- package/dist/server/operations/find/idQuery.js.map +1 -1
- package/dist/sharp-layer.zip +0 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// @exabugs/dynamodb-client v1.
|
|
2
|
-
// Built: 2026-10-
|
|
1
|
+
// @exabugs/dynamodb-client v1.8.0
|
|
2
|
+
// Built: 2026-10-11T23:03:45.636Z
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -58678,7 +58678,14 @@ async function executeInQuery(resource, targetIds, sort, requestId) {
|
|
|
58678
58678
|
}
|
|
58679
58679
|
async function executeAllRecordsQuery(resource, sort, perPage, nextToken, parsedFilters, requestId) {
|
|
58680
58680
|
if (parsedFilters.length > 0) {
|
|
58681
|
-
return executeAllRecordsQueryFullScan(
|
|
58681
|
+
return executeAllRecordsQueryFullScan(
|
|
58682
|
+
resource,
|
|
58683
|
+
sort,
|
|
58684
|
+
perPage,
|
|
58685
|
+
nextToken,
|
|
58686
|
+
parsedFilters,
|
|
58687
|
+
requestId
|
|
58688
|
+
);
|
|
58682
58689
|
}
|
|
58683
58690
|
const dbClient2 = getDBClient();
|
|
58684
58691
|
const tableName = getTableName();
|
|
@@ -58750,19 +58757,20 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
58750
58757
|
const dbClient2 = getDBClient();
|
|
58751
58758
|
const tableName = getTableName();
|
|
58752
58759
|
const costTracker = new CostTracker();
|
|
58753
|
-
const offset = nextToken ? decodeOffsetToken(nextToken) ?? 0 : 0;
|
|
58754
|
-
logger4.debug("Executing full scan query (ID sort)", {
|
|
58755
|
-
requestId,
|
|
58756
|
-
resource,
|
|
58757
|
-
offset
|
|
58758
|
-
});
|
|
58759
|
-
const allRecords = [];
|
|
58760
58760
|
let exclusiveStartKey;
|
|
58761
|
-
|
|
58762
|
-
|
|
58761
|
+
if (nextToken) {
|
|
58762
|
+
const decoded = decodeNextToken(nextToken);
|
|
58763
|
+
exclusiveStartKey = { PK: decoded.PK, SK: decoded.SK };
|
|
58764
|
+
}
|
|
58765
|
+
const page = [];
|
|
58766
|
+
let lastReturned;
|
|
58767
|
+
let hasNextPage = false;
|
|
58768
|
+
let scanned = 0;
|
|
58763
58769
|
let iterations = 0;
|
|
58764
|
-
|
|
58765
|
-
|
|
58770
|
+
let previousKeySignature;
|
|
58771
|
+
let chunkSize = SCAN_CHUNK_INITIAL;
|
|
58772
|
+
scan: while (true) {
|
|
58773
|
+
if (++iterations > SCAN_MAX_ITERATIONS) {
|
|
58766
58774
|
logger4.error("executeAllRecordsQueryFullScan: \u6700\u5927\u53CD\u5FA9\u56DE\u6570\u3092\u8D85\u904E\u3057\u305F\u305F\u3081\u4E2D\u65AD", {
|
|
58767
58775
|
requestId,
|
|
58768
58776
|
resource,
|
|
@@ -58780,8 +58788,7 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
58780
58788
|
":skPrefix": "id#"
|
|
58781
58789
|
},
|
|
58782
58790
|
ScanIndexForward: sort.order === "ASC",
|
|
58783
|
-
Limit:
|
|
58784
|
-
// 大きめの Limit でループ回数を最小化
|
|
58791
|
+
Limit: chunkSize,
|
|
58785
58792
|
ExclusiveStartKey: exclusiveStartKey,
|
|
58786
58793
|
ConsistentRead: true,
|
|
58787
58794
|
ReturnConsumedCapacity: "TOTAL"
|
|
@@ -58790,10 +58797,24 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
58790
58797
|
"Query"
|
|
58791
58798
|
);
|
|
58792
58799
|
costTracker.add(queryResult.ConsumedCapacity);
|
|
58793
|
-
|
|
58800
|
+
for (const row of queryResult.Items || []) {
|
|
58801
|
+
scanned++;
|
|
58802
|
+
if (!matchesAllFilters(extractCleanRecord(row), parsedFilters)) {
|
|
58803
|
+
continue;
|
|
58804
|
+
}
|
|
58805
|
+
if (page.length >= perPage) {
|
|
58806
|
+
hasNextPage = true;
|
|
58807
|
+
break scan;
|
|
58808
|
+
}
|
|
58809
|
+
page.push(extractCleanRecord(row));
|
|
58810
|
+
lastReturned = { PK: row.PK, SK: row.SK };
|
|
58811
|
+
}
|
|
58794
58812
|
const nextKey = queryResult.LastEvaluatedKey;
|
|
58795
|
-
|
|
58796
|
-
|
|
58813
|
+
if (!nextKey) {
|
|
58814
|
+
break;
|
|
58815
|
+
}
|
|
58816
|
+
const nextKeySignature = `${nextKey.PK}#${nextKey.SK}`;
|
|
58817
|
+
if (nextKeySignature === previousKeySignature) {
|
|
58797
58818
|
logger4.error("executeAllRecordsQueryFullScan: \u540C\u4E00\u306ELastEvaluatedKey\u304C\u8FD4\u5374\u3055\u308C\u305F\u305F\u3081\u4E2D\u65AD", {
|
|
58798
58819
|
requestId,
|
|
58799
58820
|
resource,
|
|
@@ -58803,28 +58824,24 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
58803
58824
|
}
|
|
58804
58825
|
previousKeySignature = nextKeySignature;
|
|
58805
58826
|
exclusiveStartKey = nextKey;
|
|
58806
|
-
|
|
58807
|
-
|
|
58808
|
-
|
|
58809
|
-
|
|
58810
|
-
const hasNextPage = offset + perPage < items.length;
|
|
58811
|
-
const nextTokenValue = hasNextPage ? encodeOffsetToken(offset + perPage) : void 0;
|
|
58812
|
-
logger4.info("ID full scan query succeeded", {
|
|
58827
|
+
chunkSize = Math.min(chunkSize * 2, SCAN_CHUNK_MAX);
|
|
58828
|
+
}
|
|
58829
|
+
const nextTokenValue = hasNextPage && lastReturned ? encodeNextToken(lastReturned.PK, lastReturned.SK) : void 0;
|
|
58830
|
+
logger4.info("ID filtered scan query succeeded", {
|
|
58813
58831
|
requestId,
|
|
58814
58832
|
resource,
|
|
58815
|
-
|
|
58816
|
-
offset,
|
|
58833
|
+
scanned,
|
|
58817
58834
|
returned: page.length,
|
|
58818
58835
|
hasNextPage
|
|
58819
58836
|
});
|
|
58820
58837
|
return {
|
|
58821
58838
|
items: page,
|
|
58822
|
-
pageInfo: { hasNextPage, hasPreviousPage:
|
|
58839
|
+
pageInfo: { hasNextPage, hasPreviousPage: !!nextToken },
|
|
58823
58840
|
...nextTokenValue && { nextToken: nextTokenValue },
|
|
58824
58841
|
consumedCapacity: costTracker.getAggregated()
|
|
58825
58842
|
};
|
|
58826
58843
|
}
|
|
58827
|
-
var import_lib_dynamodb2, logger4;
|
|
58844
|
+
var import_lib_dynamodb2, logger4, SCAN_CHUNK_INITIAL, SCAN_CHUNK_MAX, SCAN_MAX_ITERATIONS;
|
|
58828
58845
|
var init_idQuery = __esm({
|
|
58829
58846
|
"src/server/operations/find/idQuery.ts"() {
|
|
58830
58847
|
"use strict";
|
|
@@ -58842,6 +58859,9 @@ var init_idQuery = __esm({
|
|
|
58842
58859
|
__name(executeSpecificIdQuery, "executeSpecificIdQuery");
|
|
58843
58860
|
__name(executeInQuery, "executeInQuery");
|
|
58844
58861
|
__name(executeAllRecordsQuery, "executeAllRecordsQuery");
|
|
58862
|
+
SCAN_CHUNK_INITIAL = 100;
|
|
58863
|
+
SCAN_CHUNK_MAX = 1e3;
|
|
58864
|
+
SCAN_MAX_ITERATIONS = 1e4;
|
|
58845
58865
|
__name(executeAllRecordsQueryFullScan, "executeAllRecordsQueryFullScan");
|
|
58846
58866
|
}
|
|
58847
58867
|
});
|