Round the node lookup prefix down to the nearest modulo two size before

performing the lookup.

Hat tip: @dadgar
pull/2707/head
Sean Chittenden 2017-02-02 12:13:58 -08:00
parent fe49c0a0ab
commit b94aac3a2c
No known key found for this signature in database
GPG Key ID: 4EBC9DC16C2E5E16
1 changed files with 11 additions and 1 deletions

View File

@ -16,6 +16,16 @@ const (
minUUIDLookupLen = 2
)
func resizeNodeLookupKey(s string) string {
l := len(s)
if l%2 != 0 {
return s[0 : l-1]
}
return s
}
// Nodes is used to pull the full list of nodes for use during snapshots.
func (s *StateSnapshot) Nodes() (memdb.ResultIterator, error) {
iter, err := s.tx.Get("nodes", "id")
@ -703,7 +713,7 @@ func (s *StateStore) NodeServices(ws memdb.WatchSet, nodeNameOrID string) (uint6
}
// Attempt to lookup the node by its node ID
iter, err := tx.Get("nodes", "uuid_prefix", nodeNameOrID)
iter, err := tx.Get("nodes", "uuid_prefix", resizeNodeLookupKey(nodeNameOrID))
if err != nil {
ws.Add(watchCh)
// TODO(sean@): We could/should log an error re: the uuid_prefix lookup