Exemple #1
0
        private void OnOutgoingSendingFailed(OutgoingReplicationHandler instance, Exception e)
        {
            using (instance)
            {
                instance.Failed -= OnOutgoingSendingFailed;
                instance.SuccessfulTwoWaysCommunication -= OnOutgoingSendingSucceeded;

                _outgoing.TryRemove(instance);
                OutgoingReplicationRemoved?.Invoke(instance);

                if (_outgoingFailureInfo.TryGetValue(instance.Node, out ConnectionShutdownInfo failureInfo) == false)
                {
                    return;
                }

                UpdateLastEtag(instance);

                failureInfo.OnError(e);
                failureInfo.DestinationDbId    = instance.DestinationDbId;
                failureInfo.LastHeartbeatTicks = instance.LastHeartbeatTicks;

                _reconnectQueue.Add(failureInfo);

                if (_log.IsInfoEnabled)
                {
                    _log.Info($"Document replication connection ({instance.Node}) failed, and the connection will be retried later.", e);
                }

                ReplicationFailed?.Invoke(instance.Node.ToString(), e);
            }
        }
Exemple #2
0
        private void OnIncomingReceiveFailed(IncomingReplicationHandler instance, Exception e)
        {
            using (instance)
            {
                if (_incoming.TryRemove(instance.ConnectionInfo.SourceDatabaseId, out _))
                {
                    IncomingReplicationRemoved?.Invoke(instance);
                }

                instance.Failed            -= OnIncomingReceiveFailed;
                instance.DocumentsReceived -= OnIncomingReceiveSucceeded;
                if (_log.IsInfoEnabled)
                {
                    _log.Info($"Incoming replication handler has thrown an unhandled exception. ({instance.FromToString})", e);
                }

                ReplicationFailed?.Invoke(instance.FromToString, e);
            }
        }