diff --git a/lib/backend/lite/lite.go b/lib/backend/lite/lite.go index 56ca03deec4..d7022313821 100644 --- a/lib/backend/lite/lite.go +++ b/lib/backend/lite/lite.go @@ -781,7 +781,7 @@ func (l *Backend) KeepAlive(ctx context.Context, lease backend.Lease, expires ti } defer stmt.Close() - result, err := stmt.ExecContext(ctx, expires.UTC(), id(now), backend.CreateRevision(), lease.Key.String()) + result, err := stmt.ExecContext(ctx, expires.UTC(), id(now), item.Revision, lease.Key.String()) if err != nil { return trace.Wrap(err) } diff --git a/lib/backend/test/suite.go b/lib/backend/test/suite.go index aae7c9fb0b4..4cca28d727d 100644 --- a/lib/backend/test/suite.go +++ b/lib/backend/test/suite.go @@ -760,6 +760,10 @@ func testKeepAlive(t *testing.T, newBackend Constructor) { require.Equal(t, bigValue[:], event.Item.Value) require.WithinDuration(t, expiresAt, event.Item.Expires, 2*time.Second) + storedItem, err := uut.Get(ctx, item.Key) + require.NoError(t, err) + require.Equal(t, storedItem.Revision, event.Item.Revision) + // move the current slightly forward, but still *before* the item's // expiry time clock.Advance(2 * time.Second) @@ -776,6 +780,10 @@ func testKeepAlive(t *testing.T, newBackend Constructor) { require.Equal(t, bigValue[:], event.Item.Value) require.WithinDuration(t, updatedAt, event.Item.Expires, 2*time.Second) + storedItem, err = uut.Get(ctx, item.Key) + require.NoError(t, err) + require.Equal(t, storedItem.Revision, event.Item.Revision) + err = uut.Delete(t.Context(), item.Key) require.NoError(t, err)