docs: void startInternal() throws LifecycleException {
          _log.info( getClass().getSimpleName() + " starts initialization... (configured" +
                  " nodes definition " + _memcachedNodes + ", failover nodes " + _failoverNodes + ")" );
  
          _statistics = Statistics.create( _enableStatistics );
  
          _memcachedNodesManager = createMemcachedNodesManager( _memcachedNodes, _failoverNodes);
  
          if(_storage == null) {
              _storage = createStorageClient( _memcachedNodesManager, _statistics );
          }
  
          final String sessionCookieName = _manager.getSessionCookieName();
          _currentRequest = new CurrentRequest();
          _trackingHostValve = createRequestTrackingHostValve(sessionCookieName, _currentRequest);
          final Context context = _manager.getContext();
          context.getParent().getPipeline().addValve(_trackingHostValve);
          _trackingContextValve = createRequestTrackingContextValve(sessionCookieName);
          context.getPipeline().addValve( _trackingContextValve );
  
          initNonStickyLockingMode( _memcachedNodesManager );
  
          _transcoderService = createTranscoderService( _statistics );
  
          _backupSessionService = new BackupSessionService( _transcoderService, _sessionBackupAsync, _sessionBackupTimeout,
                  _backupThreadCount, _storage, _memcachedNodesManager, _statistics );
  
          _log.info( "--------\n- " + getClass().getSimpleName() + " finished initialization:" +
                  "\n- sticky: "+ _sticky +
                  "\n- operation timeout: " + _operationTimeout +
                  "\n- node ids: " + _memcachedNodesManager.getPrimaryNodeIds() +
                  "\n- failover node ids: " + _memcachedNodesManager.getFailoverNodeIds() +
                  "\n- storage key prefix: " + _memcachedNodesManager.getStorageKeyFormat().prefix +
                  "\n- locking mode: " + _lockingMode + " (expiration: " + _lockExpiration + "s)" +
                  "\n--------");
  
      }