diff --git a/lib/services/local/presence.go b/lib/services/local/presence.go index fb3e9a3ad27c2..0632d260457e5 100644 --- a/lib/services/local/presence.go +++ b/lib/services/local/presence.go @@ -248,37 +248,19 @@ func (s *PresenceService) UpsertNode(ctx context.Context, server types.Server) ( if n := server.GetNamespace(); n != apidefaults.Namespace { return nil, trace.BadParameter("cannot place node in namespace %q, custom namespaces are deprecated", n) } - value, err := services.MarshalServer(server) if err != nil { return nil, trace.Wrap(err) } - - key := backend.Key(nodesPrefix, server.GetNamespace(), server.GetName()) - - item := backend.Item{ - Key: key, + lease, err := s.Put(ctx, backend.Item{ + Key: backend.Key(nodesPrefix, server.GetNamespace(), server.GetName()), Value: value, Expires: server.Expiry(), ID: server.GetResourceID(), - } - - prevItem, err := s.Get(ctx, key) - if err != nil && !trace.IsNotFound(err) { - return nil, trace.Wrap(err) - } - - var lease *backend.Lease - if err == nil { - lease, err = s.CompareAndSwap(ctx, *prevItem, item) - } else { - lease, err = s.Create(ctx, item) - } - + }) if err != nil { return nil, trace.Wrap(err) } - if server.Expiry().IsZero() { return &types.KeepAlive{}, nil }