in src/DynamoDBSessionStateStore.cs [648:672]
public override void ReleaseItemExclusive(HttpContext context, string sessionId, object lockId)
{
LogInfo("ReleaseItemExclusive", sessionId, lockId, context);
Document doc = this._table.GetItem(GetHashKey(sessionId), CONSISTENT_READ_GET);
if (doc == null)
{
LogError("ReleaseItemExclusive Failed to retrieve state for session id: " + sessionId, sessionId, lockId, context);
return;
}
var expiration = DateTime.Now.Add(this._timeout);
doc[ATTRIBUTE_LOCKED] = false;
doc[ATTRIBUTE_EXPIRES] = expiration;
SetTTLAttribute(doc, expiration);
Document expected = new Document();
expected[ATTRIBUTE_LOCK_ID] = lockId.ToString();
try
{
this._table.UpdateItem(doc, new UpdateItemOperationConfig() { Expected = expected });
}
catch (ConditionalCheckFailedException) { LogInfo("(ReleaseItemExclusive) Conditional check failed for update.", sessionId, context); }
}