fix(core): update

This commit is contained in:
2023-07-26 14:16:33 +02:00
parent 801e2ad266
commit 86b2842ed2
21 changed files with 1249 additions and 894 deletions

View File

@ -2,7 +2,7 @@
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@pushrocks/taskbuffer',
version: '3.0.10',
name: '@push.rocks/taskbuffer',
version: '3.0.11',
description: 'flexible task management. TypeScript ready!'
}

View File

@ -1,5 +1,5 @@
export { Task } from './taskbuffer.classes.task.js';
export type { ITaskFunction } from './taskbuffer.classes.task.js'
export type { ITaskFunction } from './taskbuffer.classes.task.js';
export { Taskchain } from './taskbuffer.classes.taskchain.js';
export { Taskparallel } from './taskbuffer.classes.taskparallel.js';
export { TaskManager } from './taskbuffer.classes.taskmanager.js';
@ -7,6 +7,4 @@ export { TaskOnce } from './taskbuffer.classes.taskonce.js';
export { TaskRunner } from './taskbuffer.classes.taskrunner.js';
export { TaskDebounced } from './taskbuffer.classes.taskdebounced.js';
import * as distributedCoordination from './taskbuffer.classes.distributedcoordinator.js';
export {
distributedCoordination
}
export { distributedCoordination };

View File

@ -22,6 +22,9 @@ export interface IDistributedTaskRequestResult {
* this needs to correlate to the decisionInfoBasis
*/
submitterRandomId: string;
/**
* can be used while debugging
*/
considered: boolean;
rank: string;
reason: string;
@ -29,6 +32,10 @@ export interface IDistributedTaskRequestResult {
}
export abstract class AbstractDistributedCoordinator {
public abstract fireDistributedTaskRequest(infoBasisArg: IDistributedTaskRequest): Promise<IDistributedTaskRequestResult>
public abstract updateDistributedTaskRequest(infoBasisArg: IDistributedTaskRequest): Promise<void>
}
public abstract fireDistributedTaskRequest(
infoBasisArg: IDistributedTaskRequest
): Promise<IDistributedTaskRequestResult>;
public abstract updateDistributedTaskRequest(
infoBasisArg: IDistributedTaskRequest
): Promise<void>;
}

View File

@ -9,7 +9,7 @@ export interface ICronJob {
}
export interface ITaskManagerConstructorOptions {
distributedCoordinator?: AbstractDistributedCoordinator
distributedCoordinator?: AbstractDistributedCoordinator;
}
export class TaskManager {
@ -18,7 +18,7 @@ export class TaskManager {
private cronJobManager = new plugins.smarttime.CronManager();
public options: ITaskManagerConstructorOptions = {
distributedCoordinator: null
distributedCoordinator: null,
};
constructor(optionosArg: ITaskManagerConstructorOptions = {}) {
@ -78,36 +78,40 @@ export class TaskManager {
*/
public scheduleTaskByName(taskNameArg: string, cronStringArg: string) {
const taskToSchedule = this.getTaskByName(taskNameArg);
const cronJob = this.cronJobManager.addCronjob(cronStringArg, async (triggerTimeArg: number) => {
console.log(`taskbuffer schedule triggered task >>${taskToSchedule.name}<<`);
console.log(
`task >>${taskToSchedule.name}<< is ${
taskToSchedule.buffered
? `buffered with max ${taskToSchedule.bufferMax} buffered calls`
: `unbuffered`
}`
);
if (this.options.distributedCoordinator) {
console.log(`Found a distrubuted coordinator, performing distributed consultation.`);
const announcementResult = await this.options.distributedCoordinator.fireDistributedTaskRequest({
submitterRandomId: this.randomId,
status: 'requesting',
taskExecutionParallel: 1,
taskExecutionTime: triggerTimeArg,
taskExecutionTimeout: taskToSchedule.timeout,
taskName: taskToSchedule.name,
taskVersion: taskToSchedule.version,
});
const cronJob = this.cronJobManager.addCronjob(
cronStringArg,
async (triggerTimeArg: number) => {
console.log(`taskbuffer schedule triggered task >>${taskToSchedule.name}<<`);
console.log(
`task >>${taskToSchedule.name}<< is ${
taskToSchedule.buffered
? `buffered with max ${taskToSchedule.bufferMax} buffered calls`
: `unbuffered`
}`
);
if (this.options.distributedCoordinator) {
console.log(`Found a distrubuted coordinator, performing distributed consultation.`);
const announcementResult =
await this.options.distributedCoordinator.fireDistributedTaskRequest({
submitterRandomId: this.randomId,
status: 'requesting',
taskExecutionParallel: 1,
taskExecutionTime: triggerTimeArg,
taskExecutionTimeout: taskToSchedule.timeout,
taskName: taskToSchedule.name,
taskVersion: taskToSchedule.version,
});
if (!announcementResult.shouldTrigger) {
console.log('distributed coordinator result: NOT EXECUTING')
return;
} else {
console.log('distributed coordinator result: CHOSEN AND EXECUTING')
if (!announcementResult.shouldTrigger) {
console.log('distributed coordinator result: NOT EXECUTING');
return;
} else {
console.log('distributed coordinator result: CHOSEN AND EXECUTING');
}
}
await taskToSchedule.trigger();
}
await taskToSchedule.trigger();
});
);
taskToSchedule.cronJob = cronJob;
}

View File

@ -1,9 +1,9 @@
import * as isounique from '@pushrocks/isounique';
import * as lik from '@pushrocks/lik';
import * as smartlog from '@pushrocks/smartlog';
import * as smartpromise from '@pushrocks/smartpromise';
import * as smartdelay from '@pushrocks/smartdelay';
import * as smartrx from '@pushrocks/smartrx';
import * as smarttime from '@pushrocks/smarttime';
import * as isounique from '@push.rocks/isounique';
import * as lik from '@push.rocks/lik';
import * as smartlog from '@push.rocks/smartlog';
import * as smartpromise from '@push.rocks/smartpromise';
import * as smartdelay from '@push.rocks/smartdelay';
import * as smartrx from '@push.rocks/smartrx';
import * as smarttime from '@push.rocks/smarttime';
export { isounique, lik, smartlog, smartpromise, smartdelay, smartrx, smarttime };