docs: @Override
      public void run()
      {
          m_taskQueue.offer(this);
          // check if previous task is running for more than threshold
          SiteTasker task = m_taskQueue.peek();
          long currentTime = System.nanoTime();
          long headOfQueueOfferTime;
          if (task != null) {
              headOfQueueOfferTime = task.getQueueOfferTime();
          } else {
              headOfQueueOfferTime = currentTime;
          }
          if (headOfQueueOfferTime != m_previousTaskTimestamp) {
              m_previousTaskTimestamp = headOfQueueOfferTime;
              m_previousTaskPeekTime = currentTime;
          } else if (currentTime - m_previousTaskPeekTime >= m_procedureLogThreshold) {
              long waitTime = (currentTime - m_previousTaskPeekTime)/1_000_000_000L; // in seconds
              if (m_logger.isDebugEnabled()) {
                  String taskInfo = (task == null) ? "" : " Task Info: " + task.getTaskInfo();
                  m_logger.rateLimitedLog(SUPPRESS_INTERVAL, Level.DEBUG, null, TICK_MESSAGE + taskInfo, waitTime, m_partitionId);
              } else {
                  m_logger.rateLimitedLog(SUPPRESS_INTERVAL, Level.INFO, null, TICK_MESSAGE, waitTime, m_partitionId);
              }
          }
      }