@solidxai/core 0.1.0 → 0.1.2
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/dist/dtos/create-saved-filters.dto.d.ts.map +1 -1
- package/dist/dtos/create-saved-filters.dto.js.map +1 -1
- package/dist/entities/chatter-message.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message.entity.js +2 -0
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/helpers/schematic.service.d.ts.map +1 -1
- package/dist/helpers/schematic.service.js +6 -2
- package/dist/helpers/schematic.service.js.map +1 -1
- package/dist/jobs/api-email-queue-options.d.ts.map +1 -1
- package/dist/jobs/api-email-queue-options.js +2 -2
- package/dist/jobs/api-email-queue-options.js.map +1 -1
- package/dist/jobs/chatter-queue-options.js +2 -2
- package/dist/jobs/chatter-queue-options.js.map +1 -1
- package/dist/jobs/computed-field-evaluation-queue-options.js +2 -2
- package/dist/jobs/computed-field-evaluation-queue-options.js.map +1 -1
- package/dist/jobs/database/api-email-queue-options-database.js +2 -2
- package/dist/jobs/database/api-email-queue-options-database.js.map +1 -1
- package/dist/jobs/database/computed-field-evaluation-queue-options-database.js +2 -2
- package/dist/jobs/database/computed-field-evaluation-queue-options-database.js.map +1 -1
- package/dist/jobs/database/generate-code-queue-options-database.js +2 -2
- package/dist/jobs/database/generate-code-queue-options-database.js.map +1 -1
- package/dist/jobs/database/msg91-sms-queue-database-options.d.ts.map +1 -1
- package/dist/jobs/database/msg91-sms-queue-database-options.js +2 -2
- package/dist/jobs/database/msg91-sms-queue-database-options.js.map +1 -1
- package/dist/jobs/database/msg91-whatsapp-queue-options-database.js +2 -2
- package/dist/jobs/database/msg91-whatsapp-queue-options-database.js.map +1 -1
- package/dist/jobs/database/otp-queue-options-database.d.ts.map +1 -1
- package/dist/jobs/database/otp-queue-options-database.js +2 -2
- package/dist/jobs/database/otp-queue-options-database.js.map +1 -1
- package/dist/jobs/database/smtp-email-queue-options-database.js +1 -1
- package/dist/jobs/database/smtp-email-queue-options-database.js.map +1 -1
- package/dist/jobs/database/test-queue-options-database.js +2 -2
- package/dist/jobs/database/test-queue-options-database.js.map +1 -1
- package/dist/jobs/database/three60-whatsapp-queue-options-database.js +2 -2
- package/dist/jobs/database/three60-whatsapp-queue-options-database.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-queue-options.js +2 -2
- package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +1 -1
- package/dist/jobs/database/twilio-sms-queue-database-options.js +2 -2
- package/dist/jobs/database/twilio-sms-queue-database-options.js.map +1 -1
- package/dist/jobs/generate-code-queue-options.js +2 -2
- package/dist/jobs/generate-code-queue-options.js.map +1 -1
- package/dist/jobs/msg91-otp-queue-options.d.ts.map +1 -1
- package/dist/jobs/msg91-otp-queue-options.js +2 -2
- package/dist/jobs/msg91-otp-queue-options.js.map +1 -1
- package/dist/jobs/msg91-sms-queue-options.d.ts.map +1 -1
- package/dist/jobs/msg91-sms-queue-options.js +2 -2
- package/dist/jobs/msg91-sms-queue-options.js.map +1 -1
- package/dist/jobs/msg91-whatsapp-queue-options.d.ts.map +1 -1
- package/dist/jobs/msg91-whatsapp-queue-options.js +2 -2
- package/dist/jobs/msg91-whatsapp-queue-options.js.map +1 -1
- package/dist/jobs/smtp-email-queue-options.d.ts.map +1 -1
- package/dist/jobs/smtp-email-queue-options.js +1 -1
- package/dist/jobs/smtp-email-queue-options.js.map +1 -1
- package/dist/jobs/test-queue-options.d.ts.map +1 -1
- package/dist/jobs/test-queue-options.js +2 -2
- package/dist/jobs/test-queue-options.js.map +1 -1
- package/dist/jobs/three60-whatsapp-queue-options.d.ts.map +1 -1
- package/dist/jobs/three60-whatsapp-queue-options.js +2 -2
- package/dist/jobs/three60-whatsapp-queue-options.js.map +1 -1
- package/dist/jobs/three60-whatsapp-subscriber.service.js +2 -2
- package/dist/jobs/three60-whatsapp-subscriber.service.js.map +1 -1
- package/dist/jobs/trigger-mcp-client-queue-options.js +2 -2
- package/dist/jobs/trigger-mcp-client-queue-options.js.map +1 -1
- package/dist/jobs/twilio-sms-queue-options.js +2 -2
- package/dist/jobs/twilio-sms-queue-options.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +2 -1
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +34 -9
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +8 -1
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +2 -1
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +2 -1
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/queues/database-publisher.service.js +0 -1
- package/dist/services/queues/database-publisher.service.js.map +1 -1
- package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/database-subscriber.service.js +14 -1
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts +14 -1
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js +209 -66
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.d.ts +1 -0
- package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js +26 -10
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/dtos/create-saved-filters.dto.ts +10 -1
- package/src/entities/chatter-message.entity.ts +11 -1
- package/src/helpers/schematic.service.ts +6 -2
- package/src/jobs/api-email-queue-options.ts +2 -6
- package/src/jobs/chatter-queue-options.ts +2 -2
- package/src/jobs/computed-field-evaluation-queue-options.ts +2 -2
- package/src/jobs/database/api-email-queue-options-database.ts +2 -2
- package/src/jobs/database/computed-field-evaluation-queue-options-database.ts +2 -2
- package/src/jobs/database/generate-code-queue-options-database.ts +2 -2
- package/src/jobs/database/msg91-sms-queue-database-options.ts +3 -2
- package/src/jobs/database/msg91-whatsapp-queue-options-database.ts +2 -2
- package/src/jobs/database/otp-queue-options-database.ts +3 -2
- package/src/jobs/database/smtp-email-queue-options-database.ts +1 -1
- package/src/jobs/database/test-queue-options-database.ts +2 -2
- package/src/jobs/database/three60-whatsapp-queue-options-database.ts +2 -2
- package/src/jobs/database/trigger-mcp-client-queue-options.ts +2 -2
- package/src/jobs/database/twilio-sms-queue-database-options.ts +2 -2
- package/src/jobs/generate-code-queue-options.ts +2 -2
- package/src/jobs/msg91-otp-queue-options.ts +3 -8
- package/src/jobs/msg91-sms-queue-options.ts +3 -6
- package/src/jobs/msg91-whatsapp-queue-options.ts +4 -7
- package/src/jobs/smtp-email-queue-options.ts +1 -6
- package/src/jobs/test-queue-options.ts +2 -6
- package/src/jobs/three60-whatsapp-queue-options.ts +4 -7
- package/src/jobs/three60-whatsapp-subscriber.service.ts +1 -1
- package/src/jobs/trigger-mcp-client-queue-options.ts +2 -2
- package/src/jobs/twilio-sms-queue-options.ts +3 -3
- package/src/seeders/module-metadata-seeder.service.ts +2 -1
- package/src/seeders/seed-data/solid-core-metadata.json +34 -9
- package/src/services/chatter-message.service.ts +32 -26
- package/src/services/crud-helper.service.ts +1 -1
- package/src/services/model-metadata.service.ts +2 -1
- package/src/services/module-metadata.service.ts +2 -1
- package/src/services/queues/database-publisher.service.ts +1 -1
- package/src/services/queues/database-subscriber.service.ts +17 -28
- package/src/services/queues/rabbitmq-subscriber.service.ts +250 -110
- package/src/services/scheduled-jobs/scheduler.service.ts +31 -14
|
@@ -11,6 +11,7 @@ import { CronExpressionParser } from 'cron-parser';
|
|
|
11
11
|
@Injectable()
|
|
12
12
|
export class SchedulerServiceImpl implements ISchedulerService {
|
|
13
13
|
private readonly logger = new Logger(SchedulerServiceImpl.name);
|
|
14
|
+
private readonly runningJobs = new Set<string>();
|
|
14
15
|
|
|
15
16
|
constructor(
|
|
16
17
|
// @InjectRepository(ScheduledJob)
|
|
@@ -21,6 +22,11 @@ export class SchedulerServiceImpl implements ISchedulerService {
|
|
|
21
22
|
|
|
22
23
|
@Cron(CronExpression.EVERY_MINUTE)
|
|
23
24
|
async runScheduledJobs(): Promise<void> {
|
|
25
|
+
const solidSchedulerEnabled = process.env.SOLID_SCHEDULER_ENABLED || "true";
|
|
26
|
+
if (solidSchedulerEnabled.toLowerCase() !== "true") {
|
|
27
|
+
// this.logger.debug('Solid scheduler is disabled via environment variable');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
24
30
|
const solidCliRunning = process.env.SOLID_CLI_RUNNING || "false";
|
|
25
31
|
if (solidCliRunning === "true") {
|
|
26
32
|
return;
|
|
@@ -46,32 +52,43 @@ export class SchedulerServiceImpl implements ISchedulerService {
|
|
|
46
52
|
// this.logger.log(`[${now.getTime()}]: scheduler service identified ${dueJobs.length} jobs to run...`);
|
|
47
53
|
|
|
48
54
|
for (const job of dueJobs) {
|
|
49
|
-
|
|
50
|
-
try {
|
|
51
|
-
if (!this.shouldRunNow(job, now)) {
|
|
52
|
-
this.logger.log(`[${now.getTime()}]: scheduler service skipping job ${job.job}`);
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
+
const jobKey = String(job.id ?? job.scheduleName ?? job.job);
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
57
|
+
if (this.runningJobs.has(jobKey)) {
|
|
58
|
+
this.logger.log(`[${now.getTime()}]: scheduler service skipping job ${job.job} because a run is already in progress`);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
61
|
|
|
62
|
+
if (!this.shouldRunNow(job, now)) {
|
|
63
|
+
this.logger.log(`[${now.getTime()}]: scheduler service skipping job ${job.job}`);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const handler = this.solidRegistry.getScheduledJobProviderInstance(job.job);
|
|
68
|
+
if (!handler) {
|
|
69
|
+
this.logger.warn(`[${now.getTime()}]: scheduler service skipping because job handler not found: ${job.job}`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
this.runningJobs.add(jobKey);
|
|
74
|
+
this.logger.log(`[${now.getTime()}]: scheduler service attempting to run job ${job.job}`);
|
|
75
|
+
try {
|
|
62
76
|
// this.logger.log(`[${now.getTime()}]: scheduler service about to run job ${job.job}`);
|
|
63
77
|
await handler.execute(job);
|
|
64
78
|
// this.logger.log(`[${now.getTime()}]: scheduler service finished running job ${job.job}`);
|
|
65
79
|
|
|
66
80
|
job.isActive = true;
|
|
67
|
-
|
|
68
|
-
job.
|
|
81
|
+
const finishedAt = new Date();
|
|
82
|
+
job.lastRunAt = finishedAt;
|
|
83
|
+
job.nextRunAt = this.computeNextRunAt(job, finishedAt);
|
|
69
84
|
this.logger.log(`[${now.getTime()}]: scheduler service coomputed next run for ${job.job} as ${job.nextRunAt}`);
|
|
70
85
|
|
|
71
86
|
await this.scheduledJobRepo.save(job);
|
|
72
87
|
this.logger.log(`[${now.getTime()}]: scheduler service finished running job: ${job.job}`);
|
|
73
88
|
} catch (err) {
|
|
74
89
|
this.logger.error(`[${now.getTime()}]: scheduler service failed to run job ${job.job}`, err.stack);
|
|
90
|
+
} finally {
|
|
91
|
+
this.runningJobs.delete(jobKey);
|
|
75
92
|
}
|
|
76
93
|
}
|
|
77
94
|
}
|
|
@@ -172,4 +189,4 @@ export class SchedulerServiceImpl implements ISchedulerService {
|
|
|
172
189
|
return new Date(base.getTime() + 24 * 60 * 60 * 1000);
|
|
173
190
|
}
|
|
174
191
|
}
|
|
175
|
-
}
|
|
192
|
+
}
|