diff --git a/components/sequencer/zookeeper/zookeeper_sequencer.go b/components/sequencer/zookeeper/zookeeper_sequencer.go index 2291330235..7f7959d717 100644 --- a/components/sequencer/zookeeper/zookeeper_sequencer.go +++ b/components/sequencer/zookeeper/zookeeper_sequencer.go @@ -95,6 +95,13 @@ func (s *ZookeeperSequencer) GetNextId(req *sequencer.GetNextIdRequest) (*sequen stat, err := s.client.Set("/"+req.Key, []byte(""), -1) if err != nil { + if err == zk.ErrNoNode { + _, errCreate := s.client.Create("/"+req.Key, []byte(""), zk.FlagEphemeral, zk.WorldACL(zk.PermAll)) + if errCreate != nil { + return nil, errCreate + } + return s.GetNextId(req) + } return nil, err } // create node version=0, every time we set node will result in version+1