virajjasani commented on PR #5837:
URL: https://github.com/apache/hbase/pull/5837#issuecomment-2083455858

   @Divneet18 here is the sample for TimerTask and how we can introduce timeout:
   
   ```
         TimerTask pollingTask = new TimerTask() {
           int tries = 0;
           long startTime = EnvironmentEdgeManager.currentTime();
           long endTime = startTime + expectedTimeout;
           long maxPauseTime = expectedTimeout / maxAttempts;
   
           @Override
           public void run(Timeout timeout) throws Exception {
             if (EnvironmentEdgeManager.currentTime() < endTime) {
               addListener(isSnapshotFinished(snapshot), (done, err2) -> {
                 if (err2 != null) {
                   future.completeExceptionally(err2);
                 } else if (done) {
                   future.complete(null);
                 } else {
                   // retry again after pauseTime.
                   long pauseTime =
                     
ConnectionUtils.getPauseTime(TimeUnit.NANOSECONDS.toMillis(pauseNs), ++tries);
                   pauseTime = Math.min(pauseTime, maxPauseTime);
                   AsyncConnectionImpl.RETRY_TIMER.newTimeout(this, pauseTime, 
TimeUnit.MILLISECONDS);
                 }
               });
             } else {
               future
                 .completeExceptionally(new SnapshotCreationException("Snapshot 
'" + snapshot.getName()
                   + "' wasn't completed in expectedTime:" + expectedTimeout + 
" ms", snapshot));
             }
           }
         };
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@hbase.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to