@delali/narsil 0.2.4-next.48 → 0.2.4-next.50
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 +2 -2
- package/dist/adapters/indexeddb.mjs +15 -10
- package/dist/{options-BC68VPoE.d.ts → capabilities-JrVQOwi4.d.ts} +55 -47
- package/dist/{chunk-BFIH7OV5.mjs → chunk-2GWVQWGA.mjs} +3 -1
- package/dist/chunk-AV4IJKD2.mjs +35 -0
- package/dist/{chunk-EV45L35L.mjs → chunk-BEIK3EOZ.mjs} +845 -2407
- package/dist/chunk-CBLS46IE.mjs +10 -0
- package/dist/chunk-CMVG2UEF.mjs +2038 -0
- package/dist/chunk-CV5H7XL7.mjs +876 -0
- package/dist/{chunk-JQUL2T6I.mjs → chunk-GCM3JFVA.mjs} +1 -2
- package/dist/{chunk-XWICBGYT.mjs → chunk-MHE7YWAU.mjs} +3 -5
- package/dist/{chunk-UZTT2BKQ.mjs → chunk-ND34I3SV.mjs} +1202 -1881
- package/dist/{chunk-PM52SMBT.mjs → chunk-OOSIDHA3.mjs} +2 -1
- package/dist/chunk-ORBLD3EL.mjs +6 -0
- package/dist/chunk-PIWKZPP7.mjs +64 -0
- package/dist/{chunk-4COAUBLJ.mjs → chunk-PMBHH44R.mjs} +124 -8
- package/dist/chunk-RP23PWMV.mjs +11 -0
- package/dist/chunk-UNEEFTEU.mjs +7 -0
- package/dist/{chunk-WTONLDU3.mjs → chunk-WYJXSLER.mjs} +9 -19
- package/dist/{chunk-DFZDV5FV.mjs → chunk-X6YZO4MQ.mjs} +19 -15
- package/dist/chunk-XE6XR2OE.mjs +23 -0
- package/dist/chunk-YEO6G2NG.mjs +6 -0
- package/dist/chunk-ZHUQKZBE.mjs +1292 -0
- package/dist/{client-C5BkUqB8.d.ts → client-CBOVHdjp.d.ts} +31 -7
- package/dist/client.d.ts +7 -7
- package/dist/client.mjs +250 -232
- package/dist/{config-B-ZI-ft5.d.ts → config-Czh2YNDi.d.ts} +2 -2
- package/dist/{config-BZRExglL.d.ts → config-OON7IJ_B.d.ts} +50 -13
- package/dist/direct-executor-OREXU72C.mjs +12 -0
- package/dist/distribution/coordinator/etcd.d.ts +2 -2
- package/dist/distribution/coordinator/etcd.mjs +2 -3
- package/dist/distribution/coordinator/in-memory.d.ts +2 -2
- package/dist/distribution/coordinator/in-memory.mjs +2 -2
- package/dist/distribution/transport/grpc.mjs +7 -9
- package/dist/distribution/transport/in-memory.mjs +2 -1
- package/dist/distribution/transport/tcp.mjs +3 -2
- package/dist/distribution.d.ts +8 -8
- package/dist/distribution.mjs +142 -101
- package/dist/embeddings/openai.mjs +5 -3
- package/dist/{engine-Cjr1uBLa.d.ts → engine-9PtFY50q.d.ts} +125 -69
- package/dist/index.browser.mjs +4689 -3330
- package/dist/index.d.ts +7 -7
- package/dist/index.mjs +14 -8
- package/dist/invalidation/broadcast-channel.mjs +2 -1
- package/dist/invalidation/filesystem.mjs +3 -4
- package/dist/{search-DDHjfXhJ.d.ts → memory-Bzd5xcEW.d.ts} +89 -63
- package/dist/persistence/durability/checkpoint-worker.d.ts +1 -1
- package/dist/persistence/durability/checkpoint-worker.mjs +14 -8
- package/dist/react.d.ts +4 -4
- package/dist/react.mjs +7 -5
- package/dist/{schema-B7juWg8Q.d.ts → schema-BqRx9t4E.d.ts} +22 -3
- package/dist/server.d.ts +47 -42
- package/dist/server.mjs +338 -821
- package/dist/thread-PZLEO6JL.mjs +310 -0
- package/dist/{types-DsSSjY4d.d.ts → types-DXPxaXPO.d.ts} +1 -1
- package/dist/vector/hnsw-build-worker.mjs +3 -4
- package/dist/vector/search-worker.mjs +4 -123
- package/dist/workers/entry.mjs +47 -3
- package/package.json +5 -1
- package/dist/direct-executor-EOTFGXTO.mjs +0 -8
package/dist/distribution.mjs
CHANGED
|
@@ -1,23 +1,51 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { MAX_MESSAGE_SIZE_BYTES } from './chunk-UNEEFTEU.mjs';
|
|
2
|
+
import { validateIndexName, indexConfigKey, putIndexMetadata, getIndexMetadata } from './chunk-MHE7YWAU.mjs';
|
|
3
|
+
import { createEngineCore, checkHeapAfterRecovery, createNarsilFromCore, runEngineQueryStats, runEngineListDocuments, runEngineSuggest, runEnginePreflight, runEngineQuery, createEngineIndex, applyIndexEntry, applyDeleteEntry, validateEntryBatchPayload, createAckMessage, validateEntryPayload, validateForwardBatchPayload, createForwardBatchResultMessage, createForwardBatchMessage, validateForwardBatchResultPayload, createForwardMessage, validateReplicationEntry, computeEntryChecksum, createEntryMessage, createEntryBatchMessage, createInsyncConfirmMessage, validateAckPayload, createInsyncRemoveMessage, validateInsyncConfirmPayload, createInsyncAddMessage } from './chunk-ND34I3SV.mjs';
|
|
4
|
+
import { now, listBindingOf, queryBindingOf, foldGroupReducer, clampLimit, dedupePinnedEntries } from './chunk-ZHUQKZBE.mjs';
|
|
5
|
+
import { ReplicationMessageTypes, TransportErrorCodes, ClusterMessageTypes, QueryMessageTypes, TransportError } from './chunk-GCM3JFVA.mjs';
|
|
6
|
+
import { MAX_PARTITION_COUNT, MAX_REPLICATION_FACTOR, WIRE_BATCH_BUDGET } from './chunk-PIWKZPP7.mjs';
|
|
7
|
+
import { DEFAULT_SUGGEST_LIMIT, MAX_SUGGEST_LIMIT, MAX_SUGGEST_SCATTER_LIMIT, MAX_INDEX_NAME_LENGTH, MAX_DOC_ID_LENGTH, SUGGEST_OVERSAMPLE_FACTOR, SUGGEST_OVERSAMPLE_PADDING, INDEX_NAME_PATTERN } from './chunk-XE6XR2OE.mjs';
|
|
8
|
+
import { generateId, deserializePayloadV2, createPartitionIndex, getLanguage, FILTER_EXPRESSION_KEYS, FIELD_FILTER_OPERATORS } from './chunk-BEIK3EOZ.mjs';
|
|
9
|
+
import { resolveProjection, clampRowCount, sortSignatureOf, requireMatchingCursor, decodePageCursor, normalizeSort, encodePageCursor, applyProjection, readSortValues, requireWithinResultWindow, fnv1a, mergePartitionStats, MAX_NESTING_DEPTH } from './chunk-CMVG2UEF.mjs';
|
|
10
|
+
import './chunk-AV4IJKD2.mjs';
|
|
11
|
+
import { DEFAULT_PAGE_SIZE, MAX_SORT_FIELDS, MAX_CURSOR_LENGTH, RESULT_WINDOW } from './chunk-CBLS46IE.mjs';
|
|
5
12
|
import './chunk-TGP5M5R7.mjs';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
13
|
+
import './chunk-PMBHH44R.mjs';
|
|
14
|
+
import './chunk-X6YZO4MQ.mjs';
|
|
15
|
+
import './chunk-RP23PWMV.mjs';
|
|
8
16
|
import { crc32 } from './chunk-KMMJMDUA.mjs';
|
|
9
17
|
import './chunk-U2BKYEC7.mjs';
|
|
10
|
-
import { compareCodePoints, toComparableSortValue, compareComparableKeys, compareSortValues } from './chunk-
|
|
11
|
-
import
|
|
18
|
+
import { compareCodePoints, toComparableSortValue, compareComparableKeys, compareSortValues } from './chunk-2GWVQWGA.mjs';
|
|
19
|
+
import './chunk-WYJXSLER.mjs';
|
|
12
20
|
import { ErrorCodes, NarsilError, describeError } from './chunk-P4ELXVJQ.mjs';
|
|
13
21
|
import { encode, decode } from '@msgpack/msgpack';
|
|
14
22
|
|
|
15
|
-
// src/distribution/cluster/
|
|
16
|
-
var
|
|
23
|
+
// src/distribution/cluster/constants.ts
|
|
24
|
+
var LEADERSHIP_IMBALANCE_THRESHOLD = 2;
|
|
25
|
+
var DEFAULT_ESTIMATED_PARTITION_BYTES = 50 * 1024 * 1024;
|
|
26
|
+
var REBALANCE_THRESHOLD = 0.1;
|
|
27
|
+
var BOOTSTRAP_CAS_ATTEMPTS = 5;
|
|
28
|
+
var ALLOCATION_CAS_ATTEMPTS = 5;
|
|
29
|
+
var ALLOCATION_RETRY_DELAY_MS = 1e3;
|
|
30
|
+
var TEARDOWN_CAS_ATTEMPTS = 5;
|
|
31
|
+
var TEARDOWN_RETRY_DELAY_MS = 500;
|
|
32
|
+
var TEARDOWN_RETRY_ROUNDS = 3;
|
|
33
|
+
var RECOVERY_CAS_ATTEMPTS = 5;
|
|
34
|
+
var PARTITION_STORES_TIMEOUT_MS = 5e3;
|
|
17
35
|
var DEFAULT_CONTROLLER_CONFIG = {
|
|
18
36
|
leaseTtlMs: 15e3,
|
|
19
37
|
standbyRetryMs: 5e3
|
|
20
38
|
};
|
|
39
|
+
var DEFAULT_NODE_LIFECYCLE_CONFIG = {
|
|
40
|
+
bootstrapRetryBaseMs: 1e3,
|
|
41
|
+
bootstrapRetryMaxMs: 5e3,
|
|
42
|
+
bootstrapMaxRetries: 10,
|
|
43
|
+
allocationDebounceMs: 250,
|
|
44
|
+
nodeHeartbeatIntervalMs: 1e4
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// src/distribution/cluster/controller/types.ts
|
|
48
|
+
var CONTROLLER_LEASE_KEY = "_narsil/controller";
|
|
21
49
|
|
|
22
50
|
// src/distribution/cluster/controller/election.ts
|
|
23
51
|
function createElectionState() {
|
|
@@ -95,10 +123,6 @@ var balanceDecider = {
|
|
|
95
123
|
}
|
|
96
124
|
};
|
|
97
125
|
|
|
98
|
-
// src/distribution/cluster/allocator/types.ts
|
|
99
|
-
var REBALANCE_THRESHOLD = 0.1;
|
|
100
|
-
var DEFAULT_ESTIMATED_PARTITION_BYTES = 50 * 1024 * 1024;
|
|
101
|
-
|
|
102
126
|
// src/distribution/cluster/allocator/deciders/capacity.ts
|
|
103
127
|
function createCapacityDecider(estimatedPartitionBytes) {
|
|
104
128
|
const bytesPerPartition = DEFAULT_ESTIMATED_PARTITION_BYTES;
|
|
@@ -417,7 +441,6 @@ function holdsLastCopy(assignment, nodeId) {
|
|
|
417
441
|
}
|
|
418
442
|
|
|
419
443
|
// src/distribution/cluster/allocator/leadership.ts
|
|
420
|
-
var LEADERSHIP_IMBALANCE_THRESHOLD = 2;
|
|
421
444
|
function loadOf(nodeId, counts, shares) {
|
|
422
445
|
const share = shares.get(nodeId);
|
|
423
446
|
return (counts.get(nodeId) ?? 0) / (share === void 0 || share <= 0 ? 1 : share);
|
|
@@ -822,8 +845,6 @@ function createPartitionStoresResultMessage(result, sourceNodeId, requestId) {
|
|
|
822
845
|
}
|
|
823
846
|
|
|
824
847
|
// src/distribution/cluster/controller/event-loop/unassigned-recovery.ts
|
|
825
|
-
var RECOVERY_CAS_ATTEMPTS = 5;
|
|
826
|
-
var PARTITION_STORES_TIMEOUT_MS = 5e3;
|
|
827
848
|
function liveHoldersOfUnassignedPartitions(table, liveNodeIds) {
|
|
828
849
|
const holders = /* @__PURE__ */ new Set();
|
|
829
850
|
for (const assignment of table.assignments.values()) {
|
|
@@ -1026,11 +1047,6 @@ async function recoverUnassignedPartitions(coordinator, transport, indexName, co
|
|
|
1026
1047
|
function holdsDataNode(nodes) {
|
|
1027
1048
|
return nodes.some((node) => node.roles.includes("data"));
|
|
1028
1049
|
}
|
|
1029
|
-
var ALLOCATION_CAS_ATTEMPTS = 5;
|
|
1030
|
-
var ALLOCATION_RETRY_DELAY_MS = 1e3;
|
|
1031
|
-
var TEARDOWN_CAS_ATTEMPTS = 5;
|
|
1032
|
-
var TEARDOWN_RETRY_ROUNDS = 3;
|
|
1033
|
-
var TEARDOWN_RETRY_DELAY_MS = 500;
|
|
1034
1050
|
async function runAllocatorForIndex(coordinator, indexName, nodes, isActive, attempt = 0) {
|
|
1035
1051
|
if (!isActive()) {
|
|
1036
1052
|
return;
|
|
@@ -1226,7 +1242,15 @@ async function handleSchemaEvent(event, coordinator, state, isActive, onError) {
|
|
|
1226
1242
|
await tearDownAllocation(event.indexName, coordinator, state, isActive, 0, onError);
|
|
1227
1243
|
}
|
|
1228
1244
|
}
|
|
1245
|
+
|
|
1246
|
+
// src/distribution/replication/constants.ts
|
|
1247
|
+
var REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES = 40;
|
|
1248
|
+
var DEFAULT_LOG_RETENTION_BYTES = 268435456;
|
|
1229
1249
|
var INSYNC_CAS_ATTEMPTS = 5;
|
|
1250
|
+
var SNAPSHOT_CHUNK_SIZE = 65536;
|
|
1251
|
+
var MAX_SNAPSHOT_SIZE_BYTES = 2 * 1024 * 1024 * 1024;
|
|
1252
|
+
|
|
1253
|
+
// src/distribution/replication/insync.ts
|
|
1230
1254
|
var REFUSE = { outcome: "refuse" };
|
|
1231
1255
|
var ACCEPT = { outcome: "accept" };
|
|
1232
1256
|
async function updateInsyncSet(request, coordinator, decide) {
|
|
@@ -1416,7 +1440,6 @@ async function handleBootstrapCompleteMessage(message, respond, coordinator, con
|
|
|
1416
1440
|
payload: encode(resultPayload)
|
|
1417
1441
|
});
|
|
1418
1442
|
}
|
|
1419
|
-
var BOOTSTRAP_CAS_ATTEMPTS = 5;
|
|
1420
1443
|
async function processBootstrapComplete(payload, coordinator) {
|
|
1421
1444
|
for (let attempt = 0; attempt < BOOTSTRAP_CAS_ATTEMPTS; attempt++) {
|
|
1422
1445
|
const table = await coordinator.getAllocation(payload.indexName);
|
|
@@ -2378,15 +2401,6 @@ async function leaveCluster(config) {
|
|
|
2378
2401
|
await config.coordinator.deregisterNode(config.registration.nodeId);
|
|
2379
2402
|
}
|
|
2380
2403
|
|
|
2381
|
-
// src/distribution/cluster/node-lifecycle/types.ts
|
|
2382
|
-
var DEFAULT_NODE_LIFECYCLE_CONFIG = {
|
|
2383
|
-
bootstrapRetryBaseMs: 1e3,
|
|
2384
|
-
bootstrapRetryMaxMs: 5e3,
|
|
2385
|
-
bootstrapMaxRetries: 10,
|
|
2386
|
-
allocationDebounceMs: 250,
|
|
2387
|
-
nodeHeartbeatIntervalMs: 1e4
|
|
2388
|
-
};
|
|
2389
|
-
|
|
2390
2404
|
// src/distribution/cluster/node-lifecycle/index.ts
|
|
2391
2405
|
function createDataNodeLifecycle(config) {
|
|
2392
2406
|
let status = "stopped";
|
|
@@ -2555,12 +2569,6 @@ async function nodeHasOtherPartitions(indexName, removedPartitionId, deps) {
|
|
|
2555
2569
|
return false;
|
|
2556
2570
|
}
|
|
2557
2571
|
|
|
2558
|
-
// src/distribution/replication/snapshot-constants.ts
|
|
2559
|
-
var SNAPSHOT_CHUNK_SIZE = 65536;
|
|
2560
|
-
var MAX_SNAPSHOT_SIZE_BYTES = 2 * 1024 * 1024 * 1024;
|
|
2561
|
-
var SNAPSHOT_HEADER_SENTINEL_SEQNO = Number.MAX_SAFE_INTEGER;
|
|
2562
|
-
var SNAPSHOT_HEADER_SENTINEL_PARTITION_ID = 4294967295;
|
|
2563
|
-
|
|
2564
2572
|
// src/distribution/replication/snapshot-stream-apply.ts
|
|
2565
2573
|
function fail(state, code, message, details = {}) {
|
|
2566
2574
|
if (state.failure !== null) {
|
|
@@ -2877,9 +2885,34 @@ function toStreamFailure(err, defaultCode, defaultMessage) {
|
|
|
2877
2885
|
};
|
|
2878
2886
|
}
|
|
2879
2887
|
|
|
2880
|
-
// src/distribution/cluster-node/
|
|
2888
|
+
// src/distribution/cluster-node/constants.ts
|
|
2889
|
+
var DEFAULT_PARTITION_COUNT = 5;
|
|
2890
|
+
var DEFAULT_REPLICATION_FACTOR = 1;
|
|
2891
|
+
var DEFAULT_CAPACITY = {
|
|
2892
|
+
memoryBytes: 8e9,
|
|
2893
|
+
cpuCores: 4,
|
|
2894
|
+
diskBytes: null
|
|
2895
|
+
};
|
|
2896
|
+
var DEFAULT_CREATE_INDEX_WAIT_MS = 3e4;
|
|
2881
2897
|
var CAPACITY_EXHAUSTED_BACKOFF_BASE_MS = 100;
|
|
2882
2898
|
var CAPACITY_EXHAUSTED_BACKOFF_MAX_MS = 500;
|
|
2899
|
+
var JITTERED_BACKOFF_POLL_INTERVAL_MS = 20;
|
|
2900
|
+
var DEFAULT_BOOTSTRAP_SYNC_DEADLINE_MS = 6e5;
|
|
2901
|
+
var SYNCED_POSITION_REPORT_TIMEOUT_MS = 5e3;
|
|
2902
|
+
var ADMISSION_TIMEOUT_MS = 1e4;
|
|
2903
|
+
var CATCH_UP_TICK_MS = 1e3;
|
|
2904
|
+
var MAX_CATCH_UP_IN_FLIGHT_BYTES = 67108864;
|
|
2905
|
+
var CLEAR_PAGE_SIZE = 1e3;
|
|
2906
|
+
var DEFAULT_MAX_CONCURRENT_SNAPSHOTS = 2;
|
|
2907
|
+
var DEFAULT_MAX_PER_SOURCE_SNAPSHOTS = 1;
|
|
2908
|
+
var DEFAULT_MAX_STREAMS_PER_INDEX = 4;
|
|
2909
|
+
var SNAPSHOT_CHUNK_YIELD_INTERVAL_MS = 8;
|
|
2910
|
+
var MAX_SNAPSHOT_SYNC_REQUEST_BYTES = 4096;
|
|
2911
|
+
var MAX_SOURCE_ID_LENGTH = 256;
|
|
2912
|
+
var MAX_WAIT_FOR_ACTIVE_REPLICAS = 255;
|
|
2913
|
+
var MIN_CONTROLLER_LEASE_TTL_MS = 1e3;
|
|
2914
|
+
|
|
2915
|
+
// src/distribution/cluster-node/bootstrap-fetch.ts
|
|
2883
2916
|
var RETRY_ANY_TARGET_CODES = /* @__PURE__ */ new Set([
|
|
2884
2917
|
ErrorCodes.SNAPSHOT_SYNC_TRANSPORT_FAILED,
|
|
2885
2918
|
ErrorCodes.SNAPSHOT_SYNC_TIMEOUT,
|
|
@@ -2990,7 +3023,6 @@ async function fetchSnapshotFromAnyTarget(indexName, primaryNodeId, targets, dea
|
|
|
2990
3023
|
}
|
|
2991
3024
|
return lastFailure;
|
|
2992
3025
|
}
|
|
2993
|
-
var JITTERED_BACKOFF_POLL_INTERVAL_MS = 20;
|
|
2994
3026
|
async function jitteredBackoff(baseMs, maxMs, deadline, abortCheck) {
|
|
2995
3027
|
const plannedMs = Math.floor(baseMs + Math.random() * (maxMs - baseMs));
|
|
2996
3028
|
const remainingMs = deadline - Date.now();
|
|
@@ -3345,7 +3377,6 @@ async function dropExistingIndex(engine, indexName, primaryNodeId) {
|
|
|
3345
3377
|
}
|
|
3346
3378
|
|
|
3347
3379
|
// src/distribution/cluster-node/bootstrap-sync/state.ts
|
|
3348
|
-
var DEFAULT_BOOTSTRAP_SYNC_DEADLINE_MS = 6e5;
|
|
3349
3380
|
function createBootstrapSyncState() {
|
|
3350
3381
|
return {
|
|
3351
3382
|
inFlight: /* @__PURE__ */ new Map(),
|
|
@@ -3767,7 +3798,6 @@ function readLocalLogState(indexName, partitionId, deps) {
|
|
|
3767
3798
|
const newestEntry = log.getEntry(lastSeqNo);
|
|
3768
3799
|
return { lastSeqNo, lastPrimaryTerm: newestEntry?.primaryTerm ?? lastPrimaryTerm };
|
|
3769
3800
|
}
|
|
3770
|
-
var SYNCED_POSITION_REPORT_TIMEOUT_MS = 5e3;
|
|
3771
3801
|
async function reportSyncedPosition(indexName, partitionId, target, knownSeqNo, deadline, deps) {
|
|
3772
3802
|
const logState = readLocalLogState(indexName, partitionId, deps);
|
|
3773
3803
|
if (logState.lastSeqNo <= knownSeqNo) {
|
|
@@ -4392,8 +4422,6 @@ function getInSyncReplicaTargets(assignment, localNodeId, pendingAdmissions = []
|
|
|
4392
4422
|
}
|
|
4393
4423
|
|
|
4394
4424
|
// src/distribution/cluster-node/catch-up/state.ts
|
|
4395
|
-
var CATCH_UP_TICK_MS = 1e3;
|
|
4396
|
-
var CATCH_UP_IN_FLIGHT_BYTE_CEILING = 67108864;
|
|
4397
4425
|
function partitionKey2(indexName, partitionId) {
|
|
4398
4426
|
return `${indexName}:${partitionId}`;
|
|
4399
4427
|
}
|
|
@@ -4459,7 +4487,6 @@ function clearPendingAdmission(state, indexName, partitionId, replicaNodeId) {
|
|
|
4459
4487
|
}
|
|
4460
4488
|
|
|
4461
4489
|
// src/distribution/cluster-node/catch-up/admission.ts
|
|
4462
|
-
var ADMISSION_TIMEOUT_MS = 1e4;
|
|
4463
4490
|
async function sendToController(payload, controllerNodeId, deps) {
|
|
4464
4491
|
const targets = await resolveNodeTargets(controllerNodeId, deps);
|
|
4465
4492
|
for (const target of targets) {
|
|
@@ -4534,6 +4561,30 @@ async function proposeAdmission(state, deps, indexName, partitionId, assignment,
|
|
|
4534
4561
|
clearPendingAdmission(state, indexName, partitionId, replicaNodeId);
|
|
4535
4562
|
}
|
|
4536
4563
|
}
|
|
4564
|
+
|
|
4565
|
+
// src/distribution/chunking.ts
|
|
4566
|
+
function chunkByBudget(items, budget) {
|
|
4567
|
+
const chunks = [];
|
|
4568
|
+
let current = [];
|
|
4569
|
+
let currentBytes = 0;
|
|
4570
|
+
for (const item of items) {
|
|
4571
|
+
const itemBytes = budget.payloadBytesOf(item) + budget.overheadBytes;
|
|
4572
|
+
const previous = current[current.length - 1];
|
|
4573
|
+
const breaksRun = previous !== void 0 && budget.breaksRun?.(item, previous) === true;
|
|
4574
|
+
const overflows = current.length >= budget.maxCount || current.length > 0 && currentBytes + itemBytes > budget.maxBytes;
|
|
4575
|
+
if (breaksRun || overflows) {
|
|
4576
|
+
chunks.push(current);
|
|
4577
|
+
current = [];
|
|
4578
|
+
currentBytes = 0;
|
|
4579
|
+
}
|
|
4580
|
+
current.push(item);
|
|
4581
|
+
currentBytes += itemBytes;
|
|
4582
|
+
}
|
|
4583
|
+
if (current.length > 0) {
|
|
4584
|
+
chunks.push(current);
|
|
4585
|
+
}
|
|
4586
|
+
return chunks;
|
|
4587
|
+
}
|
|
4537
4588
|
async function replicateToReplicas(entry, inSyncReplicas, transport, sourceNodeId, resolveNodeTargets3) {
|
|
4538
4589
|
const message = createEntryMessage(entry, sourceNodeId);
|
|
4539
4590
|
return sendAndCollectAcks(message, entry, inSyncReplicas, transport, resolveNodeTargets3);
|
|
@@ -4604,9 +4655,8 @@ function isMatchingAck(response, entry) {
|
|
|
4604
4655
|
}
|
|
4605
4656
|
|
|
4606
4657
|
// src/distribution/cluster-node/catch-up/pump.ts
|
|
4607
|
-
var ENTRY_FIXED_OVERHEAD_BYTES = 40;
|
|
4608
4658
|
function entryBytes(entry) {
|
|
4609
|
-
return
|
|
4659
|
+
return REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
|
|
4610
4660
|
}
|
|
4611
4661
|
function batchBytes(entries) {
|
|
4612
4662
|
let total = 0;
|
|
@@ -4632,7 +4682,7 @@ function nextWireBatch(state, pending) {
|
|
|
4632
4682
|
if (batch.length === 0) {
|
|
4633
4683
|
return [];
|
|
4634
4684
|
}
|
|
4635
|
-
const available =
|
|
4685
|
+
const available = MAX_CATCH_UP_IN_FLIGHT_BYTES - state.inFlightBytes;
|
|
4636
4686
|
return batchBytes(batch) > available ? [] : batch;
|
|
4637
4687
|
}
|
|
4638
4688
|
async function pumpReplica(state, deps, indexName, partitionId, assignment, replicaNodeId, cursor) {
|
|
@@ -4844,13 +4894,9 @@ async function writeHeldPartitions(core, indexName, next, indexesBehindOnDisk) {
|
|
|
4844
4894
|
indexesBehindOnDisk.delete(indexName);
|
|
4845
4895
|
}
|
|
4846
4896
|
|
|
4847
|
-
// src/distribution/replication/types.ts
|
|
4848
|
-
var DEFAULT_LOG_RETENTION_BYTES = 268435456;
|
|
4849
|
-
|
|
4850
4897
|
// src/distribution/replication/log.ts
|
|
4851
|
-
var ENTRY_FIXED_OVERHEAD_BYTES2 = 40;
|
|
4852
4898
|
function estimateEntrySize(entry) {
|
|
4853
|
-
return
|
|
4899
|
+
return REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
|
|
4854
4900
|
}
|
|
4855
4901
|
var computeChecksum = computeEntryChecksum;
|
|
4856
4902
|
function createReplicationLog(partitionId, config) {
|
|
@@ -4901,7 +4947,7 @@ function createReplicationLog(partitionId, config) {
|
|
|
4901
4947
|
}
|
|
4902
4948
|
}
|
|
4903
4949
|
function assertEntryFitsRetention(entry) {
|
|
4904
|
-
const entrySize =
|
|
4950
|
+
const entrySize = REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
|
|
4905
4951
|
if (entrySize > retentionBytes) {
|
|
4906
4952
|
throw new NarsilError(
|
|
4907
4953
|
ErrorCodes.REPLICATION_LOG_FULL,
|
|
@@ -5142,11 +5188,13 @@ async function createClusterLocalEngine(config, hooks) {
|
|
|
5142
5188
|
const core = createEngineCore(config, hooks);
|
|
5143
5189
|
if (core.durability !== null) {
|
|
5144
5190
|
await core.durability.manager.recover(config?.lifecycle !== void 0);
|
|
5191
|
+
checkHeapAfterRecovery(core);
|
|
5145
5192
|
}
|
|
5146
5193
|
if (core.invalidation !== null) {
|
|
5147
5194
|
await core.invalidation.start();
|
|
5148
5195
|
}
|
|
5149
5196
|
if (config?.lifecycle === void 0) await core.analysisRebuild.reviewStaleIndexes();
|
|
5197
|
+
core.orchestrator.shareMainThread();
|
|
5150
5198
|
const engine = createNarsilFromCore(core, config);
|
|
5151
5199
|
const heldPartitions = createHeldPartitionRecord(core);
|
|
5152
5200
|
return Object.assign(engine, {
|
|
@@ -5507,9 +5555,6 @@ async function authorizeSnapshotRequest(coordinator, indexName, sourceId) {
|
|
|
5507
5555
|
}
|
|
5508
5556
|
|
|
5509
5557
|
// src/distribution/cluster-node/snapshot-cache.ts
|
|
5510
|
-
var DEFAULT_MAX_CONCURRENT_SNAPSHOTS = 2;
|
|
5511
|
-
var DEFAULT_MAX_PER_SOURCE_SNAPSHOTS = 1;
|
|
5512
|
-
var DEFAULT_MAX_STREAMS_PER_INDEX = 4;
|
|
5513
5558
|
function createSnapshotCacheState(maxConcurrent = DEFAULT_MAX_CONCURRENT_SNAPSHOTS, maxPerSource = DEFAULT_MAX_PER_SOURCE_SNAPSHOTS, maxStreamsPerIndex = DEFAULT_MAX_STREAMS_PER_INDEX) {
|
|
5514
5559
|
if (!Number.isInteger(maxConcurrent) || maxConcurrent <= 0) {
|
|
5515
5560
|
throw new NarsilError(ErrorCodes.CONFIG_INVALID, "maxConcurrent must be a positive integer", {
|
|
@@ -5635,7 +5680,6 @@ async function acquireSnapshotBuild(state, indexName, builder) {
|
|
|
5635
5680
|
return entry.promise;
|
|
5636
5681
|
}
|
|
5637
5682
|
var SNAPSHOT_SYNC_ERROR_TYPE = `${ReplicationMessageTypes.SNAPSHOT_SYNC_REQUEST}.error`;
|
|
5638
|
-
var CHUNK_YIELD_INTERVAL_MS = 8;
|
|
5639
5683
|
function createSingleResponseSink(respond) {
|
|
5640
5684
|
const sink = ((response) => {
|
|
5641
5685
|
if (sink.closed) {
|
|
@@ -5677,7 +5721,7 @@ async function streamSnapshotToReplica(sink, nodeId, requestId, indexName, build
|
|
|
5677
5721
|
assertMessageWithinLimit(chunkBytes, "SNAPSHOT_CHUNK");
|
|
5678
5722
|
await respondMessage(sink, ReplicationMessageTypes.SNAPSHOT_CHUNK, nodeId, requestId, chunkBytes);
|
|
5679
5723
|
offset = end;
|
|
5680
|
-
if (offset < totalBytes && now2() - lastYieldAt >=
|
|
5724
|
+
if (offset < totalBytes && now2() - lastYieldAt >= SNAPSHOT_CHUNK_YIELD_INTERVAL_MS) {
|
|
5681
5725
|
await yieldToEventLoop();
|
|
5682
5726
|
lastYieldAt = now2();
|
|
5683
5727
|
}
|
|
@@ -5733,6 +5777,10 @@ async function respondError(sink, sourceId, requestId, code, message) {
|
|
|
5733
5777
|
sink.closed = true;
|
|
5734
5778
|
}
|
|
5735
5779
|
|
|
5780
|
+
// src/distribution/replication/snapshot-constants.ts
|
|
5781
|
+
var SNAPSHOT_HEADER_SENTINEL_SEQNO = Number.MAX_SAFE_INTEGER;
|
|
5782
|
+
var SNAPSHOT_HEADER_SENTINEL_PARTITION_ID = 4294967295;
|
|
5783
|
+
|
|
5736
5784
|
// src/distribution/cluster-node/snapshot-sync-handler/metadata.ts
|
|
5737
5785
|
async function defaultSnapshotHeaderMetadataProvider(coordinator, indexName) {
|
|
5738
5786
|
try {
|
|
@@ -5853,8 +5901,6 @@ function buildSnapshotForRequest(deps, indexName, options) {
|
|
|
5853
5901
|
}
|
|
5854
5902
|
return buildSnapshot(deps, indexName);
|
|
5855
5903
|
}
|
|
5856
|
-
var INDEX_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
|
|
5857
|
-
var MAX_SOURCE_ID_LENGTH = 256;
|
|
5858
5904
|
function containsControlCharacter(value) {
|
|
5859
5905
|
for (let i = 0; i < value.length; i++) {
|
|
5860
5906
|
const code = value.charCodeAt(i);
|
|
@@ -5870,7 +5916,6 @@ function containsControlCharacter(value) {
|
|
|
5870
5916
|
}
|
|
5871
5917
|
return false;
|
|
5872
5918
|
}
|
|
5873
|
-
var MAX_SNAPSHOT_SYNC_REQUEST_BYTES = 4096;
|
|
5874
5919
|
var REQUEST_DECODE_OPTIONS = {
|
|
5875
5920
|
maxMapLength: 16,
|
|
5876
5921
|
maxArrayLength: 16,
|
|
@@ -6021,17 +6066,15 @@ async function handlePartitionStores(message, respond, deps) {
|
|
|
6021
6066
|
await respond(createPartitionStoresResultMessage(result, deps.nodeId, message.requestId));
|
|
6022
6067
|
}
|
|
6023
6068
|
|
|
6024
|
-
// src/distribution/query/
|
|
6069
|
+
// src/distribution/query/constants.ts
|
|
6025
6070
|
var MAX_PARTITION_IDS = MAX_PARTITION_COUNT;
|
|
6026
6071
|
var MAX_TERM_LENGTH = 1024;
|
|
6027
6072
|
var MAX_TERMS_COUNT = 65536;
|
|
6028
6073
|
var MAX_FIELD_NAME_LENGTH = 255;
|
|
6029
6074
|
var MAX_FIELDS_LIST = 256;
|
|
6030
6075
|
var MAX_BOOST_FIELDS = 256;
|
|
6031
|
-
var MAX_SORT_FIELDS = 8;
|
|
6032
6076
|
var MAX_FACETS = 64;
|
|
6033
6077
|
var MAX_FETCH_DOCUMENT_IDS = 1e4;
|
|
6034
|
-
var MAX_DOC_ID_LENGTH = 512;
|
|
6035
6078
|
var MAX_FILTER_DEPTH = 30;
|
|
6036
6079
|
var MAX_FILTER_FIELDS = 256;
|
|
6037
6080
|
var MAX_FILTER_ARRAY_SIZE = 65536;
|
|
@@ -6046,6 +6089,25 @@ var MAX_PINNED_ENTRIES = 1e3;
|
|
|
6046
6089
|
var MAX_PINNED_POSITION = RESULT_WINDOW;
|
|
6047
6090
|
var MAX_EF_SEARCH = 1e4;
|
|
6048
6091
|
var MAX_GROUP_FIELDS = 64;
|
|
6092
|
+
var MAX_HIGHLIGHT_TAG_LENGTH = 256;
|
|
6093
|
+
var MAX_HIGHLIGHT_SNIPPET_LENGTH = 65536;
|
|
6094
|
+
var MAX_LIST_CURSOR_LENGTH = 4096;
|
|
6095
|
+
var MAX_SUGGEST_WIRE_LIMIT = 1e3;
|
|
6096
|
+
var MAX_COUNT_VALUE = Number.MAX_SAFE_INTEGER;
|
|
6097
|
+
var MAX_LANGUAGE_NAME_LENGTH = 64;
|
|
6098
|
+
var MAX_SORT_VALUE_STRING_LENGTH = 65536;
|
|
6099
|
+
var MAX_RESULTS_PER_PARTITION = 1e4;
|
|
6100
|
+
var MAX_SORT_VALUES = 8;
|
|
6101
|
+
var MAX_FACET_FIELDS = 64;
|
|
6102
|
+
var MAX_FACET_BUCKETS = 1e4;
|
|
6103
|
+
var MAX_FACET_VALUE_LENGTH = 1024;
|
|
6104
|
+
var MAX_GROUPS_PER_RESPONSE = 65536;
|
|
6105
|
+
var MAX_FACET_SIZE = 1e3;
|
|
6106
|
+
var DEFAULT_MAX_FACET_BUCKETS = 100;
|
|
6107
|
+
var MAX_VECTOR_DIMENSION = 8192;
|
|
6108
|
+
var MAX_VECTOR_TEXT_LENGTH = 16384;
|
|
6109
|
+
|
|
6110
|
+
// src/distribution/query/validators/common.ts
|
|
6049
6111
|
var NULL_BYTE = String.fromCharCode(0);
|
|
6050
6112
|
function throwInvalid(code, message, details) {
|
|
6051
6113
|
throw new NarsilError(code, message, details);
|
|
@@ -6158,8 +6220,6 @@ var SEARCH_INVALID_MODE = ErrorCodes.SEARCH_INVALID_MODE;
|
|
|
6158
6220
|
var CONFIG_INVALID = ErrorCodes.CONFIG_INVALID;
|
|
6159
6221
|
|
|
6160
6222
|
// src/distribution/query/validators/fetch.ts
|
|
6161
|
-
var MAX_HIGHLIGHT_TAG_LENGTH = 256;
|
|
6162
|
-
var MAX_HIGHLIGHT_SNIPPET_LENGTH = 65536;
|
|
6163
6223
|
function validateIndexNameField(value, fieldLabel) {
|
|
6164
6224
|
if (typeof value !== "string") {
|
|
6165
6225
|
throwInvalid(CONFIG_INVALID, `Invalid FetchPayload: "${fieldLabel}" must be a string`);
|
|
@@ -6664,9 +6724,7 @@ function validateEfSearchParam(value) {
|
|
|
6664
6724
|
}
|
|
6665
6725
|
|
|
6666
6726
|
// src/distribution/query/validators/search.ts
|
|
6667
|
-
var MAX_FACET_SHARD_SIZE = oversampledShardSize(
|
|
6668
|
-
var MAX_VECTOR_DIMENSION = 8192;
|
|
6669
|
-
var MAX_VECTOR_TEXT_LENGTH = 16384;
|
|
6727
|
+
var MAX_FACET_SHARD_SIZE = oversampledShardSize(MAX_FACET_SIZE);
|
|
6670
6728
|
var ALLOWED_SCORING = ["local", "dfs", "broadcast"];
|
|
6671
6729
|
var ALLOWED_SORT_DIRECTIONS = ["asc", "desc"];
|
|
6672
6730
|
function validateIndexNameField2(value, fieldLabel) {
|
|
@@ -6930,11 +6988,6 @@ function validateSearchPayload(decoded) {
|
|
|
6930
6988
|
}
|
|
6931
6989
|
|
|
6932
6990
|
// src/distribution/query/validators/reads.ts
|
|
6933
|
-
var MAX_LIST_CURSOR_LENGTH = 4096;
|
|
6934
|
-
var MAX_SUGGEST_WIRE_LIMIT = 1e3;
|
|
6935
|
-
var MAX_COUNT_VALUE = Number.MAX_SAFE_INTEGER;
|
|
6936
|
-
var MAX_LANGUAGE_NAME_LENGTH = 64;
|
|
6937
|
-
var MAX_SORT_VALUE_STRING_LENGTH = 65536;
|
|
6938
6991
|
function validateIndexNameField3(decoded, payloadLabel) {
|
|
6939
6992
|
validateStringField(decoded.indexName, `${payloadLabel}.indexName`, 255, CONFIG_INVALID);
|
|
6940
6993
|
}
|
|
@@ -7129,12 +7182,6 @@ function validatePreflightResultPayload(decoded) {
|
|
|
7129
7182
|
}
|
|
7130
7183
|
|
|
7131
7184
|
// src/distribution/query/validators/search-result.ts
|
|
7132
|
-
var MAX_RESULTS_PER_PARTITION = 1e4;
|
|
7133
|
-
var MAX_SORT_VALUES = 8;
|
|
7134
|
-
var MAX_FACET_FIELDS = 64;
|
|
7135
|
-
var MAX_FACET_BUCKETS = 1e4;
|
|
7136
|
-
var MAX_FACET_VALUE_LENGTH = 1024;
|
|
7137
|
-
var MAX_GROUPS_PER_RESPONSE = 65536;
|
|
7138
7185
|
function validateScoredEntry(value, fieldLabel) {
|
|
7139
7186
|
if (!isRecord2(value)) {
|
|
7140
7187
|
throwInvalid(CONFIG_INVALID, `Invalid SearchResultPayload: "${fieldLabel}" must be an object`);
|
|
@@ -7987,7 +8034,6 @@ async function sendSyncEntriesResponse(message, respond, deps, entries) {
|
|
|
7987
8034
|
}
|
|
7988
8035
|
|
|
7989
8036
|
// src/distribution/cluster-node/allocation-wait.ts
|
|
7990
|
-
var DEFAULT_CREATE_INDEX_WAIT_MS = 3e4;
|
|
7991
8037
|
function everyPartitionActive(table, partitionCount) {
|
|
7992
8038
|
if (table === null || table.assignments.size < partitionCount) {
|
|
7993
8039
|
return false;
|
|
@@ -8035,15 +8081,6 @@ async function waitForServingAllocation(coordinator, indexName, partitionCount,
|
|
|
8035
8081
|
}
|
|
8036
8082
|
}
|
|
8037
8083
|
|
|
8038
|
-
// src/distribution/cluster-node/types/defaults.ts
|
|
8039
|
-
var DEFAULT_PARTITION_COUNT = 5;
|
|
8040
|
-
var DEFAULT_REPLICATION_FACTOR = 1;
|
|
8041
|
-
var DEFAULT_CAPACITY = {
|
|
8042
|
-
memoryBytes: 8e9,
|
|
8043
|
-
cpuCores: 4,
|
|
8044
|
-
diskBytes: null
|
|
8045
|
-
};
|
|
8046
|
-
|
|
8047
8084
|
// src/distribution/cluster-node/transport-failure.ts
|
|
8048
8085
|
var FAILURE_CODE_BY_TRANSPORT_CODE = {
|
|
8049
8086
|
[TransportErrorCodes.CONNECT_FAILED]: ErrorCodes.QUERY_NO_ACTIVE_REPLICA,
|
|
@@ -9037,7 +9074,6 @@ async function routeUpdateBatch(indexName, updates, deps) {
|
|
|
9037
9074
|
}
|
|
9038
9075
|
|
|
9039
9076
|
// src/distribution/cluster-node/write-routing/index.ts
|
|
9040
|
-
var MAX_REPLICATION_FACTOR = 255;
|
|
9041
9077
|
function validateCreateIndexOptions(partitionCount, replicationFactor) {
|
|
9042
9078
|
if (!Number.isInteger(partitionCount) || partitionCount < 1 || partitionCount > MAX_PARTITION_COUNT) {
|
|
9043
9079
|
throw new NarsilError(
|
|
@@ -9838,7 +9874,6 @@ function popScoredHeap(heap, nodeFirst) {
|
|
|
9838
9874
|
}
|
|
9839
9875
|
return top;
|
|
9840
9876
|
}
|
|
9841
|
-
var DEFAULT_MAX_FACET_BUCKETS = 100;
|
|
9842
9877
|
function mergeDistributedFacets(allFacets, allBounds, maxBuckets = DEFAULT_MAX_FACET_BUCKETS) {
|
|
9843
9878
|
const merged = /* @__PURE__ */ new Map();
|
|
9844
9879
|
const bounds = /* @__PURE__ */ new Map();
|
|
@@ -10124,7 +10159,6 @@ var DEFAULT_QUERY_CONFIG = {
|
|
|
10124
10159
|
};
|
|
10125
10160
|
|
|
10126
10161
|
// src/distribution/query/routing.ts
|
|
10127
|
-
var MAX_FACET_SIZE = 1e3;
|
|
10128
10162
|
function wireSortSignature(sort) {
|
|
10129
10163
|
if (sort === null || sort.length === 0) return null;
|
|
10130
10164
|
return JSON.stringify(sort.map((field) => [field.field, field.direction]));
|
|
@@ -10777,7 +10811,6 @@ async function queryCluster(deps, indexName, params) {
|
|
|
10777
10811
|
}
|
|
10778
10812
|
|
|
10779
10813
|
// src/distribution/cluster-node/clear.ts
|
|
10780
|
-
var CLEAR_PAGE_SIZE = 1e3;
|
|
10781
10814
|
async function clearCluster(readDeps, writeDeps, indexName) {
|
|
10782
10815
|
const allocation = await routableAllocation(readDeps.config.coordinator, indexName);
|
|
10783
10816
|
if (allocation === null) {
|
|
@@ -11093,8 +11126,6 @@ function createSingleResponseRespond(respond) {
|
|
|
11093
11126
|
}
|
|
11094
11127
|
|
|
11095
11128
|
// src/distribution/cluster-node/validate-config.ts
|
|
11096
|
-
var MAX_WAIT_FOR_ACTIVE_REPLICAS = 255;
|
|
11097
|
-
var MIN_CONTROLLER_LEASE_TTL_MS = 1e3;
|
|
11098
11129
|
function validateClusterNodeConfig(config) {
|
|
11099
11130
|
if (config.address.length === 0) {
|
|
11100
11131
|
throw new NarsilError(ErrorCodes.CONFIG_INVALID, "ClusterNodeConfig.address must not be empty");
|
|
@@ -11457,6 +11488,9 @@ function unsupported(operation) {
|
|
|
11457
11488
|
{ operation }
|
|
11458
11489
|
);
|
|
11459
11490
|
}
|
|
11491
|
+
function rejectWait(options) {
|
|
11492
|
+
if (options?.wait === true) unsupported("wait");
|
|
11493
|
+
}
|
|
11460
11494
|
function clusterNodeEngine(node, options) {
|
|
11461
11495
|
return {
|
|
11462
11496
|
open(indexName) {
|
|
@@ -11469,21 +11503,27 @@ function clusterNodeEngine(node, options) {
|
|
|
11469
11503
|
return node.createIndex(name, config, options?.createIndex);
|
|
11470
11504
|
},
|
|
11471
11505
|
async insert(indexName, document, docId, insertOptions) {
|
|
11506
|
+
rejectWait(insertOptions);
|
|
11472
11507
|
return node.insert(indexName, document, docId, insertOptions);
|
|
11473
11508
|
},
|
|
11474
11509
|
async insertBatch(indexName, documents, insertOptions) {
|
|
11510
|
+
rejectWait(insertOptions);
|
|
11475
11511
|
return node.insertBatch(indexName, documents, insertOptions);
|
|
11476
11512
|
},
|
|
11477
|
-
async remove(indexName, docId) {
|
|
11513
|
+
async remove(indexName, docId, options2) {
|
|
11514
|
+
rejectWait(options2);
|
|
11478
11515
|
return node.remove(indexName, docId);
|
|
11479
11516
|
},
|
|
11480
|
-
async removeBatch(indexName, docIds) {
|
|
11517
|
+
async removeBatch(indexName, docIds, options2) {
|
|
11518
|
+
rejectWait(options2);
|
|
11481
11519
|
return node.removeBatch(indexName, docIds);
|
|
11482
11520
|
},
|
|
11483
|
-
async update(indexName, docId, document) {
|
|
11521
|
+
async update(indexName, docId, document, options2) {
|
|
11522
|
+
rejectWait(options2);
|
|
11484
11523
|
return node.update(indexName, docId, document);
|
|
11485
11524
|
},
|
|
11486
|
-
async updateBatch(indexName, updates) {
|
|
11525
|
+
async updateBatch(indexName, updates, options2) {
|
|
11526
|
+
rejectWait(options2);
|
|
11487
11527
|
return node.updateBatch(indexName, updates);
|
|
11488
11528
|
},
|
|
11489
11529
|
async dropIndex(name) {
|
|
@@ -11531,6 +11571,7 @@ function clusterNodeEngine(node, options) {
|
|
|
11531
11571
|
async shutdown() {
|
|
11532
11572
|
return node.shutdown();
|
|
11533
11573
|
},
|
|
11574
|
+
waitForWrites: () => unsupported("waitForWrites"),
|
|
11534
11575
|
registerEmbeddingAdapter: () => unsupported("registerEmbeddingAdapter"),
|
|
11535
11576
|
listIndexes: () => unsupported("listIndexes"),
|
|
11536
11577
|
getStats: () => unsupported("getStats"),
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { NarsilError, ErrorCodes } from '../chunk-P4ELXVJQ.mjs';
|
|
2
2
|
|
|
3
|
-
// src/embeddings/
|
|
3
|
+
// src/embeddings/constants.ts
|
|
4
4
|
var RETRYABLE_STATUS_CODES = /* @__PURE__ */ new Set([429, 500, 502, 503]);
|
|
5
5
|
var MAX_BACKOFF_MS = 3e4;
|
|
6
6
|
var BASE_BACKOFF_MS = 1e3;
|
|
7
7
|
var MAX_JITTER_MS = 1e3;
|
|
8
|
-
var
|
|
8
|
+
var DEFAULT_REQUEST_TIMEOUT_MS = 3e4;
|
|
9
9
|
var MAX_INPUTS_PER_REQUEST = 2048;
|
|
10
|
+
|
|
11
|
+
// src/embeddings/openai.ts
|
|
10
12
|
function isRetryableStatus(status) {
|
|
11
13
|
return RETRYABLE_STATUS_CODES.has(status);
|
|
12
14
|
}
|
|
@@ -194,7 +196,7 @@ function createOpenAIEmbedding(config) {
|
|
|
194
196
|
const url = `${config.baseUrl.replace(/\/+$/, "")}/embeddings`;
|
|
195
197
|
const model = config.model;
|
|
196
198
|
const dimensionCount = config.dimensions;
|
|
197
|
-
const timeoutMs = config.timeout ??
|
|
199
|
+
const timeoutMs = config.timeout ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
198
200
|
const maxRetries = config.maxRetries ?? 3;
|
|
199
201
|
return {
|
|
200
202
|
get dimensions() {
|