public override void SetAndReleaseItemExclusive(HttpContext context, string id, SessionStateStoreData item,
                                                        object lockId, bool newItem)
        {
            Debug.Assert(item != null);

            var key = GetKey(id);

            var data = (IgniteSessionStateStoreData)item;

            if (newItem)
            {
                var cache = _expiryCacheHolder.GetCacheWithExpiry(data.Timeout * 60);

                PutItem(key, data, cache);
            }
            else
            {
                if (!(lockId is long) || data.LockId != (long)lockId)
                {
                    throw new IgniteException(string.Format(CultureInfo.InvariantCulture,
                                                            "Invalid session release request, expected lockId: {0}, actual: {1}", data.LockId, lockId));
                }

                SetAndUnlockItem(key, data);
            }
        }