public void Dispose() { if (_isFirstChunk && _dataChunk.IsLastChunk) { return; } var disposeReaderOperation = new DisposeReaderOperation(); disposeReaderOperation.Database = _databaseName;//_database.DatabaseName disposeReaderOperation.Collection = _collectionName; disposeReaderOperation.ReaderUID = _dataChunk.ReaderUID; //DatabaseResponse response = (DatabaseResponse)_database.ExecutionMapper.DiposeReader(disposeReaderOperation); var response = (DatabaseResponse)_store.DiposeReader(disposeReaderOperation); if (!response.IsSuccessfull) { throw new Exception("Operation Failed Error Code " + response.ErrorCode); } }
public void ChannelDisconnected(IRequestResponseChannel channel, string reason) { if (channel == null) { return; } try { foreach (ReaderInfo readerInfo in _readersList) { var operation = new DisposeReaderOperation { Database = readerInfo.DatabaseName, Collection = readerInfo.CollectionName, ReaderUID = readerInfo.ReaderId, OperationType = DatabaseOperationType.DisposeReader, SessionId = CsSessionId }; try { _dbEngine.DiposeReader(operation); } catch (SecurityException exc) { if (LoggerManager.Instance.SecurityLogger != null && LoggerManager.Instance.SecurityLogger.IsErrorEnabled) { LoggerManager.Instance.SecurityLogger.Error("ClientSession.ChannelDisconected() ", exc); } } } _readersList.Clear(); _conmmandInfos.Clear(); _clientDisconnection.DisconnectClient(MiscUtil.GetAddressInfo(channel.PeerAddress.IpAddress, channel.PeerAddress.Port)); _databaseEngineFactory.Dispose(_noSConnectionString); try { channel.Disconnect(); } catch (ThreadAbortException e) { //Todo: maybe log in future or something. } // Log Client Disconnected. if (LoggerManager.Instance.ServerLogger.IsInfoEnabled) { LoggerManager.Instance.ServerLogger.Info("ClientSession.ChannelDisconnected", "Client [" + MiscUtil.GetAddressInfo(channel.PeerAddress.IpAddress, channel.PeerAddress.Port) + "] with sessionId'" + CsSessionId.SessionId + "' disconnected."); } LoggerManager.Instance.SetThreadContext(new LoggerContext() { ShardName = "", DatabaseName = "" }); } catch (Exception e) { try { //Remove client session from session manager. _clientDisconnection.DisconnectClient(MiscUtil.GetAddressInfo(channel.PeerAddress.IpAddress, channel.PeerAddress.Port)); } catch (Exception ex) { } if (LoggerManager.Instance.ShardLogger != null && LoggerManager.Instance.ShardLogger.IsErrorEnabled) { LoggerManager.Instance.ShardLogger.Error("ClientSessionDisconnect", e.Message + " StackTrace: " + e.StackTrace); } } }