@powerhousedao/reactor 4.1.0-dev.72 → 4.1.0-dev.74

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.
Files changed (52) hide show
  1. package/dist/src/core/reactor.d.ts +6 -12
  2. package/dist/src/core/reactor.d.ts.map +1 -1
  3. package/dist/src/core/reactor.js +127 -79
  4. package/dist/src/core/reactor.js.map +1 -1
  5. package/dist/src/events/types.d.ts +14 -0
  6. package/dist/src/events/types.d.ts.map +1 -1
  7. package/dist/src/events/types.js +6 -0
  8. package/dist/src/events/types.js.map +1 -1
  9. package/dist/src/executor/simple-job-executor-manager.d.ts +4 -1
  10. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  11. package/dist/src/executor/simple-job-executor-manager.js +86 -36
  12. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  13. package/dist/src/executor/simple-job-executor.d.ts +12 -7
  14. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  15. package/dist/src/executor/simple-job-executor.js +281 -62
  16. package/dist/src/executor/simple-job-executor.js.map +1 -1
  17. package/dist/src/executor/types.d.ts +3 -2
  18. package/dist/src/executor/types.d.ts.map +1 -1
  19. package/dist/src/executor/types.js.map +1 -1
  20. package/dist/src/index.d.ts +8 -2
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +8 -1
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +15 -0
  25. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -0
  26. package/dist/src/job-tracker/in-memory-job-tracker.js +78 -0
  27. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -0
  28. package/dist/src/job-tracker/index.d.ts +3 -0
  29. package/dist/src/job-tracker/index.d.ts.map +1 -0
  30. package/dist/src/job-tracker/index.js +2 -0
  31. package/dist/src/job-tracker/index.js.map +1 -0
  32. package/dist/src/job-tracker/interfaces.d.ts +41 -0
  33. package/dist/src/job-tracker/interfaces.d.ts.map +1 -0
  34. package/dist/src/job-tracker/interfaces.js +2 -0
  35. package/dist/src/job-tracker/interfaces.js.map +1 -0
  36. package/dist/src/queue/types.d.ts +4 -4
  37. package/dist/src/queue/types.d.ts.map +1 -1
  38. package/dist/src/read-models/coordinator.d.ts +38 -0
  39. package/dist/src/read-models/coordinator.d.ts.map +1 -0
  40. package/dist/src/read-models/coordinator.js +62 -0
  41. package/dist/src/read-models/coordinator.js.map +1 -0
  42. package/dist/src/read-models/document-view.d.ts +4 -5
  43. package/dist/src/read-models/document-view.d.ts.map +1 -1
  44. package/dist/src/read-models/document-view.js +170 -119
  45. package/dist/src/read-models/document-view.js.map +1 -1
  46. package/dist/src/read-models/interfaces.d.ts +29 -0
  47. package/dist/src/read-models/interfaces.d.ts.map +1 -0
  48. package/dist/src/read-models/interfaces.js +2 -0
  49. package/dist/src/read-models/interfaces.js.map +1 -0
  50. package/dist/src/storage/interfaces.d.ts +5 -20
  51. package/dist/src/storage/interfaces.d.ts.map +1 -1
  52. package/package.json +3 -3
@@ -7,15 +7,17 @@ export class SimpleJobExecutorManager {
7
7
  executorFactory;
8
8
  eventBus;
9
9
  queue;
10
+ jobTracker;
10
11
  executors = [];
11
12
  isRunning = false;
12
13
  activeJobs = 0;
13
14
  totalJobsProcessed = 0;
14
15
  unsubscribe;
15
- constructor(executorFactory, eventBus, queue) {
16
+ constructor(executorFactory, eventBus, queue, jobTracker) {
16
17
  this.executorFactory = executorFactory;
17
18
  this.eventBus = eventBus;
18
19
  this.queue = queue;
20
+ this.jobTracker = jobTracker;
19
21
  }
20
22
  async start(numExecutors) {
21
23
  if (this.isRunning) {
@@ -70,58 +72,106 @@ export class SimpleJobExecutorManager {
70
72
  };
71
73
  }
72
74
  async processNextJob() {
75
+ // dequeue next available job
76
+ let handle;
73
77
  try {
74
- // Dequeue next available job
75
- const handle = await this.queue.dequeueNext();
76
- if (!handle) {
77
- return;
78
- }
79
- this.activeJobs++;
80
- // Find an available executor (simple round-robin)
81
- const executorIndex = this.totalJobsProcessed % this.executors.length;
82
- const executor = this.executors[executorIndex];
83
- // Execute the job
84
- const result = await executor.executeJob(handle.job);
85
- // Update job status in queue
86
- if (result.success) {
87
- await this.queue.completeJob(handle.job.id);
88
- }
89
- else {
90
- // Handle retry logic
91
- const retryCount = handle.job.retryCount || 0;
92
- const maxRetries = handle.job.maxRetries || 0;
93
- if (retryCount < maxRetries) {
78
+ handle = await this.queue.dequeueNext();
79
+ }
80
+ catch (error) {
81
+ console.error("Error dequeueing job:", error);
82
+ return;
83
+ }
84
+ if (!handle) {
85
+ return;
86
+ }
87
+ // start the job execution
88
+ handle.start();
89
+ this.activeJobs++;
90
+ this.jobTracker.markRunning(handle.job.id);
91
+ // Find an available executor (simple round-robin)
92
+ const executorIndex = this.totalJobsProcessed % this.executors.length;
93
+ const executor = this.executors[executorIndex];
94
+ // execute the job
95
+ let result;
96
+ try {
97
+ result = await executor.executeJob(handle.job);
98
+ }
99
+ catch (error) {
100
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
101
+ console.error(`Error executing job ${handle.job.id}:`, errorMessage);
102
+ handle.fail(errorMessage);
103
+ this.activeJobs--;
104
+ this.jobTracker.markFailed(handle.job.id, errorMessage);
105
+ await this.checkForMoreJobs();
106
+ return;
107
+ }
108
+ // handle the result
109
+ if (result.success) {
110
+ handle.complete();
111
+ this.totalJobsProcessed++;
112
+ this.jobTracker.markCompleted(handle.job.id, result.operations);
113
+ }
114
+ else {
115
+ // Handle retry logic
116
+ const retryCount = handle.job.retryCount || 0;
117
+ const maxRetries = handle.job.maxRetries || 0;
118
+ if (retryCount < maxRetries) {
119
+ try {
94
120
  await this.queue.retryJob(handle.job.id, result.error?.message);
95
121
  }
96
- else {
97
- await this.queue.failJob(handle.job.id, result.error?.message);
122
+ catch (error) {
123
+ const errorMessage = error instanceof Error ? error.message : "Failed to retry job";
124
+ console.error(`Failed to retry job ${handle.job.id}:`, errorMessage);
125
+ this.jobTracker.markFailed(handle.job.id, errorMessage);
126
+ handle.fail(errorMessage);
98
127
  }
99
128
  }
100
- this.totalJobsProcessed++;
129
+ else {
130
+ const errorMessage = result.error?.message || "Unknown error";
131
+ this.jobTracker.markFailed(handle.job.id, errorMessage);
132
+ handle.fail(errorMessage);
133
+ }
134
+ }
135
+ this.activeJobs--;
136
+ await this.checkForMoreJobs();
137
+ }
138
+ async checkForMoreJobs() {
139
+ if (!this.isRunning) {
140
+ return;
141
+ }
142
+ let hasMore;
143
+ try {
144
+ hasMore = await this.queue.hasJobs();
101
145
  }
102
146
  catch (error) {
103
- console.error("Error processing job:", error);
147
+ console.error("Error checking for more jobs:", error);
148
+ return;
104
149
  }
105
- finally {
106
- this.activeJobs--;
107
- // Check if there are more jobs to process
108
- if (this.isRunning) {
109
- const hasMore = await this.queue.hasJobs();
110
- if (hasMore) {
111
- await this.processNextJob();
112
- }
113
- }
150
+ if (hasMore) {
151
+ await this.processNextJob();
114
152
  }
115
153
  }
116
154
  async processExistingJobs() {
117
- const hasJobs = await this.queue.hasJobs();
155
+ let hasJobs;
156
+ try {
157
+ hasJobs = await this.queue.hasJobs();
158
+ }
159
+ catch (error) {
160
+ console.error("Error checking for existing jobs:", error);
161
+ return;
162
+ }
118
163
  if (hasJobs) {
119
164
  // Start processing up to the number of executors
120
165
  const promises = [];
121
166
  for (let i = 0; i < Math.min(this.executors.length, 5); i++) {
122
167
  promises.push(this.processNextJob());
123
168
  }
124
- await Promise.all(promises);
169
+ try {
170
+ await Promise.all(promises);
171
+ }
172
+ catch (error) {
173
+ console.error("Error processing existing jobs:", error);
174
+ }
125
175
  }
126
176
  }
127
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simple-job-executor-manager.js","sourceRoot":"","sources":["../../../src/executor/simple-job-executor-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-job-executor-manager.js","sourceRoot":"","sources":["../../../src/executor/simple-job-executor-manager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { IDocumentOperationStorage, IDocumentStorage } from "document-drive";
2
+ import type { IEventBus } from "../events/interfaces.js";
2
3
  import type { Job } from "../queue/types.js";
3
4
  import type { IDocumentModelRegistry } from "../registry/interfaces.js";
5
+ import type { IOperationStore } from "../storage/interfaces.js";
4
6
  import type { IJobExecutor } from "./interfaces.js";
5
7
  import type { JobResult } from "./types.js";
6
8
  /**
@@ -10,20 +12,23 @@ export declare class SimpleJobExecutor implements IJobExecutor {
10
12
  private registry;
11
13
  private documentStorage;
12
14
  private operationStorage;
13
- constructor(registry: IDocumentModelRegistry, documentStorage: IDocumentStorage, operationStorage: IDocumentOperationStorage);
15
+ private operationStore;
16
+ private eventBus;
17
+ constructor(registry: IDocumentModelRegistry, documentStorage: IDocumentStorage, operationStorage: IDocumentOperationStorage, operationStore: IOperationStore, eventBus: IEventBus);
14
18
  /**
15
- * Execute a single job by applying its action through the appropriate reducer.
19
+ * Execute a single job by applying all its operations through the appropriate reducers.
20
+ * Operations are processed sequentially in order.
16
21
  */
17
22
  executeJob(job: Job): Promise<JobResult>;
18
23
  /**
19
- * Execute a CREATE_DOCUMENT system action.
24
+ * Execute a CREATE_DOCUMENT system action for a single operation.
20
25
  * This creates a new document in storage along with its initial operations.
21
26
  */
22
- private executeCreateDocument;
27
+ private executeCreateDocumentOperation;
23
28
  /**
24
- * Execute a DELETE_DOCUMENT system action.
25
- * This deletes a document from storage.
29
+ * Execute a DELETE_DOCUMENT system action for a single operation.
30
+ * This deletes a document from legacy storage and writes the operation to IOperationStore.
26
31
  */
27
- private executeDeleteDocument;
32
+ private executeDeleteDocumentOperation;
28
33
  }
29
34
  //# sourceMappingURL=simple-job-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-job-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/simple-job-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAU5C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAElD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;gBAFhB,QAAQ,EAAE,sBAAsB,EAChC,eAAe,EAAE,gBAAgB,EACjC,gBAAgB,EAAE,yBAAyB;IAGrD;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAyE9C;;;OAGG;YACW,qBAAqB;IAmDnC;;;OAGG;YACW,qBAAqB;CA6CpC"}
1
+ {"version":3,"file":"simple-job-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/simple-job-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AASxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAElD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;gBAJR,QAAQ,EAAE,sBAAsB,EAChC,eAAe,EAAE,gBAAgB,EACjC,gBAAgB,EAAE,yBAAyB,EAC3C,cAAc,EAAE,eAAe,EAC/B,QAAQ,EAAE,SAAS;IAG7B;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IA4L9C;;;OAGG;YACW,8BAA8B;IAkJ5C;;;OAGG;YACW,8BAA8B;CAsI7C"}