code: func (r *raftNode) shutdown() error {
  	r.Lock()
  	if r.closed {
  		r.Unlock()
  		return nil
  	}
  	r.closed = true
  	r.Unlock()
  	if r.Raft != nil {
  		if err := r.Raft.Shutdown().Error(); err != nil {
  			return err
  		}
  	}
  	if r.transport != nil {
  		if err := r.transport.Close(); err != nil {
  			return err
  		}
  	}
  	if r.store != nil {
  		if err := r.store.Close(); err != nil {
  			return err
  		}
  	}
  	if r.joinSub != nil {
  		if err := r.joinSub.Unsubscribe(); err != nil {
  			return err
  		}
  	}
  	if r.logInput != nil {
  		if err := r.logInput.Close(); err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // shutdown attempts to stop the Raft node.