// allocateNodeID increments the node id generator key to allocate // a new, unique node id. func allocateNodeID(db kv.DB) (int32, error) { ir := <-db.Increment(&storage.IncrementRequest{ Key: storage.KeyNodeIDGenerator, Increment: 1, }) if ir.Error != nil { return 0, util.Errorf("unable to allocate node ID: %v", ir.Error) } return int32(ir.NewValue), nil }
// allocateStoreIDs increments the store id generator key for the // specified node to allocate "inc" new, unique store ids. The // first ID in a contiguous range is returned on success. func allocateStoreIDs(nodeID int32, inc int64, db kv.DB) (int32, error) { ir := <-db.Increment(&storage.IncrementRequest{ // The Key is a concatenation of StoreIDGeneratorPrefix and this node's ID. Key: storage.MakeKey(storage.KeyStoreIDGeneratorPrefix, []byte(strconv.Itoa(int(nodeID)))), Increment: inc, }) if ir.Error != nil { return 0, util.Errorf("unable to allocate %d store IDs for node %d: %v", inc, nodeID, ir.Error) } return int32(ir.NewValue - inc + 1), nil }