Example #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldLogContentOfTheMessageOnIOError() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldLogContentOfTheMessageOnIOError()
        {
            BoltConnection            connection             = mock(typeof(BoltConnection));
            BoltResponseMessageWriter responseMessageHandler = mock(typeof(BoltResponseMessageWriter));

            BoltRequestMessageReader requestMessageReader = new BoltRequestMessageReaderV1(connection, responseMessageHandler, NullLogService.Instance);

            LogService logService = mock(typeof(LogService));
            Log        log        = mock(typeof(Log));

            when(logService.GetInternalLog(typeof(MessageDecoder))).thenReturn(log);

            _channel = new EmbeddedChannel(new MessageDecoder(PackerUnderTest.newUnpacker, requestMessageReader, logService));

            sbyte invalidMessageSignature = sbyte.MaxValue;

            sbyte[] messageBytes = PackMessageWithSignature(invalidMessageSignature);

            try
            {
                _channel.writeInbound(Unpooled.wrappedBuffer(messageBytes));
                fail("Exception expected");
            }
            catch (Exception)
            {
            }

            AssertMessageHexDumpLogged(log, messageBytes);
        }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private static org.neo4j.bolt.messaging.BoltResponseMessageWriter newResponseHandlerMock(boolean fatalError, Throwable error) throws Exception
        private static BoltResponseMessageWriter NewResponseHandlerMock(bool fatalError, Exception error)
        {
            BoltResponseMessageWriter handler = NewResponseHandlerMock();

            doThrow(error).when(handler).write(any(typeof(FailureMessage)));
            return(handler);
        }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private static org.neo4j.logging.AssertableLogProvider emulateFailureWritingError(org.neo4j.bolt.runtime.Neo4jError error, Throwable errorDuringWrite) throws Exception
        private static AssertableLogProvider EmulateFailureWritingError(Neo4jError error, Exception errorDuringWrite)
        {
            AssertableLogProvider     logProvider     = new AssertableLogProvider();
            BoltResponseMessageWriter responseHandler = NewResponseHandlerMock(error.Fatal, errorDuringWrite);

            MessageProcessingHandler handler = new MessageProcessingHandler(responseHandler, mock(typeof(BoltConnection)), logProvider.GetLog("Test"));

            handler.MarkFailed(error);
            handler.OnFinish();

            return(logProvider);
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldCallHaltOnUnexpectedFailures() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldCallHaltOnUnexpectedFailures()
        {
            // Given
            BoltResponseMessageWriter msgWriter = NewResponseHandlerMock();

            doThrow(new Exception("Something went horribly wrong")).when(msgWriter).write(any(typeof(SuccessMessage)));

            BoltConnection           connection = mock(typeof(BoltConnection));
            MessageProcessingHandler handler    = new MessageProcessingHandler(msgWriter, connection, mock(typeof(Log)));

            // When
            handler.OnFinish();

            // Then
            verify(connection).stop();
        }
Example #5
0
        private void PublishError(BoltResponseMessageWriter messageWriter, Neo4jError error)
        {
            try
            {
                if (error.Fatal)
                {
                    messageWriter.Write(new FatalFailureMessage(error.Status(), error.Message()));
                }
                else
                {
                    messageWriter.Write(new FailureMessage(error.Status(), error.Message()));
                }
            }
            catch (PackOutputClosedException e)
            {
                // Can't write error to the client, because the connection is closed.
                // Very likely our error is related to the connection being closed.

                // If the error is that the transaction was terminated, then the error is a side-effect of
                // us cleaning up stuff that was running when the client disconnected. Log a warning without
                // stack trace to highlight clients are disconnecting while stuff is running:
                if (_clientMidOpDisconnectErrors.Contains(error.Status()))
                {
                    Log.warn("Client %s disconnected while query was running. Session has been cleaned up. " + "This can be caused by temporary network problems, but if you see this often, " + "ensure your applications are properly waiting for operations to complete before exiting.", e.ClientAddress());
                    return;
                }

                // If the error isn't that the tx was terminated, log it to the console for debugging. It's likely
                // there are other "ok" errors that we can whitelist into the conditional above over time.
                Log.warn("Unable to send error back to the client. " + e.Message, error.Cause());
            }
            catch (Exception t)
            {
                // some unexpected error happened while writing exception back to the client
                // log it together with the original error being suppressed
                t.addSuppressed(error.Cause());
                Log.error("Unable to send error back to the client", t);
            }
        }
Example #6
0
 public MessageProcessingHandler(BoltResponseMessageWriter messageWriter, BoltConnection connection, Log logger)
 {
     this.MessageWriter = messageWriter;
     this.Connection    = connection;
     this.Log           = logger;
 }
 private static BoltResponseHandler NewSimpleResponseHandler(BoltResponseMessageWriter responseMessageWriter, BoltConnection connection, LogService logService)
 {
     return(new MessageProcessingHandler(responseMessageWriter, connection, InternalLog(logService)));
 }
        private static IList <RequestMessageDecoder> BuildDecoders(BoltConnection connection, BoltResponseMessageWriter responseMessageWriter, LogService logService)
        {
            BoltResponseHandler resultHandler  = new ResultHandler(responseMessageWriter, connection, InternalLog(logService));
            BoltResponseHandler defaultHandler = NewSimpleResponseHandler(responseMessageWriter, connection, logService);

            return(Arrays.asList(new HelloMessageDecoder(defaultHandler), new RunMessageDecoder(defaultHandler), new DiscardAllMessageDecoder(resultHandler), new PullAllMessageDecoder(resultHandler), new BeginMessageDecoder(defaultHandler), new CommitMessageDecoder(resultHandler), new RollbackMessageDecoder(resultHandler), new ResetMessageDecoder(connection, defaultHandler), new GoodbyeMessageDecoder(connection, defaultHandler)
                                 ));
        }
 public BoltRequestMessageReaderV3(BoltConnection connection, BoltResponseMessageWriter responseMessageWriter, LogService logService) : base(connection, NewSimpleResponseHandler(responseMessageWriter, connection, logService), BuildDecoders(connection, responseMessageWriter, logService))
 {
 }
        private static IList <RequestMessageDecoder> BuildDecoders(BoltConnection connection, BoltResponseMessageWriter responseMessageWriter, LogService logService)
        {
            BoltResponseHandler initHandler    = NewSimpleResponseHandler(connection, responseMessageWriter, logService);
            BoltResponseHandler runHandler     = NewSimpleResponseHandler(connection, responseMessageWriter, logService);
            BoltResponseHandler resultHandler  = new ResultHandler(responseMessageWriter, connection, InternalLog(logService));
            BoltResponseHandler defaultHandler = NewSimpleResponseHandler(connection, responseMessageWriter, logService);

            return(Arrays.asList(new InitMessageDecoder(initHandler), new AckFailureMessageDecoder(defaultHandler), new ResetMessageDecoder(connection, defaultHandler), new RunMessageDecoder(runHandler), new DiscardAllMessageDecoder(resultHandler), new PullAllMessageDecoder(resultHandler)
                                 ));
        }