88import static org .opensearch .core .xcontent .ToXContent .EMPTY_PARAMS ;
99
1010import com .google .common .annotations .VisibleForTesting ;
11+ import com .google .common .base .Strings ;
1112import java .io .InputStream ;
1213import java .nio .charset .StandardCharsets ;
1314import java .time .Instant ;
3536import org .opensearch .index .engine .DocumentMissingException ;
3637import org .opensearch .index .engine .VersionConflictEngineException ;
3738import org .opensearch .jobscheduler .spi .ScheduledJobRunner ;
39+ import org .opensearch .sql .spark .asyncquery .model .AsyncQueryRequestContext ;
3840import org .opensearch .sql .spark .scheduler .job .ScheduledAsyncQueryJobRunner ;
3941import org .opensearch .sql .spark .scheduler .model .AsyncQuerySchedulerRequest ;
4042import org .opensearch .sql .spark .scheduler .model .ScheduledAsyncQueryJobRequest ;
@@ -55,7 +57,9 @@ public class OpenSearchAsyncQueryScheduler implements AsyncQueryScheduler {
5557
5658 @ Override
5759 /** Schedules a new job by indexing it into the job index. */
58- public void scheduleJob (AsyncQuerySchedulerRequest asyncQuerySchedulerRequest ) {
60+ public void scheduleJob (
61+ AsyncQuerySchedulerRequest asyncQuerySchedulerRequest ,
62+ AsyncQueryRequestContext asyncQueryRequestContext ) {
5963 ScheduledAsyncQueryJobRequest request =
6064 ScheduledAsyncQueryJobRequest .fromAsyncQuerySchedulerRequest (asyncQuerySchedulerRequest );
6165 if (!this .clusterService .state ().routingTable ().hasIndex (SCHEDULER_INDEX_NAME )) {
@@ -87,15 +91,18 @@ public void scheduleJob(AsyncQuerySchedulerRequest asyncQuerySchedulerRequest) {
8791
8892 /** Unschedules a job by marking it as disabled and updating its last update time. */
8993 @ Override
90- public void unscheduleJob (String jobId ) {
91- ScheduledAsyncQueryJobRequest request =
92- ScheduledAsyncQueryJobRequest .builder ()
93- .jobId (jobId )
94- .enabled (false )
95- .lastUpdateTime (Instant .now ())
96- .build ();
94+ public void unscheduleJob (String jobId , AsyncQueryRequestContext asyncQueryRequestContext ) {
95+ if (Strings .isNullOrEmpty (jobId )) {
96+ throw new IllegalArgumentException ("JobId cannot be null or empty" );
97+ }
9798 try {
98- updateJob (request );
99+ AsyncQuerySchedulerRequest request =
100+ ScheduledAsyncQueryJobRequest .builder ()
101+ .jobId (jobId )
102+ .enabled (false )
103+ .lastUpdateTime (Instant .now ())
104+ .build ();
105+ updateJob (request , asyncQueryRequestContext );
99106 LOG .info ("Unscheduled job for jobId: {}" , jobId );
100107 } catch (IllegalStateException | DocumentMissingException e ) {
101108 LOG .error ("Failed to unschedule job: {}" , jobId , e );
@@ -105,7 +112,9 @@ public void unscheduleJob(String jobId) {
105112 /** Updates an existing job with new parameters. */
106113 @ Override
107114 @ SneakyThrows
108- public void updateJob (AsyncQuerySchedulerRequest asyncQuerySchedulerRequest ) {
115+ public void updateJob (
116+ AsyncQuerySchedulerRequest asyncQuerySchedulerRequest ,
117+ AsyncQueryRequestContext asyncQueryRequestContext ) {
109118 ScheduledAsyncQueryJobRequest request =
110119 ScheduledAsyncQueryJobRequest .fromAsyncQuerySchedulerRequest (asyncQuerySchedulerRequest );
111120 assertIndexExists ();
@@ -134,8 +143,11 @@ public void updateJob(AsyncQuerySchedulerRequest asyncQuerySchedulerRequest) {
134143
135144 /** Removes a job by deleting its document from the index. */
136145 @ Override
137- public void removeJob (String jobId ) {
146+ public void removeJob (String jobId , AsyncQueryRequestContext asyncQueryRequestContext ) {
138147 assertIndexExists ();
148+ if (Strings .isNullOrEmpty (jobId )) {
149+ throw new IllegalArgumentException ("JobId cannot be null or empty" );
150+ }
139151 DeleteRequest deleteRequest = new DeleteRequest (SCHEDULER_INDEX_NAME , jobId );
140152 deleteRequest .setRefreshPolicy (WriteRequest .RefreshPolicy .IMMEDIATE );
141153 ActionFuture <DeleteResponse > deleteResponseActionFuture = client .delete (deleteRequest );
0 commit comments