How to retry a failed N1Ql query automatically?

If due to some reason N1Ql query fails to respond or don’t give any output back, how to retry it programmatically ?I am using N1Ql query in a Node.js application and referring to the below document to solve it…Can any one plz share any example for better understanding…or better approach to retry N1Ql query. Any help will be appreciated.Thank you.

https://docs.couchbase.com/nodejs-sdk/2.6/handling-error-sample-code.html

@sanjay.p something like this both sync and async way might work, see if this helps !

//async way

function ExecuteQueryRetry(query, callback, retries=2, delay=1000, backoff_factor=1){
bucket.query(query, function(err, rows, meta){

    if((err && (err.code == CBErr.timedOut || err.code == CBErr.networkError || err.code == CBErr.temporaryError)) 
       || (rows.length == 0)){
        if(retries > 0){
            setTimeout(() => getOrRetry(key, callback, retries-1, delay*backoff_factor, backoff_factor), delay)
        } else {
            callback(new Error("Retry Count Exceeded."))
        }
    } else {
        callback(err, rows, meta)
    }
})

}

//synchronous way.
function ExecuteQueryRetry(query, retries=2, delay=1000, backoff_factor=1){
bucket.query(query, function(err, rows, meta){

    if((err && (err.code == CBErr.timedOut || err.code == CBErr.networkError || err.code == CBErr.temporaryError)) 
       || (rows.length == 0)){
        if(retries > 0){
            setTimeout(() => getOrRetry(key, callback, retries-1, delay*backoff_factor, backoff_factor), delay)
        } else {
            callback(new Error("Retry Count Exceeded."))
        }
    } else {
        // Do work.. loop through rows object 
    }
})

}

1 Like