code: private TimerStatus<?> getTimerStatus(int operation) {
          TimerStatus<?> timerStatus = cachedTimerStatus;
          if (timerStatus != null && isCachingAllowed(operation)) {
              return timerStatus;
          }
          try {
              timerStatus = cachedTimerStatus = persistentTimerRuntime.getTimerStatus(taskId);
          } catch (Throwable ex) {
              throw newTimerServiceException(ex);
          }
          if (timerStatus == null) {
              throw newNoSuchObjectLocalException();
          }
          if (j2eeName == null) {
              try {
                  PersistentTimerTaskHandler taskHandler = cachedTaskHandler = (PersistentTimerTaskHandler) timerStatus.getTimer();
                  j2eeName = taskHandler.getJ2EEName();
                  cachedTimerDataAllowed = persistentTimerRuntime.getAllowCachedTimerData(j2eeName);
              } catch (Throwable ex) {
                  throw newTimerServiceException(ex);
              }
          }
          return timerStatus;
      }
docs: Returns the corresponding timer TaskStatus. By default, the returned object
  will be retrieved from the persistent store, to insure the timer still exists.
  However, a cached (and potentially stale) instance may be returned if the
  timer is currently running, or the specified timer operation has been
  configured to allow stale data. <p>
  
  @param operation the current timer operation
  
  @throws NoSuchObjectLocalException If invoked on a timer that has
  expired or has been cancelled.
  @throws TimerServiceException if an error occurs accessing the persistent store.