Skip to content
Merged
24 changes: 0 additions & 24 deletions libs/cluster/Session/SlotVerification/ClusterSlotVerify.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

using System;
using System.Runtime.CompilerServices;
using System.Threading;
using Garnet.common;
Expand Down Expand Up @@ -118,29 +117,6 @@ bool CanOperateOnKey(ref PinnedSpanByte key, int slot, bool readOnly)
}
}

ClusterSlotVerificationResult MultiKeySlotVerify(ClusterConfig config, ref Span<PinnedSpanByte> keys, bool readOnly, byte sessionAsking, int count)
{
var _end = count < 0 ? keys.Length : count;
var slot = HashSlotUtils.HashSlot(keys[0]);
var verifyResult = SingleKeySlotVerify(ref config, ref keys[0], readOnly, sessionAsking, slot);

for (var i = 1; i < _end; i++)
{
var _slot = HashSlotUtils.HashSlot(keys[i]);
var _verifyResult = SingleKeySlotVerify(ref config, ref keys[i], readOnly, sessionAsking, _slot);

// Check if slot changes between keys
if (_slot != slot)
return new(SlotVerifiedState.CROSSSLOT, slot);

// Check if state of key changes
if (_verifyResult.state != verifyResult.state)
return new(SlotVerifiedState.TRYAGAIN, slot);
}

return verifyResult;
}

ClusterSlotVerificationResult MultiKeySlotVerify(ClusterConfig config, ref SessionParseState parseState, ref ClusterSlotVerificationInput csvi)
{
// Find the first valid key and initialize slot/result
Expand Down
27 changes: 0 additions & 27 deletions libs/cluster/Session/SlotVerification/RespClusterSlotVerify.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using Garnet.common;
using Garnet.server;
using Microsoft.Extensions.Logging;
using Tsavorite.core;

namespace Garnet.cluster
{
Expand Down Expand Up @@ -87,32 +86,6 @@ private void WriteClusterSlotVerificationMessage(ClusterConfig config, ClusterSl
SendAndReset(ref dcurr, ref dend);
}

/// <summary>
/// Check if read/write is permitted on an array of keys and generate appropriate resp response.
/// </summary>
/// <param name="keys"></param>
/// <param name="readOnly"></param>
/// <param name="sessionAsking"></param>
/// <param name="dcurr"></param>
/// <param name="dend"></param>
/// <param name="count"></param>
/// <returns></returns>
public bool NetworkKeyArraySlotVerify(Span<PinnedSpanByte> keys, bool readOnly, byte sessionAsking, ref byte* dcurr, ref byte* dend, int count = -1)
{
// If cluster is not enabled or a transaction is running skip slot check
if (!clusterProvider.serverOptions.EnableCluster || txnManager.state == TxnState.Running)
return false;

var config = clusterProvider.clusterManager.CurrentConfig;
var vres = MultiKeySlotVerify(config, ref keys, readOnly, sessionAsking, count);

if (vres.state == SlotVerifiedState.OK)
return false;
else
WriteClusterSlotVerificationMessage(config, vres, ref dcurr, ref dend);
return true;
}

/// <summary>
/// Verify multi-key slot ownership
/// </summary>
Expand Down
6 changes: 0 additions & 6 deletions libs/server/Cluster/IClusterSession.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

using System;
using Garnet.common;
using Garnet.server.ACL;
using Tsavorite.core;
Expand Down Expand Up @@ -86,11 +85,6 @@ public interface IClusterSession
/// <param name="output"></param>
public void WriteCachedSlotVerificationMessage(ref MemoryResult<byte> output);

/// <summary>
/// Key array slot verify (write result to network)
/// </summary>
unsafe bool NetworkKeyArraySlotVerify(Span<PinnedSpanByte> keys, bool readOnly, byte SessionAsking, ref byte* dcurr, ref byte* dend, int count = -1);

/// <summary>
/// Array slot verify (write result to network)
/// </summary>
Expand Down
16 changes: 11 additions & 5 deletions libs/server/Resp/Parser/SessionParseState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@ public unsafe struct SessionParseState
/// </summary>
public int Count;

/// <summary>
/// Get the allocated capacity of the argument buffer
/// </summary>
public int Capacity { get; }

/// <summary>
/// Get a Span of the parsed parameters in the form an PinnedSpanByte
/// </summary>
public ReadOnlySpan<PinnedSpanByte> Parameters => new(bufferPtr, Count);

/// <summary>
/// Pointer to the slice of <see cref="rootBuffer"/> (which is always pinned) that is accessible within the range of this instance's arguments.
/// </summary>
Expand All @@ -41,17 +51,13 @@ public unsafe struct SessionParseState
/// </summary>
PinnedSpanByte[] rootBuffer;

/// <summary>
/// Get a Span of the parsed parameters in the form an PinnedSpanByte
/// </summary>
public ReadOnlySpan<PinnedSpanByte> Parameters => new(bufferPtr, Count);

private SessionParseState(ref PinnedSpanByte[] rootBuffer, int rootCount, ref PinnedSpanByte* bufferPtr, int count) : this()
{
this.rootBuffer = rootBuffer;
this.rootCount = rootCount;
this.bufferPtr = bufferPtr;
this.Count = count;
this.Capacity = rootBuffer.Length;
}

/// <summary>
Expand Down
12 changes: 0 additions & 12 deletions libs/server/Resp/RespServerSessionSlotVerify.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

using System;
using System.Diagnostics;
using Tsavorite.core;

namespace Garnet.server
{
Expand All @@ -12,16 +10,6 @@ namespace Garnet.server
/// </summary>
internal sealed unsafe partial class RespServerSession : ServerSessionBase
{
/// <summary>
/// This method is used to verify slot ownership for provided array of key argslices.
/// </summary>
/// <param name="keys">Array of key ArgSlice</param>
/// <param name="readOnly">Whether caller is going to perform a readonly or read/write operation</param>
/// <param name="count">Key count if different than keys array length</param>
/// <returns>True when ownership is verified, false otherwise</returns>
bool NetworkKeyArraySlotVerify(Span<PinnedSpanByte> keys, bool readOnly, int count = -1)
=> clusterSession != null && clusterSession.NetworkKeyArraySlotVerify(keys, readOnly, SessionAsking, ref dcurr, ref dend, count);

/// <summary>
/// Validate if this command can be served based on the current slot assignment
/// </summary>
Expand Down
43 changes: 32 additions & 11 deletions libs/server/Transaction/TransactionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@
private readonly RespServerSession respSession;
readonly FunctionsState functionsState;
internal readonly ScratchBufferAllocator scratchBufferAllocator;
internal readonly ScratchBufferAllocator txnScratchBufferAllocator;
internal SessionParseState txnKeysParseState;
private readonly TsavoriteLog appendOnlyFile;
internal readonly WatchedKeysContainer watchContainer;
private readonly StateMachineDriver stateMachineDriver;
Expand Down Expand Up @@ -135,7 +137,8 @@

this.respSession = respSession;

watchContainer = new WatchedKeysContainer(initialSliceBufferSize, functionsState.watchVersionMap);
txnScratchBufferAllocator = new ScratchBufferAllocator();
watchContainer = new WatchedKeysContainer(initialSliceBufferSize, functionsState.watchVersionMap, txnScratchBufferAllocator);
keyEntries = new TxnKeyEntries(initialSliceBufferSize, unifiedTransactionalContext);
this.scratchBufferAllocator = scratchBufferAllocator;

Expand All @@ -149,7 +152,10 @@

this.clusterEnabled = clusterEnabled;
if (clusterEnabled)
keys = new PinnedSpanByte[initialKeyBufferSize];
{
txnKeysParseState.Initialize(initialKeyBufferSize);
txnKeysParseState.Count = 0;
}

Reset(false);
}
Expand Down Expand Up @@ -184,9 +190,13 @@
functionsState.StoredProcMode = false;
this.PerformWrites = false;

// Reset cluster variables used for slot verification
this.saveKeyRecvBufferPtr = null;
this.keyCount = 0;
// Reset cluster key parse state
if (clusterEnabled)
{
txnKeysParseState.Count = 0;
saveKeyRecvBufferPtr = null;
txnScratchBufferAllocator.Reset();
}
}

internal bool RunTransactionProc(byte id, ref CustomProcedureInput procInput, CustomTransactionProcedure proc, ref MemoryResult<byte> output, bool isReplaying = false)
Expand Down Expand Up @@ -257,7 +267,6 @@
scratchBufferAllocator.Reset();
}


return true;
}

Expand Down Expand Up @@ -328,13 +337,25 @@

internal string GetLockset() => keyEntries.GetLockset();

internal void GetKeysForValidation(byte* recvBufferPtr, out PinnedSpanByte[] keys, out int keyCount, out bool readOnly)
internal void GetSlotVerificationInput(byte* recvBufferPtr, byte sessionAsking, out ClusterSlotVerificationInput clusterSlotVerificationInput)
{
UpdateRecvBufferPtr(recvBufferPtr);
// Copy keys if buffer changed since last queued command
if (recvBufferPtr != saveKeyRecvBufferPtr)
{
CopyExistingKeysToScratchBuffer();
saveKeyRecvBufferPtr = recvBufferPtr;
}

watchContainer.SaveKeysToKeyList(this);
keys = this.keys;
keyCount = this.keyCount;
readOnly = keyEntries.IsReadOnly;
clusterSlotVerificationInput = new ClusterSlotVerificationInput
{
readOnly = keyEntries.IsReadOnly,
sessionAsking = sessionAsking,
firstKey = 0,

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'

Check failure on line 354 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'firstKey'
lastKey = txnKeysParseState.Count,

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'

Check failure on line 355 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'lastKey'
step = 1,

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'

Check failure on line 356 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'step'
keyNumOffset = -1,

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (ubuntu-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net10.0, Release, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Debug, Garnet.test.cluster)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'

Check failure on line 357 in libs/server/Transaction/TransactionManager.cs

View workflow job for this annotation

GitHub Actions / Garnet (windows-latest, net8.0, Release, Garnet.test)

'ClusterSlotVerificationInput' does not contain a definition for 'keyNumOffset'
};
}

void BeginTransaction()
Expand Down
44 changes: 22 additions & 22 deletions libs/server/Transaction/TxnClusterSlotCheck.cs
Original file line number Diff line number Diff line change
@@ -1,51 +1,51 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

using System;
using System.Diagnostics;
using Tsavorite.core;

namespace Garnet.server
{
sealed unsafe partial class TransactionManager
{
// Keys involved in the current transaction
PinnedSpanByte[] keys;
int keyCount;

internal byte* saveKeyRecvBufferPtr;
readonly bool clusterEnabled;
internal byte* saveKeyRecvBufferPtr;

/// <summary>
/// Keep track of actual key accessed by command
/// </summary>
/// <param name="argSlice"></param>
public void SaveKeyArgSlice(PinnedSpanByte argSlice)
/// <param name="keySlice"></param>
public void SaveKeyArgSlice(PinnedSpanByte keySlice)
{
// Execute method only if clusterEnabled
if (!clusterEnabled) return;
// Grow the buffer if needed
if (keyCount >= keys.Length)

var count = txnKeysParseState.Count;

// Double the parse state buffer capacity if needed, and copy existing parameters to the extended buffer
if (count >= txnKeysParseState.Capacity)
{
var oldKeys = keys;
keys = new PinnedSpanByte[keys.Length * 2];
Array.Copy(oldKeys, keys, oldKeys.Length);
var oldParams = txnKeysParseState.Parameters;
txnKeysParseState.Initialize(count * 2);
txnKeysParseState.SetArguments(0, oldParams);
}

keys[keyCount++] = argSlice;
txnKeysParseState.Count = count + 1;
txnKeysParseState.SetArgument(count, keySlice);
}

/// <summary>
/// Update argslice ptr if input buffer has been resized
/// Copy all existing keys into <see cref="txnScratchBufferAllocator"/> so they are independent of the old receive buffer.
/// Called when the receive buffer has been reallocated since keys were last stored.
/// </summary>
/// <param name="recvBufferPtr"></param>
public unsafe void UpdateRecvBufferPtr(byte* recvBufferPtr)
public void CopyExistingKeysToScratchBuffer()
{
// Execute method only if clusterEnabled
if (!clusterEnabled) return;
if (recvBufferPtr != saveKeyRecvBufferPtr)
Debug.Assert(clusterEnabled);

for (var i = 0; i < txnKeysParseState.Count; i++)
{
for (int i = 0; i < keyCount; i++)
keys[i].ptr = recvBufferPtr + (keys[i].ptr - saveKeyRecvBufferPtr);
ref var key = ref txnKeysParseState.GetArgSliceByRef(i);
key = txnScratchBufferAllocator.CreateArgSlice(key.ReadOnlySpan);
}
}
}
Expand Down
Loading
Loading