Ejemplo n.º 1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void persistentCallToSecondary(org.neo4j.causalclustering.messaging.CatchUpRequest request, org.neo4j.causalclustering.catchup.CatchUpResponseAdaptor<StoreCopyFinishedResponse> copyHandler, org.neo4j.causalclustering.catchup.CatchupAddressProvider addressProvider, TerminationCondition terminationCondition) throws StoreCopyFailedException
        private void PersistentCallToSecondary(CatchUpRequest request, CatchUpResponseAdaptor <StoreCopyFinishedResponse> copyHandler, CatchupAddressProvider addressProvider, TerminationCondition terminationCondition)
        {
            Org.Neo4j.causalclustering.helper.TimeoutStrategy_Timeout timeout = _backOffStrategy.newTimeout();
            while (true)
            {
                try
                {
                    AdvertisedSocketAddress address = addressProvider.Secondary();
                    _log.info(format("Sending request '%s' to '%s'", request, address));
                    StoreCopyFinishedResponse response = _catchUpClient.makeBlockingRequest(address, request, copyHandler);
                    if (SuccessfulRequest(response, request))
                    {
                        break;
                    }
                }
                catch (CatchUpClientException e)
                {
                    Exception cause = e.InnerException;
                    if (cause is ConnectException)
                    {
                        _log.warn(cause.Message);
                    }
                    else
                    {
                        _log.warn(format("Request failed exceptionally '%s'.", request), e);
                    }
                }
                catch (CatchupAddressResolutionException e)
                {
                    _log.warn("Unable to resolve address for '%s'. %s", request, e.Message);
                }
                terminationCondition();
                AwaitAndIncrementTimeout(timeout);
            }
        }
Ejemplo n.º 2
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: void send(org.neo4j.causalclustering.messaging.CatchUpRequest request) throws java.net.ConnectException
            internal virtual void Send(CatchUpRequest request)
            {
                if (!Active)
                {
                    throw new ConnectException("Channel is not connected");
                }
                NettyChannel.write(request.MessageType());
                NettyChannel.writeAndFlush(request);
            }
Ejemplo n.º 3
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private boolean successfulRequest(StoreCopyFinishedResponse response, org.neo4j.causalclustering.messaging.CatchUpRequest request) throws StoreCopyFailedException
        private bool SuccessfulRequest(StoreCopyFinishedResponse response, CatchUpRequest request)
        {
            StoreCopyFinishedResponse.Status responseStatus = response.Status();
            if (responseStatus == StoreCopyFinishedResponse.Status.Success)
            {
                _log.info(format("Request was successful '%s'", request));
                return(true);
            }
            else if (StoreCopyFinishedResponse.Status.ETooFarBehind == responseStatus || StoreCopyFinishedResponse.Status.EUnknown == responseStatus || StoreCopyFinishedResponse.Status.EStoreIdMismatch == responseStatus)
            {
                _log.warn(format("Request failed '%s'. With response: %s", request, response.Status()));
                return(false);
            }
            else
            {
                throw new StoreCopyFailedException(format("Request responded with an unknown response type: %s. '%s'", responseStatus, request));
            }
        }
Ejemplo n.º 4
0
        public override async Task CatchUp(CatchUpRequest request, IServerStreamWriter <CatchUpData> responseStream, ServerCallContext context)
        {
            var latestOffset = _storage.LatestOffset;

            var offset = request.Offset;

            while (!context.CancellationToken.IsCancellationRequested && offset < latestOffset)
            {
                var data = new CatchUpData
                {
                    Offset  = offset,
                    Message = Google.Protobuf.ByteString.CopyFrom(_storage.Get(offset))
                };

                await responseStream.WriteAsync(data);

                offset++;
            }
        }