code: @Override
      public synchronized void open() throws IOException {
          if (_mode == Mode.OPEN) {
              return;
          }
          
          try {
              _addressArray.open();
              _segmentManager.open();
              _compactor.start();
              
              init();
              _mode = Mode.OPEN;
          } catch(Exception e) {
              _mode = Mode.CLOSED;
              _log.error("Failed to open", e);
              
              _compactor.shutdown();
              _compactor.clear();
              
              if (_addressArray.isOpen()) {
                  _addressArray.close();
              }
              if (_segmentManager.isOpen()) {
                  _segmentManager.close();
              }
              
              throw (e instanceof IOException) ? (IOException)e : new IOException(e);
          } finally {
              _log.info("mode=" + _mode);
          }
      }
docs: Open to start serving requests.
  
  @throws IOException if the underlying service cannot be opened properly.