code: func (e *ChangeExec) Next(ctx context.Context, req *chunk.RecordBatch) error {
  	kind := strings.ToLower(e.NodeType)
  	urls := config.GetGlobalConfig().Path
  	registry, err := createRegistry(urls)
  	if err != nil {
  		return err
  	}
  	nodes, _, err := registry.Nodes(ctx, node.NodePrefix[kind])
  	if err != nil {
  		return err
  	}
  	state := e.State
  	nodeID := e.NodeID
  	for _, n := range nodes {
  		if n.NodeID != nodeID {
  			continue
  		}
  		switch state {
  		case node.Online, node.Pausing, node.Paused, node.Closing, node.Offline:
  			n.State = state
  			return registry.UpdateNode(ctx, node.NodePrefix[kind], n)
  		default:
  			return errors.Errorf("state %s is illegal", state)
  		}
  	}
  	return errors.NotFoundf("node %s, id %s from etcd %s", kind, nodeID, urls)
  }
docs: // Next implements the Executor Next interface.