docs: private synchronized void handleUnavailableException(UnavailableException e, boolean isInit) throws UnavailableException
  	 {
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
              logger.entering(CLASS_NAME, "handleUnavailableException", e); // 569469
          // logger.logp(Level.FINE, CLASS_NAME,"handleUnavailableException", "",
          // e);
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
              logger.logp(Level.FINE, CLASS_NAME, "handleUnavailableException", "UnavailableException was thrown by servlet: " + getServletName()
                      + " reason:" + e.getMessage());
          if (state == UNAVAILABLE_PERMANENTLY_STATE) {
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
                  logger.exiting(CLASS_NAME, "handleUnavailableException", "state is already permanently unavailable, throw ue"); // 569469
              // logger.logp(Level.FINE, CLASS_NAME,"handleUnavailableException",
              // "state is already permanently unavailable, throw ue");
              throw new UnavailableException(unavailableMessage);
          } else if (e.isPermanent()) {
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
                  logger.logp(Level.FINE, CLASS_NAME, "handleUnavailableException", "exception is permanent");
              if (state == AVAILABLE_STATE) {
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
                      logger.logp(Level.FINE, CLASS_NAME, "handleUnavailableException", "state is available so destroy the servlet");
                  /*
                   * This means the UnavailableException is thrown from the
                   * service method so we should destroy this servlet.
                   */
                  // destroy();
                  // destroy does not remove from the requestMapper which can lead
                  // to a 500 error code on a subsequent request
                  if (!context.removeServlet(getServletName()))
                      ;
                  {
                      // In the case that there are no servlet mappings, we still
                      // need to destroy
                      if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
                          logger.logp(Level.FINE, CLASS_NAME, "handleUnavailableException",
                                  "removeServlet didn't destroy. destroy from handleUnavailableException");
                      destroy();
                  }
              }
              unavailableMessage = e.getMessage();
              if(isInit){											
  				this.setUninitialize();  // PM01373
  			}
  			else{				
              setUnavailable();
  			}
          } else {
              int secs = e.getUnavailableSeconds();
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
                  logger.logp(Level.FINE, CLASS_NAME, "handleUnavailableException", "ue is not permanent, unavailable secs -->[" + secs + "]");
              if (secs > 0) {
                  long time = System.currentTimeMillis() + ((secs) * 1000);
                  if (time > unavailableUntil) {
                      unavailableMessage = e.getMessage();
                      // only set the time if the new time is farther away than
                      // the old time.
                      setUnavailableUntil(time, isInit);		//PM01373
                  }
              }
          }
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) // 306998.15
              logger.exiting(CLASS_NAME, "handleUnavailableException"); // 569469
      }