From cd555425ec7e248ba91204b07ed7f0291a23d86b Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Tue, 24 Sep 2024 12:52:26 +0100 Subject: [PATCH] chore: index with discoveryId not discoveryKey This reduces the crypto operations required during indexing, which should increase indexing performance. --- comapeo-schema-PR267+bc403d5.tgz | Bin 0 -> 93338 bytes multi-core-indexer-PR25+2537f7d.tgz | Bin 0 -> 13238 bytes package-lock.json | 14 ++++++----- package.json | 4 ++-- src/core-manager/core-index.js | 7 +++--- src/core-manager/index.js | 10 ++++---- src/core-ownership.js | 7 +++--- src/datastore/index.js | 33 +++++++++++-------------- src/index-writer/index.js | 11 ++++----- src/mapeo-project.js | 11 +++++---- test-e2e/config-import.js | 36 +++++++++++++++------------- tests/core-ownership.js | 30 ++++++++++++++++------- tests/data-type.js | 2 +- tests/datastore.js | 5 ++-- 14 files changed, 94 insertions(+), 76 deletions(-) create mode 100644 comapeo-schema-PR267+bc403d5.tgz create mode 100644 multi-core-indexer-PR25+2537f7d.tgz diff --git a/comapeo-schema-PR267+bc403d5.tgz b/comapeo-schema-PR267+bc403d5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c3cc3cfd65afa5af4982b71a3b3054921f1bd6b1 GIT binary patch literal 93338 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%0AC$ME5JO?#EL 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 6c4516853..d3846c374 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.1", "license": "MIT", "dependencies": { - "@comapeo/schema": "1.0.0", + "@comapeo/schema": "file:comapeo-schema-PR267+bc403d5.tgz", "@digidem/types": "^2.3.0", "@electron/asar": "^3.2.8", "@fastify/error": "^3.4.1", @@ -39,7 +39,7 @@ "magic-bytes.js": "^1.10.0", "map-obj": "^5.0.2", "mime": "^4.0.3", - "multi-core-indexer": "^1.0.0-alpha.10", + "multi-core-indexer": "file:multi-core-indexer-PR25+2537f7d.tgz", "p-defer": "^4.0.0", "p-event": "^6.0.1", "p-timeout": "^6.1.2", @@ -243,8 +243,9 @@ }, "node_modules/@comapeo/schema": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-1.0.0.tgz", - "integrity": "sha512-dK227I+0yg9D2y5/O5NGywx50tgeNYyUkl1uYnSmNAPlbv+r2KX9aaC9m4dEjIja2aR2VFnYn6z537ERZiahqQ==", + "resolved": "file:comapeo-schema-PR267+bc403d5.tgz", + "integrity": "sha512-9NgqM+xxDbDll4LSlK6akfat2qe48sofXOaQHUh9pKT6pVAmEaP3dMLpvixX6ddQBhFcVNz5bK1vmloq3vRdkA==", + "license": "MIT", "dependencies": { "compact-encoding": "^2.12.0", "protobufjs": "^7.2.5", @@ -5238,8 +5239,9 @@ }, "node_modules/multi-core-indexer": { "version": "1.0.0-alpha.10", - "resolved": "https://registry.npmjs.org/multi-core-indexer/-/multi-core-indexer-1.0.0-alpha.10.tgz", - "integrity": "sha512-H9QdpJ/MaelrBZw6jCcsrInE+hwUQmfz/2swtIdQNNh1IHUDGEdPkakjcZAyahpM5iIVz7EqyWO74aC03A3qSA==", + "resolved": "file:multi-core-indexer-PR25+2537f7d.tgz", + "integrity": "sha512-B8Iewe2wajm7Jxa+FHxkHTGTTNbXejci5hsegQ+4ypcsyGa2xDyfRM7xKx/b6mESJPD/NhTmIsPzNfjPA78isQ==", + "license": "MIT", "dependencies": { "@types/node": "^18.16.19", "@types/streamx": "^2.9.1", diff --git a/package.json b/package.json index 657338a8e..d09f4f36d 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,7 @@ "yazl": "^2.5.1" }, "dependencies": { - "@comapeo/schema": "1.0.0", + "@comapeo/schema": "file:comapeo-schema-PR267+bc403d5.tgz", "@digidem/types": "^2.3.0", "@electron/asar": "^3.2.8", "@fastify/error": "^3.4.1", @@ -181,7 +181,7 @@ "magic-bytes.js": "^1.10.0", "map-obj": "^5.0.2", "mime": "^4.0.3", - "multi-core-indexer": "^1.0.0-alpha.10", + "multi-core-indexer": "file:multi-core-indexer-PR25+2537f7d.tgz", "p-defer": "^4.0.0", "p-event": "^6.0.1", "p-timeout": "^6.1.2", diff --git a/src/core-manager/core-index.js b/src/core-manager/core-index.js index 79bb8de6f..d5e713204 100644 --- a/src/core-manager/core-index.js +++ b/src/core-manager/core-index.js @@ -22,13 +22,12 @@ export class CoreIndex { * @param {Object} options * @param {import('hypercore')<"binary", Buffer>} options.core Hypercore instance * @param {Buffer} options.key Buffer containing public key of this core + * @param {string} options.discoveryId discoveryId of this core * @param {Namespace} options.namespace * @param {boolean} [options.writer] Is this a writer core? */ - add({ core, key, namespace, writer = false }) { - const discoveryKey = crypto.discoveryKey(key) - const discoveryId = discoveryKey.toString('hex') - const record = { core, key, namespace } + add({ core, key, discoveryId, namespace, writer = false }) { + const record = { core, key, discoveryId, namespace } if (writer) { this.#writersByNamespace.set(namespace, record) } diff --git a/src/core-manager/index.js b/src/core-manager/index.js index 68c9a3261..3b05badd3 100644 --- a/src/core-manager/index.js +++ b/src/core-manager/index.js @@ -3,6 +3,7 @@ import Corestore from 'corestore' import { debounce } from 'throttle-debounce' import assert from 'node:assert/strict' import { sql, eq } from 'drizzle-orm' +import hCrypto from 'hypercore-crypto' import { HaveExtension, ProjectExtension } from '../generated/extensions.js' import { Logger } from '../logger.js' @@ -20,7 +21,7 @@ const WRITER_CORE_PREHAVES_DEBOUNCE_DELAY = 1000 export const kCoreManagerReplicate = Symbol('replicate core manager') /** @typedef {Hypercore<'binary', Buffer>} Core */ -/** @typedef {{ core: Core, key: Buffer, namespace: Namespace }} CoreRecord */ +/** @typedef {{ core: Core, key: Buffer, discoveryId: string, namespace: Namespace }} CoreRecord */ /** * @typedef {Object} Events * @property {(coreRecord: CoreRecord) => void} add-core @@ -273,6 +274,7 @@ export class CoreManager extends TypedEmitter { if (existingCore) return existingCore const { publicKey: key, secretKey } = keyPair + const discoveryId = hCrypto.discoveryKey(key).toString('hex') const writer = !!secretKey const core = this.#corestore.get({ keyPair, @@ -285,7 +287,7 @@ export class CoreManager extends TypedEmitter { core.setMaxListeners(0) // @ts-ignore - ensure key is defined before hypercore is ready core.key = key - this.#coreIndex.add({ core, key, namespace, writer }) + this.#coreIndex.add({ core, key, discoveryId, namespace, writer }) // **Hack** As soon as a peer is added, eagerly send a "want" for the entire // core. This ensures that the peer sends back its entire bitfield. @@ -341,9 +343,9 @@ export class CoreManager extends TypedEmitter { namespace, key ) - this.emit('add-core', { core, key, namespace }) + this.emit('add-core', { core, key, discoveryId, namespace }) - return { core, key, namespace } + return { core, key, discoveryId, namespace } } /** diff --git a/src/core-ownership.js b/src/core-ownership.js index 38a595d28..5157c8349 100644 --- a/src/core-ownership.js +++ b/src/core-ownership.js @@ -155,12 +155,13 @@ export class CoreOwnership extends TypedEmitter { * the doc with the lowest index (e.g. the first) * * @param {CoreOwnershipWithSignatures} doc - * @param {import('@comapeo/schema').VersionIdObject} version + * @param {import('@comapeo/schema').VersionDiscoveryIdObject} version * @returns {import('@comapeo/schema').CoreOwnership} */ -export function mapAndValidateCoreOwnership(doc, { coreDiscoveryKey }) { +export function mapAndValidateCoreOwnership(doc, { coreDiscoveryId }) { if ( - !coreDiscoveryKey.equals(discoveryKey(Buffer.from(doc.authCoreId, 'hex'))) + coreDiscoveryId !== + discoveryKey(Buffer.from(doc.authCoreId, 'hex')).toString('hex') ) { throw new Error('Invalid coreOwnership record: mismatched authCoreId') } diff --git a/src/datastore/index.js b/src/datastore/index.js index 43712654f..f321d75c5 100644 --- a/src/datastore/index.js +++ b/src/datastore/index.js @@ -2,7 +2,6 @@ import { TypedEmitter } from 'tiny-typed-emitter' import { encode, decode, getVersionId, parseVersionId } from '@comapeo/schema' import MultiCoreIndexer from 'multi-core-indexer' import pDefer from 'p-defer' -import { discoveryKey } from 'hypercore-crypto' import { NAMESPACE_SCHEMAS } from '../constants.js' import { createMap } from '../utils.js' /** @import { MapeoDoc } from '@comapeo/schema' */ @@ -36,7 +35,7 @@ export class DataStore extends TypedEmitter { #coreManager #namespace #batch - #writerCore + #writerCoreRecord #coreIndexer /** @type {Map>} */ #pendingIndex = new Map() @@ -61,7 +60,7 @@ export class DataStore extends TypedEmitter { NAMESPACE_SCHEMAS[namespace], () => new Set() ) - this.#writerCore = coreManager.getWriterCore(namespace).core + this.#writerCoreRecord = coreManager.getWriterCore(namespace) const cores = coreManager.getCores(namespace).map((cr) => cr.core) this.#coreIndexer = new MultiCoreIndexer(cores, { storage, @@ -88,7 +87,7 @@ export class DataStore extends TypedEmitter { } get writerCore() { - return this.#writerCore + return this.#writerCoreRecord.core } getIndexState() { @@ -105,9 +104,11 @@ export class DataStore extends TypedEmitter { // Writes to the writerCore need to wait until the entry is indexed before // returning, so we check if any incoming entry has a pending promise for (const entry of entries) { - if (!entry.key.equals(this.#writerCore.key)) continue + if (entry.discoveryId !== this.#writerCoreRecord.discoveryId) { + continue + } const versionId = getVersionId({ - coreDiscoveryKey: discoveryKey(entry.key), + coreDiscoveryId: entry.discoveryId, index: entry.index, }) const pending = this.#pendingIndex.get(versionId) @@ -153,23 +154,20 @@ export class DataStore extends TypedEmitter { // same tick, so we can't know their index before append resolves. const deferredAppend = pDefer() this.#pendingAppends.add(deferredAppend.promise) - const { length } = await this.#writerCore.append(block) + const { length } = await this.writerCore.append(block) deferredAppend.resolve() this.#pendingAppends.delete(deferredAppend.promise) const index = length - 1 - const coreDiscoveryKey = this.#writerCore.discoveryKey - if (!coreDiscoveryKey) { - throw new Error('Writer core is not ready') - } - const versionId = getVersionId({ coreDiscoveryKey, index }) + const coreDiscoveryId = this.#writerCoreRecord.discoveryId + const versionId = getVersionId({ coreDiscoveryId, index }) /** @type {import('p-defer').DeferredPromise} */ const deferred = pDefer() this.#pendingIndex.set(versionId, deferred) await deferred.promise return /** @type {Extract} */ ( - decode(block, { coreDiscoveryKey, index }) + decode(block, { coreDiscoveryId, index }) ) } @@ -189,13 +187,10 @@ export class DataStore extends TypedEmitter { /** @param {Buffer} buf */ async writeRaw(buf) { - const { length } = await this.#writerCore.append(buf) + const { length } = await this.writerCore.append(buf) const index = length - 1 - const coreDiscoveryKey = this.#writerCore.discoveryKey - if (!coreDiscoveryKey) { - throw new Error('Writer core is not ready') - } - const versionId = getVersionId({ coreDiscoveryKey, index }) + const coreDiscoveryId = this.#writerCoreRecord.discoveryId + const versionId = getVersionId({ coreDiscoveryId, index }) return versionId } diff --git a/src/index-writer/index.js b/src/index-writer/index.js index ae643b99f..813c5302d 100644 --- a/src/index-writer/index.js +++ b/src/index-writer/index.js @@ -2,9 +2,8 @@ import { decode } from '@comapeo/schema' import SqliteIndexer from '@mapeo/sqlite-indexer' import { getTableConfig } from 'drizzle-orm/sqlite-core' import { getBacklinkTableName } from '../schema/utils.js' -import { discoveryKey } from 'hypercore-crypto' import { Logger } from '../logger.js' -/** @import { MapeoDoc, VersionIdObject } from '@comapeo/schema' */ +/** @import { MapeoDoc, VersionDiscoveryIdObject } from '@comapeo/schema' */ /** @import { MapeoDocTables } from '../datatype/index.js' */ /** @@ -32,7 +31,7 @@ export class IndexWriter { * @param {object} opts * @param {import('better-sqlite3').Database} opts.sqlite * @param {TTables[]} opts.tables - * @param {(doc: MapeoDocInternal, version: VersionIdObject) => MapeoDoc} [opts.mapDoc] optionally transform a document prior to indexing. Can also validate, if an error is thrown then the document will not be indexed + * @param {(doc: MapeoDocInternal, version: VersionDiscoveryIdObject) => MapeoDoc} [opts.mapDoc] optionally transform a document prior to indexing. Can also validate, if an error is thrown then the document will not be indexed * @param {typeof import('@mapeo/sqlite-indexer').defaultGetWinner} [opts.getWinner] custom function to determine the "winner" of two forked documents. Defaults to choosing the document with the most recent `updatedAt` * @param {Logger} [opts.logger] */ @@ -71,13 +70,13 @@ export class IndexWriter { const queued = {} /** @type {IndexedDocIds} */ const indexed = {} - for (const { block, key, index } of entries) { + for (const { block, discoveryId, index } of entries) { /** @type {MapeoDoc} */ let doc try { - const version = { coreDiscoveryKey: discoveryKey(key), index } + const version = { coreDiscoveryId: discoveryId, index } doc = this.#mapDoc(decode(block, version), version) } catch (e) { - this.#l.log('Could not decode entry %d of %h', index, key) + this.#l.log('Could not decode entry %d of %S', index, discoveryId) // Unknown or invalid entry - silently ignore continue } diff --git a/src/mapeo-project.js b/src/mapeo-project.js index dc92ba03b..19c33eb03 100644 --- a/src/mapeo-project.js +++ b/src/mapeo-project.js @@ -461,7 +461,7 @@ export class MapeoProject extends TypedEmitter { projectSettingsEntries.push(entry) } else if (schemaName === 'translation') { const doc = decode(entry.block, { - coreDiscoveryKey: entry.key, + coreDiscoveryId: entry.discoveryId, index: entry.index, }) @@ -966,11 +966,14 @@ function getCoreKeypairs({ projectKey, projectSecretKey, keyManager }) { * e.g. version.coreKey should equal docId * * @param {import('@comapeo/schema').DeviceInfo} doc - * @param {import('@comapeo/schema').VersionIdObject} version + * @param {import('@comapeo/schema').VersionDiscoveryIdObject} version * @returns {import('@comapeo/schema').DeviceInfo} */ -function mapAndValidateDeviceInfo(doc, { coreDiscoveryKey }) { - if (!coreDiscoveryKey.equals(discoveryKey(Buffer.from(doc.docId, 'hex')))) { +function mapAndValidateDeviceInfo(doc, { coreDiscoveryId }) { + if ( + coreDiscoveryId !== + discoveryKey(Buffer.from(doc.docId, 'hex')).toString('hex') + ) { throw new Error( 'Invalid deviceInfo record, cannot write deviceInfo for another device' ) diff --git a/test-e2e/config-import.js b/test-e2e/config-import.js index 55e0420ed..5ef4e12a1 100644 --- a/test-e2e/config-import.js +++ b/test-e2e/config-import.js @@ -3,22 +3,26 @@ import assert from 'node:assert/strict' import { createManager } from './utils.js' import { defaultConfigPath } from '../tests/helpers/default-config.js' -test(' config import - load default config when passed a path to `createProject`', async (t) => { - const manager = createManager('device0', t) - const project = await manager.getProject( - await manager.createProject({ configPath: defaultConfigPath }) - ) - const presets = await project.preset.getMany() - const fields = await project.field.getMany() - const translations = await project.$translation.dataType.getMany() - assert.equal(presets.length, 28, 'correct number of loaded presets') - assert.equal(fields.length, 11, 'correct number of loaded fields') - assert.equal( - translations.length, - 870, - 'correct number of loaded translations' - ) -}) +test( + ' config import - load default config when passed a path to `createProject`', + { only: true }, + async (t) => { + const manager = createManager('device0', t) + const project = await manager.getProject( + await manager.createProject({ configPath: defaultConfigPath }) + ) + const presets = await project.preset.getMany() + const fields = await project.field.getMany() + const translations = await project.$translation.dataType.getMany() + assert.equal(presets.length, 28, 'correct number of loaded presets') + assert.equal(fields.length, 11, 'correct number of loaded fields') + assert.equal( + translations.length, + 870, + 'correct number of loaded translations' + ) + } +) test('config import - load and re-load config manually', async (t) => { const manager = createManager('device0', t) diff --git a/tests/core-ownership.js b/tests/core-ownership.js index bcee185fd..6c449b1ec 100644 --- a/tests/core-ownership.js +++ b/tests/core-ownership.js @@ -7,14 +7,14 @@ import { getWinner, } from '../src/core-ownership.js' import { randomBytes } from 'node:crypto' -import { parseVersionId, getVersionId } from '@comapeo/schema' +import { getVersionId } from '@comapeo/schema' import { discoveryKey } from 'hypercore-crypto' /** @import { Namespace } from '../src/types.js' */ test('Valid coreOwnership record', () => { const validDoc = generateValidDoc() - const version = parseVersionId(validDoc.versionId) + const version = parseVersionIdInternal(validDoc.versionId) const mappedDoc = mapAndValidateCoreOwnership(validDoc, version) @@ -32,7 +32,7 @@ test('Valid coreOwnership record', () => { test('Invalid coreOwnership signatures', () => { const validDoc = generateValidDoc() - const version = parseVersionId(validDoc.versionId) + const version = parseVersionIdInternal(validDoc.versionId) for (const key of Object.keys(validDoc.coreSignatures)) { const invalidDoc = { @@ -54,7 +54,7 @@ test('Invalid coreOwnership signatures', () => { test('Invalid coreOwnership docId and coreIds', () => { const validDoc = generateValidDoc() - const version = parseVersionId(validDoc.versionId) + const version = parseVersionIdInternal(validDoc.versionId) for (const key of Object.keys(validDoc.coreSignatures)) { const invalidDoc = { @@ -73,7 +73,7 @@ test('Invalid coreOwnership docId and coreIds', () => { test('Invalid coreOwnership docId and coreIds (wrong length)', () => { const validDoc = generateValidDoc() - const version = parseVersionId(validDoc.versionId) + const version = parseVersionIdInternal(validDoc.versionId) for (const key of Object.keys(validDoc.coreSignatures)) { const namespace = /** @type {Namespace} */ (key) @@ -94,15 +94,15 @@ test('Invalid coreOwnership docId and coreIds (wrong length)', () => { test('Invalid - different coreKey', () => { const validDoc = generateValidDoc() const version = { - ...parseVersionId(validDoc.versionId), - coreDiscoveryKey: discoveryKey(randomBytes(32)), + ...parseVersionIdInternal(validDoc.versionId), + coreDiscoveryId: discoveryKey(randomBytes(32)).toString('hex'), } assert.throws(() => mapAndValidateCoreOwnership(validDoc, version)) }) test('getWinner (coreOwnership)', () => { const validDoc = generateValidDoc() - const version = parseVersionId(validDoc.versionId) + const version = parseVersionIdInternal(validDoc.versionId) const docA = { ...validDoc, @@ -218,3 +218,17 @@ function generateValidDoc() { } return validDoc } + +/** + * Tests need to parse a versionId to a discoveryId and index, vs the public + * method parseVersionId which parses to a discoveryKey and index. + * + * @param {string} versionId + */ +function parseVersionIdInternal(versionId) { + const [coreDiscoveryId, index] = versionId.split('/') + return { + coreDiscoveryId, + index: Number.parseInt(index), + } +} diff --git a/tests/data-type.js b/tests/data-type.js index fd78752b9..997510a48 100644 --- a/tests/data-type.js +++ b/tests/data-type.js @@ -329,7 +329,7 @@ async function testenv(opts = {}) { try { if (schemaName === 'translation') { const doc = decode(entry.block, { - coreDiscoveryKey: entry.key, + coreDiscoveryId: entry.discoveryId, index: entry.index, }) assert( diff --git a/tests/datastore.js b/tests/datastore.js index 57440d375..780210c14 100644 --- a/tests/datastore.js +++ b/tests/datastore.js @@ -37,9 +37,8 @@ test('read and write', async () => { coreManager: cm, namespace: 'data', batch: async (entries) => { - for (const { index, key } of entries) { - const coreDiscoveryKey = discoveryKey(key) - const versionId = getVersionId({ coreDiscoveryKey, index }) + for (const { index, discoveryId } of entries) { + const versionId = discoveryId + '/' + index indexedVersionIds.push(versionId) } return {}