syntax = "proto3";

package flyteidl.plugins;

option go_package = "github.com/lyft/flyteidl/gen/pb-go/flyteidl/plugins";

// Describes a job that can process independent pieces of data concurrently. Multiple copies of the runnable component
// will be executed concurrently.
message ArrayJob {
    // Defines the minimum number of instances to bring up concurrently at any given point. Note that this is an
    // optimistic restriction and that, due to network partitioning or other failures, the actual number of currently
    // running instances might be more. This has to be a positive number if assigned. Default value is size.
    int64 parallelism = 1;

    // Defines the number of instances to launch at most. This number should match the size of the input if the job
    // requires processing of all input data. This has to be a positive number.
    // +required.
    int64 size = 2;

    // An absolute number of the minimum number of successful completions of subtasks. As soon as this criteria is met,
    // the array job will be marked as successful and outputs will be computed. This has to be a non-negative number if
    // assigned. Default value is size.
    int64 min_successes = 3;
}
