@@ -14,6 +14,15 @@ const {
1414const { get } = require ( 'lodash' ) ;
1515const { DateTime } = require ( 'luxon' ) ;
1616
17+ // Query status constants
18+ const QUERY_STATUS = {
19+ SUCCEEDED : 'SUCCEEDED' ,
20+ RUNNING : 'RUNNING' ,
21+ QUEUED : 'QUEUED' ,
22+ FAILED : 'FAILED' ,
23+ CANCELLED : 'CANCELLED'
24+ } ;
25+
1726// Athena query execution configuration constants
1827const MAX_QUERY_STATUS_POLLING_ATTEMPTS = 10 ; // 10 attempts * 3 second interval = 30 seconds wait time
1928const POLLING_WAIT_INTERVAL = 3000 ; // 3 second intervals
@@ -291,11 +300,11 @@ async function executeAthenaQuery(athenaClient, queryParams, options) {
291300 Logger . trace ( { queryExecutionId } , 'Started Athena query execution' ) ;
292301
293302 // Wait for query to complete with timeout
294- let queryStatus = ' RUNNING' ;
303+ let queryStatus = QUERY_STATUS . RUNNING ;
295304 let attempts = 0 ;
296305 let statusResult = null ;
297306
298- while ( queryStatus === ' RUNNING' || queryStatus === ' QUEUED' ) {
307+ while ( queryStatus === QUERY_STATUS . RUNNING || queryStatus === QUERY_STATUS . QUEUED ) {
299308 if ( attempts >= MAX_QUERY_STATUS_POLLING_ATTEMPTS ) {
300309 Logger . trace (
301310 {
@@ -340,9 +349,9 @@ async function executeAthenaQuery(athenaClient, queryParams, options) {
340349 attempts ++ ;
341350 }
342351
343- if ( queryStatus === ' FAILED' || queryStatus === ' CANCELLED' ) {
352+ if ( queryStatus === QUERY_STATUS . FAILED || queryStatus === QUERY_STATUS . CANCELLED ) {
344353 const errorMsg =
345- queryStatus === ' FAILED'
354+ queryStatus === QUERY_STATUS . FAILED
346355 ? `Query failed: ${ statusResult . QueryExecution . Status . StateChangeReason } `
347356 : 'Query was cancelled' ;
348357 throw new Error ( errorMsg ) ;
@@ -851,7 +860,7 @@ async function checkQueryStatusAndGetResults(queryExecutionId, options) {
851860
852861 Logger . trace ( { queryStatus, queryExecutionId } , 'Retrieved query status' ) ;
853862
854- if ( queryStatus === ' SUCCEEDED' ) {
863+ if ( queryStatus === QUERY_STATUS . SUCCEEDED ) {
855864 // Query completed successfully, get results
856865 const executionStats = statusResult . QueryExecution . Statistics || { } ;
857866 const queryExecution = statusResult . QueryExecution || { } ;
@@ -911,7 +920,7 @@ async function checkQueryStatusAndGetResults(queryExecutionId, options) {
911920 queryExecutionId : queryExecutionId ,
912921 executionStats : queryStats
913922 } ;
914- } else if ( queryStatus === ' RUNNING' || queryStatus === ' QUEUED' ) {
923+ } else if ( queryStatus === QUERY_STATUS . RUNNING || queryStatus === QUERY_STATUS . QUEUED ) {
915924 // Query still running
916925 const partialStats = statusResult . QueryExecution ?. Statistics || { } ;
917926 const queryExecution = statusResult . QueryExecution || { } ;
@@ -935,7 +944,7 @@ async function checkQueryStatusAndGetResults(queryExecutionId, options) {
935944 queryExecutionId : queryExecutionId ,
936945 executionStats : incompleteStats
937946 } ;
938- } else if ( queryStatus === ' FAILED' || queryStatus === ' CANCELLED' ) {
947+ } else if ( queryStatus === QUERY_STATUS . FAILED || queryStatus === QUERY_STATUS . CANCELLED ) {
939948 // Query failed or was cancelled
940949 const errorReason = statusResult . QueryExecution . Status . StateChangeReason || 'Unknown error' ;
941950 throw new Error ( `Query ${ queryStatus . toLowerCase ( ) } : ${ errorReason } ` ) ;
0 commit comments