Skip to content

Give JS example how to use taskId #40

@rymsha

Description

@rymsha

Give example how to prevent multiple tasks to be executed in parallel.
For instance in Java it is:

    public static void checkAlreadySubmitted( final TaskInfo currentTaskInfo, final Collection<TaskInfo> allTasks )
    {
        final TaskId currentTaskId = currentTaskInfo.getId();
        final String currentTaskName = currentTaskInfo.getName();
        final Instant currentTaskStartTime = currentTaskInfo.getStartTime();

        final Optional<TaskInfo> priorTask = allTasks.stream()
            .filter( ti -> !Objects.equals( ti.getId(), currentTaskId ) )
            .filter( ti -> currentTaskName.equals( ti.getName() ) )
            .filter( ti -> !ti.isDone() )
            .filter( ti -> ti.getStartTime().isBefore( currentTaskStartTime ) ||
                ti.getStartTime().equals( currentTaskStartTime ) && ti.getId().toString().compareTo( currentTaskId.toString() ) < 0 )
            .findAny();

        if ( priorTask.isPresent() )
        {
            throw new IllegalStateException( "Task " + currentTaskName + " [" + priorTask.get().getId() + "] is already submitted" );
        }
    }

Maybe it is implemented in js-utils already and we need to give a reference to it?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions