@harperfast/harper 5.1.0-beta.3 → 5.1.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/bin/copyDb.ts +16 -3
- package/dist/bin/copyDb.js +16 -3
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/resources/Table.js +43 -4
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/databases.js +135 -41
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/graphql.js +3 -0
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/replayLogs.d.ts +1 -0
- package/dist/resources/replayLogs.js +100 -40
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/replayLogsGuards.d.ts +25 -8
- package/dist/resources/replayLogsGuards.js +50 -10
- package/dist/resources/replayLogsGuards.js.map +1 -1
- package/dist/server/nodeName.js +9 -3
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/operationsServer.js +20 -0
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/utility/install/installer.js +12 -6
- package/dist/utility/install/installer.js.map +1 -1
- package/package.json +3 -3
- package/resources/Table.ts +41 -4
- package/resources/databases.ts +134 -42
- package/resources/graphql.ts +3 -0
- package/resources/replayLogs.ts +114 -42
- package/resources/replayLogsGuards.ts +58 -9
- package/server/nodeName.ts +9 -3
- package/server/operationsServer.ts +17 -0
- package/studio/web/assets/{Chat-BdFickL8.js → Chat-DMBW4pI2.js} +2 -2
- package/studio/web/assets/{Chat-BdFickL8.js.map → Chat-DMBW4pI2.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-CaAoco8I.js → FloatingChat-DTmhPsrm.js} +4 -4
- package/studio/web/assets/{FloatingChat-CaAoco8I.js.map → FloatingChat-DTmhPsrm.js.map} +1 -1
- package/studio/web/assets/{applications-C3y3xwyG.js → applications-CigxJarn.js} +2 -2
- package/studio/web/assets/{applications-C3y3xwyG.js.map → applications-CigxJarn.js.map} +1 -1
- package/studio/web/assets/{index-Cd3Zh3nK.js → index-oRZw5GW3.js} +6 -6
- package/studio/web/assets/index-oRZw5GW3.js.map +1 -0
- package/studio/web/assets/{index.lazy-0hLbh5Fo.js → index.lazy-DY3VcR86.js} +4 -4
- package/studio/web/assets/{index.lazy-0hLbh5Fo.js.map → index.lazy-DY3VcR86.js.map} +1 -1
- package/studio/web/assets/{profile-CwBWGuVt.js → profile-DiV60L50.js} +2 -2
- package/studio/web/assets/{profile-CwBWGuVt.js.map → profile-DiV60L50.js.map} +1 -1
- package/studio/web/assets/{setComponentFile-Dhrmd8eR.js → setComponentFile-Bz6WI4jy.js} +2 -2
- package/studio/web/assets/{setComponentFile-Dhrmd8eR.js.map → setComponentFile-Bz6WI4jy.js.map} +1 -1
- package/studio/web/assets/{status-Bykq6QcD.js → status-fW6PBpPM.js} +2 -2
- package/studio/web/assets/{status-Bykq6QcD.js.map → status-fW6PBpPM.js.map} +1 -1
- package/studio/web/assets/{swagger-ui-react-CF94s29D.js → swagger-ui-react-DRYf7G3J.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-CF94s29D.js.map → swagger-ui-react-DRYf7G3J.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-D7vuaG2W.js → useEntityRestURL-14jWKu9J.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-D7vuaG2W.js.map → useEntityRestURL-14jWKu9J.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/utility/install/installer.ts +12 -5
- package/studio/web/assets/index-Cd3Zh3nK.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../utility/install/installer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../utility/install/installer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@harperfast/harper",
|
|
3
3
|
"description": "Harper is an open-source Node.js performance platform that unifies database, cache, application, and messaging layers into one in-memory process.",
|
|
4
|
-
"version": "5.1.0
|
|
4
|
+
"version": "5.1.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://harper.fast",
|
|
7
7
|
"bugs": {
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
},
|
|
125
125
|
"devDependencies": {
|
|
126
126
|
"@harperdb/code-guidelines": "^0.0.6",
|
|
127
|
-
"@harperfast/integration-testing": "^0.
|
|
127
|
+
"@harperfast/integration-testing": "^0.5.1",
|
|
128
128
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
129
129
|
"@types/busboy": "^1.5.4",
|
|
130
130
|
"@types/fs-extra": "^11.0.4",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"@fastify/cors": "^11.2.0",
|
|
168
168
|
"@fastify/static": "^9.1.3",
|
|
169
169
|
"@harperfast/extended-iterable": "^1.0.1",
|
|
170
|
-
"@harperfast/rocksdb-js": "^2.
|
|
170
|
+
"@harperfast/rocksdb-js": "^2.1.0",
|
|
171
171
|
"@turf/area": "6.5.0",
|
|
172
172
|
"@turf/boolean-contains": "6.5.0",
|
|
173
173
|
"@turf/boolean-disjoint": "6.5.0",
|
package/resources/Table.ts
CHANGED
|
@@ -1017,6 +1017,29 @@ export function makeTable(options) {
|
|
|
1017
1017
|
}
|
|
1018
1018
|
|
|
1019
1019
|
static async dropTable() {
|
|
1020
|
+
if (databaseName === databasePath) {
|
|
1021
|
+
// Persist a drop tombstone on the primary catalog entry BEFORE any
|
|
1022
|
+
// destructive work. If the process dies or a column family drop fails
|
|
1023
|
+
// partway through, the tombstone survives with the catalog rows, and
|
|
1024
|
+
// the next startup (or a same-name create) completes the drop via
|
|
1025
|
+
// completeInterruptedDrop in databases.ts instead of resurrecting
|
|
1026
|
+
// the table.
|
|
1027
|
+
const primaryCatalogKey = TableResource.tableName + '/';
|
|
1028
|
+
const primaryMeta = (dbisDb as any).getSync(primaryCatalogKey);
|
|
1029
|
+
if (primaryMeta && !primaryMeta.dropping) {
|
|
1030
|
+
primaryMeta.dropping = true;
|
|
1031
|
+
// put is rebound to putSync on RocksDB stores; on LMDB it returns
|
|
1032
|
+
// a promise, so await it to make the tombstone durable before the
|
|
1033
|
+
// destructive work below
|
|
1034
|
+
const tombstoneWrite = (dbisDb as any).put(primaryCatalogKey, primaryMeta);
|
|
1035
|
+
if (tombstoneWrite?.then) await tombstoneWrite;
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
// Remove the table from the in-memory schema immediately so concurrent
|
|
1039
|
+
// requests get "table does not exist" instead of racing the column
|
|
1040
|
+
// family drops below. If a drop fails past this point the table stays
|
|
1041
|
+
// invisible, and the tombstone guarantees the drop completes on the
|
|
1042
|
+
// next startup (or on a same-name create).
|
|
1020
1043
|
delete databases[databaseName][tableName];
|
|
1021
1044
|
for (const entry of primaryStore.getRange({ versions: true, snapshot: false, lazy: true })) {
|
|
1022
1045
|
if (entry.metadataFlags & HAS_BLOBS && entry.value) {
|
|
@@ -1024,14 +1047,28 @@ export function makeTable(options) {
|
|
|
1024
1047
|
}
|
|
1025
1048
|
}
|
|
1026
1049
|
if (databaseName === databasePath) {
|
|
1027
|
-
// part of a database
|
|
1050
|
+
// part of a database.
|
|
1051
|
+
// Drop the column families and AWAIT them. Previously the catalog
|
|
1052
|
+
// metadata was removed (synchronous removeSync) before primaryStore.drop(),
|
|
1053
|
+
// and the drops were fire-and-forget (their rejections swallowed). If a
|
|
1054
|
+
// column family was corrupt/half-initialized the drop would fail, yet the
|
|
1055
|
+
// catalog entry was already gone - an orphaned "ghost" column family that
|
|
1056
|
+
// poisons same-name recreates. By awaiting the drops before touching the
|
|
1057
|
+
// catalog, a failed drop surfaces as the operation's error and the
|
|
1058
|
+
// tombstoned catalog rows survive for the startup reconcile.
|
|
1059
|
+
const drops = [];
|
|
1028
1060
|
for (const attribute of attributes) {
|
|
1029
|
-
dbisDb.remove(TableResource.tableName + '/' + attribute.name);
|
|
1030
1061
|
const index = indices[attribute.name];
|
|
1031
|
-
index
|
|
1062
|
+
if (index) drops.push(index.drop());
|
|
1063
|
+
}
|
|
1064
|
+
drops.push(primaryStore.drop());
|
|
1065
|
+
await Promise.all(drops);
|
|
1066
|
+
// Column families are gone; remove the catalog metadata (including
|
|
1067
|
+
// the tombstoned primary entry).
|
|
1068
|
+
for (const attribute of attributes) {
|
|
1069
|
+
dbisDb.remove(TableResource.tableName + '/' + attribute.name);
|
|
1032
1070
|
}
|
|
1033
1071
|
dbisDb.remove(TableResource.tableName + '/');
|
|
1034
|
-
primaryStore.drop();
|
|
1035
1072
|
await dbisDb.committed;
|
|
1036
1073
|
} else {
|
|
1037
1074
|
// legacy table per database
|
package/resources/databases.ts
CHANGED
|
@@ -521,6 +521,27 @@ function initStores(
|
|
|
521
521
|
Object.defineProperty(value, 'key', { value: key, configurable: true });
|
|
522
522
|
}
|
|
523
523
|
|
|
524
|
+
// Complete any drops that were interrupted mid-flight. dropTable persists a
|
|
525
|
+
// `dropping` tombstone on the table's primary catalog entry before removing
|
|
526
|
+
// column families; if the process died or a column family drop failed
|
|
527
|
+
// partway, the tombstone survives alongside the catalog rows. Without this
|
|
528
|
+
// reconcile, those rows would silently resurrect the table below
|
|
529
|
+
// (recreating any missing column families as empty stores).
|
|
530
|
+
for (const [tableName, tableDef] of tablesToLoad) {
|
|
531
|
+
if (!tableDef.primary?.dropping) continue;
|
|
532
|
+
try {
|
|
533
|
+
completeInterruptedDrop(rootStore, attributesDbi, databaseName, tableName);
|
|
534
|
+
definedTables?.delete(tableName);
|
|
535
|
+
} catch (error) {
|
|
536
|
+
logger.error(
|
|
537
|
+
`Failed to complete interrupted drop of table ${databaseName}.${tableName}; will retry on next start`,
|
|
538
|
+
error
|
|
539
|
+
);
|
|
540
|
+
}
|
|
541
|
+
// whether or not cleanup succeeded, never load a table that was being dropped
|
|
542
|
+
tablesToLoad.delete(tableName);
|
|
543
|
+
}
|
|
544
|
+
|
|
524
545
|
for (const [tableName, tableDef] of tablesToLoad) {
|
|
525
546
|
let { attributes, primary: primaryAttribute } = tableDef;
|
|
526
547
|
if (!primaryAttribute) {
|
|
@@ -1067,7 +1088,8 @@ export function table<TableResourceType>(tableDefinition: TableDefinition): Tabl
|
|
|
1067
1088
|
}
|
|
1068
1089
|
|
|
1069
1090
|
exclusiveLock(); // get an exclusive lock on the database so we can verify that we are the only thread creating the table (and assigning the table id)
|
|
1070
|
-
|
|
1091
|
+
const existingTableMeta = (attributesDbi as any).getSync(dbiName);
|
|
1092
|
+
if (existingTableMeta && !existingTableMeta.dropping) {
|
|
1071
1093
|
// table was created while we were setting up
|
|
1072
1094
|
if (releaseExclusiveLock) releaseExclusiveLock();
|
|
1073
1095
|
resetDatabases();
|
|
@@ -1075,50 +1097,69 @@ export function table<TableResourceType>(tableDefinition: TableDefinition): Tabl
|
|
|
1075
1097
|
}
|
|
1076
1098
|
|
|
1077
1099
|
let primaryStore;
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1100
|
+
try {
|
|
1101
|
+
if (existingTableMeta?.dropping) {
|
|
1102
|
+
// A previous drop of this table was interrupted after its tombstone
|
|
1103
|
+
// was written. Complete it now (under the exclusive lock) so the
|
|
1104
|
+
// create below starts from a clean slate; treating the tombstoned
|
|
1105
|
+
// entry as an existing table would recurse forever on the stale
|
|
1106
|
+
// catalog row.
|
|
1107
|
+
completeInterruptedDrop(rootStore, attributesDbi, databaseName, tableName);
|
|
1108
|
+
}
|
|
1109
|
+
if (rootStore instanceof RocksDatabase) {
|
|
1110
|
+
primaryStore = openRocksDatabase(rootStore.path, { ...dbiInit, name: dbiName } as any);
|
|
1111
|
+
} else {
|
|
1112
|
+
primaryStore = (rootStore as any).openDB(dbiName, dbiInit as any);
|
|
1113
|
+
}
|
|
1114
|
+
primaryStore = handleLocalTimeForGets(primaryStore, rootStore);
|
|
1115
|
+
rootStore.databaseName = databaseName;
|
|
1116
|
+
primaryStore.tableId = attributesDbi.getSync(NEXT_TABLE_ID);
|
|
1117
|
+
logger.trace(`Assigning new table id ${primaryStore.tableId} for ${tableName}`);
|
|
1118
|
+
if (!primaryStore.tableId) primaryStore.tableId = 1;
|
|
1119
|
+
attributesDbi.put(NEXT_TABLE_ID, primaryStore.tableId + 1);
|
|
1089
1120
|
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
tableName,
|
|
1094
|
-
makeTable({
|
|
1095
|
-
primaryStore,
|
|
1096
|
-
auditStore,
|
|
1097
|
-
audit,
|
|
1098
|
-
sealed,
|
|
1099
|
-
splitSegments,
|
|
1100
|
-
replicate,
|
|
1101
|
-
trackDeletes,
|
|
1102
|
-
expirationMS: expiration && expiration * 1000,
|
|
1103
|
-
evictionMS: eviction && eviction * 1000,
|
|
1104
|
-
primaryKey,
|
|
1121
|
+
primaryKeyAttribute.tableId = primaryStore.tableId;
|
|
1122
|
+
Table = setTable(
|
|
1123
|
+
tables,
|
|
1105
1124
|
tableName,
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1125
|
+
makeTable({
|
|
1126
|
+
primaryStore,
|
|
1127
|
+
auditStore,
|
|
1128
|
+
audit,
|
|
1129
|
+
sealed,
|
|
1130
|
+
splitSegments,
|
|
1131
|
+
replicate,
|
|
1132
|
+
trackDeletes,
|
|
1133
|
+
expirationMS: expiration && expiration * 1000,
|
|
1134
|
+
evictionMS: eviction && eviction * 1000,
|
|
1135
|
+
primaryKey,
|
|
1136
|
+
tableName,
|
|
1137
|
+
tableId: primaryStore.tableId,
|
|
1138
|
+
databasePath: databaseName,
|
|
1139
|
+
databaseName,
|
|
1140
|
+
indices: {},
|
|
1141
|
+
attributes,
|
|
1142
|
+
schemaDefined,
|
|
1143
|
+
dbisDB: attributesDbi,
|
|
1144
|
+
description,
|
|
1145
|
+
properties,
|
|
1146
|
+
hidden,
|
|
1147
|
+
})
|
|
1148
|
+
);
|
|
1149
|
+
Table.schemaVersion = 1;
|
|
1150
|
+
hasChanges = true;
|
|
1120
1151
|
|
|
1121
|
-
|
|
1152
|
+
attributesDbi.put(dbiName, primaryKeyAttribute);
|
|
1153
|
+
} catch (error) {
|
|
1154
|
+
// A failure while opening/creating the column family or writing the
|
|
1155
|
+
// table id / catalog entry (e.g. into an env poisoned by a prior
|
|
1156
|
+
// dangling column family) must NOT leak the exclusive
|
|
1157
|
+
// 'update-attributes' spin lock. If it leaks, every subsequent
|
|
1158
|
+
// create_table / attribute update on this database spins forever
|
|
1159
|
+
// (a hard wedge that pins a worker at 100% CPU). Release before rethrow.
|
|
1160
|
+
if (releaseExclusiveLock) releaseExclusiveLock();
|
|
1161
|
+
throw error;
|
|
1162
|
+
}
|
|
1122
1163
|
}
|
|
1123
1164
|
const indices = Table.indices;
|
|
1124
1165
|
if (!attributesDbi) {
|
|
@@ -1171,8 +1212,14 @@ export function table<TableResourceType>(tableDefinition: TableDefinition): Tabl
|
|
|
1171
1212
|
let attributeDescriptor = attributesDbi.getSync(dbiKey);
|
|
1172
1213
|
if (attribute.isPrimaryKey) {
|
|
1173
1214
|
attributeDescriptor = attributeDescriptor || attributesDbi.getSync((dbiKey = tableName + '/')) || {};
|
|
1215
|
+
// Persist schemaDefined when the explicit live value disagrees with disk. Without this,
|
|
1216
|
+
// a stale `false` (from a v4-era write or replicated event) survives every reload: the
|
|
1217
|
+
// in-memory re-assert in the existing-Table branch only fixes the worker that ran @table,
|
|
1218
|
+
// but other workers' next disk-load re-reads the stale value.
|
|
1219
|
+
const schemaDefinedMismatch = schemaDefinedExplicit && attributeDescriptor.schemaDefined !== schemaDefined;
|
|
1174
1220
|
// primary key can't change indexing, but settings can change
|
|
1175
1221
|
if (
|
|
1222
|
+
schemaDefinedMismatch ||
|
|
1176
1223
|
(audit !== undefined && audit !== Table.audit) ||
|
|
1177
1224
|
(sealed !== undefined && sealed !== Table.sealed) ||
|
|
1178
1225
|
(replicate !== undefined && replicate !== Table.replicate) ||
|
|
@@ -1190,6 +1237,7 @@ export function table<TableResourceType>(tableDefinition: TableDefinition): Tabl
|
|
|
1190
1237
|
if (sealed !== undefined) updatedPrimaryAttribute.sealed = sealed;
|
|
1191
1238
|
if (replicate !== undefined) updatedPrimaryAttribute.replicate = replicate;
|
|
1192
1239
|
if (attribute.type) updatedPrimaryAttribute.type = attribute.type;
|
|
1240
|
+
if (schemaDefinedMismatch) updatedPrimaryAttribute.schemaDefined = schemaDefined;
|
|
1193
1241
|
hasChanges = true; // send out notification of the change
|
|
1194
1242
|
exclusiveLock();
|
|
1195
1243
|
attributesDbi.put(dbiKey, updatedPrimaryAttribute);
|
|
@@ -1538,6 +1586,50 @@ async function runIndexing(Table, attributes, indicesToRemove) {
|
|
|
1538
1586
|
}
|
|
1539
1587
|
}
|
|
1540
1588
|
|
|
1589
|
+
/**
|
|
1590
|
+
* Completes a table drop that was interrupted after its `dropping` tombstone
|
|
1591
|
+
* was written: drops any surviving table stores and removes the table's
|
|
1592
|
+
* catalog rows. Called from the boot-time schema load and from the create
|
|
1593
|
+
* path when a same-named table is created over a tombstoned entry. Callers
|
|
1594
|
+
* are expected to hold the database's exclusive lock or be in single-threaded
|
|
1595
|
+
* startup; the per-store drops tolerate races (another worker may be
|
|
1596
|
+
* completing the same drop concurrently).
|
|
1597
|
+
*/
|
|
1598
|
+
function completeInterruptedDrop(rootStore, attributesDbi, databaseName: string, tableName: string) {
|
|
1599
|
+
logger.warn(`Completing interrupted drop of table ${databaseName}.${tableName}`);
|
|
1600
|
+
if (rootStore instanceof RocksDatabase) {
|
|
1601
|
+
for (const columnName of (rootStore as any).columns) {
|
|
1602
|
+
if (columnName.startsWith(tableName + '/')) {
|
|
1603
|
+
try {
|
|
1604
|
+
const columnStore = openRocksDatabase(rootStore.path, { name: columnName } as any);
|
|
1605
|
+
columnStore.dropSync();
|
|
1606
|
+
columnStore.close();
|
|
1607
|
+
} catch (error) {
|
|
1608
|
+
logger.warn(`Failed dropping column family ${columnName} of ${databaseName}.${tableName}`, error);
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
}
|
|
1612
|
+
} else {
|
|
1613
|
+
// LMDB reuses an existing named sub-database on open, so the stores must
|
|
1614
|
+
// be dropped too; removing only the catalog rows would let a same-name
|
|
1615
|
+
// recreate silently inherit the previous table's records.
|
|
1616
|
+
for (const { key, value } of attributesDbi.getRange({ start: tableName + '/', end: tableName + '0' })) {
|
|
1617
|
+
try {
|
|
1618
|
+
const objectStorage =
|
|
1619
|
+
value?.isPrimaryKey || (value?.indexed?.type && CUSTOM_INDEXES[value.indexed.type]?.useObjectStore);
|
|
1620
|
+
const store = (rootStore as any).openDB(key, createOpenDBIObject(!objectStorage, objectStorage) as any);
|
|
1621
|
+
// lmdb drop commits with the env's next transaction
|
|
1622
|
+
store.drop?.();
|
|
1623
|
+
} catch (error) {
|
|
1624
|
+
logger.warn(`Failed dropping store ${key} of ${databaseName}.${tableName}`, error);
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
}
|
|
1628
|
+
for (const key of attributesDbi.getKeys({ start: tableName + '/', end: tableName + '0' })) {
|
|
1629
|
+
attributesDbi.remove(key);
|
|
1630
|
+
}
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1541
1633
|
export function dropTableMeta({ table: tableName, database: databaseName }) {
|
|
1542
1634
|
const rootStore = database({ database: databaseName, table: tableName });
|
|
1543
1635
|
const removals = [];
|
package/resources/graphql.ts
CHANGED
|
@@ -109,6 +109,9 @@ async function processGraphQLSchema(gqlContent, urlPath, filePath, resources) {
|
|
|
109
109
|
for (const arg of directive.arguments) {
|
|
110
110
|
typeDef[arg.name.value] = coerceDirectiveValue(arg.value);
|
|
111
111
|
}
|
|
112
|
+
// @table is the canonical schema-defined declaration; pass the flag explicitly so
|
|
113
|
+
// the existing-Table re-assert in databases.ts::table() fires on every reload.
|
|
114
|
+
typeDef.schemaDefined = true;
|
|
112
115
|
if (typeDef.schema) typeDef.database = typeDef.schema;
|
|
113
116
|
if (!typeDef.table) typeDef.table = typeName;
|
|
114
117
|
if (typeDef.audit) typeDef.audit = typeDef.audit !== 'false';
|
package/resources/replayLogs.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RocksDatabase
|
|
1
|
+
import { RocksDatabase } from '@harperfast/rocksdb-js';
|
|
2
2
|
import { Resource } from './Resource.ts';
|
|
3
3
|
import type { Context } from './ResourceInterface.ts';
|
|
4
4
|
import * as logger from '../utility/logging/harper_logger.js';
|
|
@@ -6,10 +6,36 @@ import { DatabaseTransaction } from './DatabaseTransaction.ts';
|
|
|
6
6
|
import { RocksTransactionLogStore } from './RocksTransactionLogStore.ts';
|
|
7
7
|
import { isMainThread } from 'node:worker_threads';
|
|
8
8
|
import { RequestTarget } from './RequestTarget.ts';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
classifyAuditEntryForReplay,
|
|
11
|
+
isUndecodableValidatedWrite,
|
|
12
|
+
shouldAbortStalledReplay,
|
|
13
|
+
} from './replayLogsGuards.ts';
|
|
10
14
|
import { purgeAgedLogs } from './auditStore.ts';
|
|
11
15
|
|
|
12
16
|
let warnedReplayHappening = false;
|
|
17
|
+
|
|
18
|
+
// True when `updated` would DROP shared structures relative to `existing` — for either the classic
|
|
19
|
+
// array form or the {named, typed} Map form, and for a form change between the two. Shared
|
|
20
|
+
// structures only ever grow (ids are stable and append-only), so a shorter replayed buffer is a
|
|
21
|
+
// stale/older entry. Used to refuse a downgrade of the durable structures dictionary during replay:
|
|
22
|
+
// since the composite key is the one RecordEncoder.getStructures reads, overwriting it with fewer
|
|
23
|
+
// structures would drop ids the decoder still needs and make existing records decode to null. This
|
|
24
|
+
// mirrors saveStructures' compatibility reject (RecordEncoder.ts). See harper-pro#362.
|
|
25
|
+
export function structuresWouldShrink(existing: any, updated: any): boolean {
|
|
26
|
+
if (Array.isArray(existing)) {
|
|
27
|
+
return !Array.isArray(updated) || updated.length < existing.length;
|
|
28
|
+
}
|
|
29
|
+
if (existing && typeof existing.get === 'function') {
|
|
30
|
+
if (!updated || typeof updated.get !== 'function') return true;
|
|
31
|
+
return (
|
|
32
|
+
(updated.get('named')?.length ?? 0) < (existing.get('named')?.length ?? 0) ||
|
|
33
|
+
(updated.get('typed')?.length ?? 0) < (existing.get('typed')?.length ?? 0)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
13
39
|
export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void> {
|
|
14
40
|
if (!isMainThread) return; // ideally we don't do it like this, but for now this is predictable
|
|
15
41
|
return new Promise((resolve) => {
|
|
@@ -49,8 +75,21 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
|
|
|
49
75
|
let lastTimestamp = 0;
|
|
50
76
|
let writes = 0;
|
|
51
77
|
let skipped = 0;
|
|
78
|
+
// Track forward progress so a backlog of unwritable entries can't grind the boot thread
|
|
79
|
+
// forever (harper#1266). `noProgressRun` counts every entry processed without a successful
|
|
80
|
+
// write since the last one — undecodable/corrupt skips AND entries for a dropped table — and
|
|
81
|
+
// is reset to 0 the moment a write succeeds, so the stall bound only fires on a genuinely
|
|
82
|
+
// write-free run.
|
|
83
|
+
let noProgressRun = 0;
|
|
84
|
+
let lastProgressTime = performance.now();
|
|
52
85
|
const txnLog: RocksTransactionLogStore = (rootStore as any).auditStore;
|
|
53
86
|
for (const auditRecord of txnLog.getRange({ startFromLastFlushed: true, readUncommitted: true }) as any) {
|
|
87
|
+
if (noProgressRun > 0 && shouldAbortStalledReplay(noProgressRun, performance.now() - lastProgressTime)) {
|
|
88
|
+
logger.fatal(
|
|
89
|
+
`Aborting transaction-log replay in ${(rootStore as any).databaseName} database: ${noProgressRun} consecutive audit entries with no successful write (${skipped} skipped as unrecoverable, ${writes} replayed so far). This backlog is making no forward progress and was blocking startup (harper#1266) — typically a peer transaction log whose values reference unresolvable shared structures (harper#1163), or a backlog for a dropped table. Continuing boot without replaying the remainder; shed or relocate the oversized/undecodable peer transaction log(s), or re-clone this node, to recover the unreplayed data.`
|
|
90
|
+
);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
54
93
|
const {
|
|
55
94
|
type,
|
|
56
95
|
tableId,
|
|
@@ -66,27 +105,18 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
|
|
|
66
105
|
try {
|
|
67
106
|
if (classifyAuditEntryForReplay(extendedType, tableId, true) === 'corrupt-header') {
|
|
68
107
|
skipped++;
|
|
108
|
+
noProgressRun++;
|
|
69
109
|
continue;
|
|
70
110
|
}
|
|
71
111
|
const Table = tableById.get(tableId);
|
|
72
|
-
if (!Table)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
user: { username },
|
|
79
|
-
} as any;
|
|
80
|
-
const { primaryStore } = Table as any;
|
|
81
|
-
const target = new RequestTarget();
|
|
82
|
-
target.id = null;
|
|
83
|
-
const tableInstance: any = Table.getResource(target, context, {});
|
|
84
|
-
// TODO: If this throws an error due to being unable to access structures, we need to iterate through
|
|
85
|
-
// other transaction logs to get the latest structure. Ultimately we may have to skip records
|
|
86
|
-
if (!warnedReplayHappening) {
|
|
87
|
-
warnedReplayHappening = true;
|
|
88
|
-
console.warn('Harper was not properly shutdown, replaying transaction logs to synchronize database');
|
|
112
|
+
if (!Table) {
|
|
113
|
+
// Entry for a table this node no longer has (dropped/foreign). Not an
|
|
114
|
+
// unrecoverable skip, but still a no-progress entry — a large backlog of them
|
|
115
|
+
// must trip the stall bound rather than grind the boot thread.
|
|
116
|
+
noProgressRun++;
|
|
117
|
+
continue;
|
|
89
118
|
}
|
|
119
|
+
const { primaryStore } = Table as any;
|
|
90
120
|
let record: any;
|
|
91
121
|
try {
|
|
92
122
|
record = auditRecord.getValue(primaryStore);
|
|
@@ -97,6 +127,7 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
|
|
|
97
127
|
// (millions of these were observed in prod). The total skip count is logged
|
|
98
128
|
// once at the end of replay.
|
|
99
129
|
skipped++;
|
|
130
|
+
noProgressRun++;
|
|
100
131
|
continue;
|
|
101
132
|
}
|
|
102
133
|
if (
|
|
@@ -104,8 +135,27 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
|
|
|
104
135
|
isUndecodableValidatedWrite(type, record)
|
|
105
136
|
) {
|
|
106
137
|
skipped++;
|
|
138
|
+
noProgressRun++;
|
|
107
139
|
continue;
|
|
108
140
|
}
|
|
141
|
+
// Entry is replayable: build the context and instantiate the resource only now, so
|
|
142
|
+
// the skip paths above never pay those per-entry allocations (harper#1266).
|
|
143
|
+
const context: Context = {
|
|
144
|
+
nodeId,
|
|
145
|
+
alreadyLogged: true,
|
|
146
|
+
version,
|
|
147
|
+
expiresAt,
|
|
148
|
+
user: { username },
|
|
149
|
+
} as any;
|
|
150
|
+
const target = new RequestTarget();
|
|
151
|
+
target.id = null;
|
|
152
|
+
const tableInstance: any = Table.getResource(target, context, {});
|
|
153
|
+
// TODO: If this throws an error due to being unable to access structures, we need to iterate through
|
|
154
|
+
// other transaction logs to get the latest structure. Ultimately we may have to skip records
|
|
155
|
+
if (!warnedReplayHappening) {
|
|
156
|
+
warnedReplayHappening = true;
|
|
157
|
+
console.warn('Harper was not properly shutdown, replaying transaction logs to synchronize database');
|
|
158
|
+
}
|
|
109
159
|
if (lastTimestamp !== version) {
|
|
110
160
|
lastTimestamp = version;
|
|
111
161
|
try {
|
|
@@ -145,40 +195,62 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
|
|
|
145
195
|
tableInstance._writeInvalidate(recordId, record, options);
|
|
146
196
|
break;
|
|
147
197
|
case 'structures': {
|
|
148
|
-
const rocksTransaction = new RocksTransaction(primaryStore.store);
|
|
149
198
|
const structuresAsBinary = auditRecord.getBinaryValue(primaryStore);
|
|
150
199
|
const updatedStructures = structuresAsBinary ? primaryStore.decoder.decode(structuresAsBinary) : undefined;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
200
|
+
// Persist replayed structures where the decoder actually reads them: the RocksDB decode
|
|
201
|
+
// path (RecordEncoder.getStructures) reads `rootStore` at the COMPOSITE key
|
|
202
|
+
// [Symbol.for('structures'), name], and saveStructures writes there. This previously wrote
|
|
203
|
+
// `primaryStore` at the PLAIN key Symbol.for('structures'), which getStructures never
|
|
204
|
+
// consults — so a structure delivered only via replication stayed invisible to the decoder
|
|
205
|
+
// (records referencing it decoded to null) until a full-copy resync rewrote the row through
|
|
206
|
+
// saveStructures. See harper-pro#362 (and the #352 auth-path wedge). Because this is now the
|
|
207
|
+
// authoritative key the decoder reads, it must carry saveStructures' guards: never poison the
|
|
208
|
+
// dictionary with an undecodable value, and never downgrade it to fewer structures.
|
|
209
|
+
const encoder = primaryStore.decoder;
|
|
210
|
+
const sharedStructuresKey = [Symbol.for('structures'), encoder.name];
|
|
211
|
+
encoder.rootStore.transactionSync(
|
|
212
|
+
(txn) => {
|
|
213
|
+
// A torn/corrupt/empty structures log value decodes to null/undefined; writing it to
|
|
214
|
+
// the key the decoder reads would poison the whole table's structure dictionary.
|
|
215
|
+
if (!updatedStructures) {
|
|
163
216
|
logger.warn(
|
|
164
|
-
`
|
|
217
|
+
`Skipping a structures replay entry that did not decode to a valid structures buffer (table ${encoder.name}).`
|
|
165
218
|
);
|
|
219
|
+
return;
|
|
166
220
|
}
|
|
167
|
-
|
|
221
|
+
const existingStructuresBuffer = txn.getBinarySync(sharedStructuresKey);
|
|
222
|
+
const existingStructures = existingStructuresBuffer
|
|
223
|
+
? encoder.decode(existingStructuresBuffer)
|
|
224
|
+
: undefined;
|
|
225
|
+
// Refuse to overwrite a longer/newer durable buffer with an older/shorter replayed
|
|
226
|
+
// one — dropping ids the decoder still needs would make existing records decode to
|
|
227
|
+
// null. saveStructures rejects incompatible writes the same way (RecordEncoder.ts).
|
|
228
|
+
if (existingStructures && structuresWouldShrink(existingStructures, updatedStructures)) {
|
|
168
229
|
logger.warn(
|
|
169
|
-
`
|
|
230
|
+
`Replay log structures for table ${encoder.name} are fewer than the durable buffer; keeping the durable structures.`
|
|
170
231
|
);
|
|
232
|
+
return;
|
|
171
233
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
234
|
+
txn.putSync(sharedStructuresKey, asBinary(structuresAsBinary));
|
|
235
|
+
},
|
|
236
|
+
{ retryOnBusy: true }
|
|
237
|
+
);
|
|
238
|
+
// No in-memory assignment is needed: the remainder of the replay decodes through
|
|
239
|
+
// getStructures/loadStructures, which re-reads this composite key (now correct) whenever a
|
|
240
|
+
// record references a not-yet-loaded structure id. We deliberately do NOT route through
|
|
241
|
+
// saveStructures, which would set structureUpdate and re-log the structure during replay.
|
|
179
242
|
}
|
|
180
243
|
}
|
|
244
|
+
// Forward progress: a write was staged successfully, so reset the no-progress
|
|
245
|
+
// trackers. Doing this AFTER the switch (not before) means a slow or throwing
|
|
246
|
+
// write is neither counted as progress nor charged to the stall bound (harper#1266).
|
|
247
|
+
noProgressRun = 0;
|
|
248
|
+
lastProgressTime = performance.now();
|
|
181
249
|
} catch (err) {
|
|
250
|
+
// A write that threw made no forward progress either — count it toward the stall
|
|
251
|
+
// bound so a continuous stream of throwing writes can't grind the boot thread
|
|
252
|
+
// indefinitely (and the per-entry error log below can't spam unboundedly). harper#1266
|
|
253
|
+
noProgressRun++;
|
|
182
254
|
logger.error(`Error writing from replay of log`, err, {
|
|
183
255
|
version,
|
|
184
256
|
});
|