private void createOrPollRangeForSparkManagedJob()

in server/src/main/java/org/apache/cassandra/sidecar/handlers/restore/CreateRestoreSliceHandler.java [160:212]


    private void createOrPollRangeForSparkManagedJob(RoutingContext context,
                                                     InstanceMetadata instance,
                                                     RestoreJob job,
                                                     RestoreSlice slice)
    {
        RestoreJobProgressTracker.Status status;
        String uploadId = RestoreJobUtil.generateUniqueUploadId(job.jobId, slice.sliceId());
        RestoreRange range = RestoreRange.builderFromSlice(slice)
                                         .ownerInstance(instance)
                                         .stageDirectory(Paths.get(instance.stagingDir()), uploadId)
                                         .build();

        try
        {
            status = restoreJobManagerGroup.trySubmit(instance, range, job);
        }
        catch (RestoreJobFatalException ex)
        {
            String errorMessage = "Restore slice failed. jobId=" + slice.jobId() + " sliceId=" + slice.sliceId();
            logger.error(errorMessage, ex);
            // propagate the restore slice failure message to client with custom server error status code
            context.fail(wrapHttpException(HttpResponseStatus.valueOf(SERVER_ERROR_RESTORE_JOB_FAILED),
                                           errorMessage,
                                           ex));
            return;
        }

        logger.info("slice is {}. slice key {}", status, slice.key());

        switch (status)
        {
            case CREATED:
                context.response()
                       .setStatusCode(HttpResponseStatus.CREATED.code())
                       .end();
                break;
            case PENDING:
                context.response()
                       .setStatusCode(HttpResponseStatus.ACCEPTED.code())
                       .end();
                break;
            case COMPLETED:
                context.response()
                       .setStatusCode(HttpResponseStatus.OK.code())
                       .end();
                break;
            default:
                logger.error("Unknown restore slice status. jobId={}, sliceId={}, status={}",
                             slice.jobId(), slice.sliceId(), status);
                context.fail(HttpResponseStatus.INTERNAL_SERVER_ERROR.code());
                break;
        }
    }