@soulcraft/brainy 0.53.0 → 0.54.1

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.
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Write Buffer
3
+ * Accumulates writes and flushes them in bulk to reduce S3 operations
4
+ * Implements intelligent deduplication and compression
5
+ */
6
+ import { createModuleLogger } from './logger.js';
7
+ import { getGlobalBackpressure } from './adaptiveBackpressure.js';
8
+ /**
9
+ * High-performance write buffer for bulk operations
10
+ */
11
+ export class WriteBuffer {
12
+ constructor(type, writeFunction, options) {
13
+ this.logger = createModuleLogger('WriteBuffer');
14
+ // Buffer storage
15
+ this.buffer = new Map();
16
+ // Configuration
17
+ this.maxBufferSize = 1000; // Maximum items before forced flush
18
+ this.flushInterval = 1000; // Flush every second
19
+ this.minFlushSize = 100; // Minimum items to flush (unless timeout)
20
+ this.maxRetries = 3; // Maximum retry attempts
21
+ // State
22
+ this.flushTimer = null;
23
+ this.isFlushing = false;
24
+ this.lastFlush = Date.now();
25
+ this.pendingFlush = null;
26
+ // Statistics
27
+ this.totalWrites = 0;
28
+ this.totalFlushes = 0;
29
+ this.failedWrites = 0;
30
+ this.duplicatesRemoved = 0;
31
+ // Backpressure integration
32
+ this.backpressure = getGlobalBackpressure();
33
+ this.type = type;
34
+ this.writeFunction = writeFunction;
35
+ if (options) {
36
+ this.maxBufferSize = options.maxBufferSize || this.maxBufferSize;
37
+ this.flushInterval = options.flushInterval || this.flushInterval;
38
+ this.minFlushSize = options.minFlushSize || this.minFlushSize;
39
+ }
40
+ // Start periodic flush
41
+ this.startPeriodicFlush();
42
+ }
43
+ /**
44
+ * Add item to buffer
45
+ */
46
+ async add(id, data) {
47
+ // Check if we're already at capacity
48
+ if (this.buffer.size >= this.maxBufferSize) {
49
+ // Wait for current flush to complete
50
+ if (this.pendingFlush) {
51
+ await this.pendingFlush;
52
+ }
53
+ // Force flush if still at capacity
54
+ if (this.buffer.size >= this.maxBufferSize) {
55
+ await this.flush('capacity');
56
+ }
57
+ }
58
+ // Check for duplicate and update if newer
59
+ const existing = this.buffer.get(id);
60
+ if (existing) {
61
+ // Update with newer data
62
+ existing.data = data;
63
+ existing.timestamp = Date.now();
64
+ this.duplicatesRemoved++;
65
+ }
66
+ else {
67
+ // Add new item
68
+ this.buffer.set(id, {
69
+ id,
70
+ data,
71
+ timestamp: Date.now(),
72
+ type: this.type,
73
+ retryCount: 0
74
+ });
75
+ }
76
+ this.totalWrites++;
77
+ // Check if we should flush
78
+ this.checkFlush();
79
+ }
80
+ /**
81
+ * Check if we should flush
82
+ */
83
+ checkFlush() {
84
+ const bufferSize = this.buffer.size;
85
+ const timeSinceFlush = Date.now() - this.lastFlush;
86
+ // Immediate flush conditions
87
+ if (bufferSize >= this.maxBufferSize) {
88
+ this.flush('size');
89
+ return;
90
+ }
91
+ // Time-based flush with minimum size
92
+ if (timeSinceFlush >= this.flushInterval && bufferSize >= this.minFlushSize) {
93
+ this.flush('time');
94
+ return;
95
+ }
96
+ // Adaptive flush based on system load
97
+ const backpressureStatus = this.backpressure.getStatus();
98
+ if (backpressureStatus.queueLength > 1000 && bufferSize > 10) {
99
+ // System under pressure - flush smaller batches more frequently
100
+ this.flush('pressure');
101
+ }
102
+ }
103
+ /**
104
+ * Flush buffer to storage
105
+ */
106
+ async flush(reason = 'manual') {
107
+ // Prevent concurrent flushes
108
+ if (this.isFlushing) {
109
+ if (this.pendingFlush) {
110
+ return this.pendingFlush;
111
+ }
112
+ return { successful: 0, failed: 0, duration: 0 };
113
+ }
114
+ // Nothing to flush
115
+ if (this.buffer.size === 0) {
116
+ return { successful: 0, failed: 0, duration: 0 };
117
+ }
118
+ this.isFlushing = true;
119
+ const startTime = Date.now();
120
+ // Create flush promise
121
+ this.pendingFlush = this.doFlush(reason, startTime);
122
+ try {
123
+ const result = await this.pendingFlush;
124
+ return result;
125
+ }
126
+ finally {
127
+ this.isFlushing = false;
128
+ this.pendingFlush = null;
129
+ }
130
+ }
131
+ /**
132
+ * Perform the actual flush
133
+ */
134
+ async doFlush(reason, startTime) {
135
+ const itemsToFlush = new Map();
136
+ const flushingItems = new Map();
137
+ // Take items from buffer
138
+ let count = 0;
139
+ for (const [id, item] of this.buffer.entries()) {
140
+ itemsToFlush.set(id, item.data);
141
+ flushingItems.set(id, item);
142
+ count++;
143
+ // Limit batch size for better performance
144
+ if (count >= 500) {
145
+ break;
146
+ }
147
+ }
148
+ // Remove from buffer
149
+ for (const id of itemsToFlush.keys()) {
150
+ this.buffer.delete(id);
151
+ }
152
+ this.logger.debug(`Flushing ${itemsToFlush.size} ${this.type} items - reason: ${reason}`);
153
+ try {
154
+ // Request permission from backpressure system
155
+ const opId = `flush-${Date.now()}`;
156
+ await this.backpressure.requestPermission(opId, 2); // Higher priority
157
+ try {
158
+ // Perform bulk write
159
+ await this.writeFunction(itemsToFlush);
160
+ // Success
161
+ this.backpressure.releasePermission(opId, true);
162
+ this.totalFlushes++;
163
+ this.lastFlush = Date.now();
164
+ const duration = Date.now() - startTime;
165
+ this.logger.info(`Flushed ${itemsToFlush.size} items in ${duration}ms`);
166
+ return {
167
+ successful: itemsToFlush.size,
168
+ failed: 0,
169
+ duration
170
+ };
171
+ }
172
+ catch (error) {
173
+ // Release with error
174
+ this.backpressure.releasePermission(opId, false);
175
+ throw error;
176
+ }
177
+ }
178
+ catch (error) {
179
+ this.logger.error(`Flush failed: ${error}`);
180
+ // Put items back with retry count
181
+ for (const [id, item] of flushingItems.entries()) {
182
+ item.retryCount++;
183
+ if (item.retryCount < this.maxRetries) {
184
+ // Put back for retry
185
+ this.buffer.set(id, item);
186
+ }
187
+ else {
188
+ // Max retries exceeded
189
+ this.failedWrites++;
190
+ this.logger.error(`Max retries exceeded for ${this.type} ${id}`);
191
+ }
192
+ }
193
+ const duration = Date.now() - startTime;
194
+ return {
195
+ successful: 0,
196
+ failed: itemsToFlush.size,
197
+ duration
198
+ };
199
+ }
200
+ }
201
+ /**
202
+ * Start periodic flush timer
203
+ */
204
+ startPeriodicFlush() {
205
+ if (this.flushTimer) {
206
+ return;
207
+ }
208
+ this.flushTimer = setInterval(() => {
209
+ if (this.buffer.size > 0) {
210
+ const timeSinceFlush = Date.now() - this.lastFlush;
211
+ // Flush if we have items and enough time has passed
212
+ if (timeSinceFlush >= this.flushInterval) {
213
+ this.flush('periodic').catch(error => {
214
+ this.logger.error('Periodic flush failed:', error);
215
+ });
216
+ }
217
+ }
218
+ }, Math.min(100, this.flushInterval / 2));
219
+ }
220
+ /**
221
+ * Stop periodic flush timer
222
+ */
223
+ stop() {
224
+ if (this.flushTimer) {
225
+ clearInterval(this.flushTimer);
226
+ this.flushTimer = null;
227
+ }
228
+ }
229
+ /**
230
+ * Force flush all pending writes
231
+ */
232
+ async forceFlush() {
233
+ // Flush everything regardless of size
234
+ const oldMinSize = this.minFlushSize;
235
+ this.minFlushSize = 0;
236
+ try {
237
+ const result = await this.flush('force');
238
+ // Flush any remaining items
239
+ while (this.buffer.size > 0) {
240
+ const additionalResult = await this.flush('force-remaining');
241
+ result.successful += additionalResult.successful;
242
+ result.failed += additionalResult.failed;
243
+ result.duration += additionalResult.duration;
244
+ }
245
+ return result;
246
+ }
247
+ finally {
248
+ this.minFlushSize = oldMinSize;
249
+ }
250
+ }
251
+ /**
252
+ * Get buffer statistics
253
+ */
254
+ getStats() {
255
+ return {
256
+ bufferSize: this.buffer.size,
257
+ totalWrites: this.totalWrites,
258
+ totalFlushes: this.totalFlushes,
259
+ failedWrites: this.failedWrites,
260
+ duplicatesRemoved: this.duplicatesRemoved,
261
+ avgFlushSize: this.totalFlushes > 0 ? this.totalWrites / this.totalFlushes : 0
262
+ };
263
+ }
264
+ /**
265
+ * Adjust parameters based on load
266
+ */
267
+ adjustForLoad(pendingRequests) {
268
+ if (pendingRequests > 10000) {
269
+ // Extreme load - buffer more aggressively
270
+ this.maxBufferSize = 5000;
271
+ this.flushInterval = 500;
272
+ this.minFlushSize = 500;
273
+ }
274
+ else if (pendingRequests > 1000) {
275
+ // High load
276
+ this.maxBufferSize = 2000;
277
+ this.flushInterval = 1000;
278
+ this.minFlushSize = 200;
279
+ }
280
+ else if (pendingRequests > 100) {
281
+ // Moderate load
282
+ this.maxBufferSize = 1000;
283
+ this.flushInterval = 2000;
284
+ this.minFlushSize = 100;
285
+ }
286
+ else {
287
+ // Low load - optimize for latency
288
+ this.maxBufferSize = 500;
289
+ this.flushInterval = 5000;
290
+ this.minFlushSize = 50;
291
+ }
292
+ }
293
+ }
294
+ // Global write buffers
295
+ const writeBuffers = new Map();
296
+ /**
297
+ * Get or create a write buffer
298
+ */
299
+ export function getWriteBuffer(id, type, writeFunction) {
300
+ if (!writeBuffers.has(id)) {
301
+ writeBuffers.set(id, new WriteBuffer(type, writeFunction));
302
+ }
303
+ return writeBuffers.get(id);
304
+ }
305
+ /**
306
+ * Flush all write buffers
307
+ */
308
+ export async function flushAllBuffers() {
309
+ const promises = [];
310
+ for (const buffer of writeBuffers.values()) {
311
+ promises.push(buffer.forceFlush());
312
+ }
313
+ await Promise.all(promises);
314
+ }
315
+ /**
316
+ * Clear all write buffers
317
+ */
318
+ export function clearWriteBuffers() {
319
+ for (const buffer of writeBuffers.values()) {
320
+ buffer.stop();
321
+ }
322
+ writeBuffers.clear();
323
+ }
324
+ //# sourceMappingURL=writeBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeBuffer.js","sourceRoot":"","sources":["../../src/utils/writeBuffer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soulcraft/brainy",
3
- "version": "0.53.0",
3
+ "version": "0.54.1",
4
4
  "description": "A vector graph database using HNSW indexing with Origin Private File System storage",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",