This is an automated email from the ASF dual-hosted git repository. quinn pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 5884ab7 CAMEL-12258: use the configured readTimeout for the initial HL7 message read attempt 5884ab7 is described below commit 5884ab755731d40a1d3d00153cc776fb0c068936 Author: Quinn Stevenson <qu...@apache.org> AuthorDate: Mon Feb 12 13:25:59 2018 -0700 CAMEL-12258: use the configured readTimeout for the initial HL7 message read attempt --- .../component/mllp/internal/MllpSocketBuffer.java | 47 +++++++++++++++++++++- .../TcpServerConsumerValidationRunnable.java | 8 ++-- .../internal/MllpSocketBufferReadFromTest.java | 2 +- 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/MllpSocketBuffer.java b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/MllpSocketBuffer.java index faf6d63..bc06786 100644 --- a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/MllpSocketBuffer.java +++ b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/MllpSocketBuffer.java @@ -326,10 +326,26 @@ public class MllpSocketBuffer { return ""; } + public String toPrintFriendlyStringAndReset() { + String answer = toPrintFriendlyString(); + + reset(); + + return answer; + } + public synchronized String toHl7String() { return this.toHl7String(StandardCharsets.US_ASCII.name()); } + public String toHl7StringAndReset() { + String answer = toHl7String(); + + reset(); + + return answer; + } + public synchronized String toHl7String(String charsetName) { String hl7String = null; @@ -354,6 +370,14 @@ public class MllpSocketBuffer { return hl7String; } + public String toHl7StringAndReset(String charsetName) { + String answer = toHl7String(charsetName); + + reset(); + + return answer; + } + /** * Convert the enveloped contents of the buffer (excluding enveloping characters) to a print-friendly * String representation. @@ -370,6 +394,14 @@ public class MllpSocketBuffer { return ""; } + public String toPrintFriendlyHl7StringAndReset() { + String answer = toPrintFriendlyHl7String(); + + reset(); + + return answer; + } + public synchronized byte[] toMllpPayload() { byte[] mllpPayload = null; @@ -388,6 +420,14 @@ public class MllpSocketBuffer { return mllpPayload; } + public byte[] toMllpPayloadAndReset() { + byte[] answer = toMllpPayload(); + + reset(); + + return answer; + } + public synchronized int getMllpPayloadLength() { int answer = -1; @@ -576,7 +616,12 @@ public class MllpSocketBuffer { updateIndexes(buffer[availableByteCount + i], i); } availableByteCount += readCount; - log.trace("Read {} bytes for a total of {} bytes", readCount, availableByteCount); + + if (hasStartOfBlock()) { + log.trace("Read {} bytes for a total of {} bytes", readCount, availableByteCount); + } else { + log.warn("Ignoring {} bytes received before START_OF_BLOCK", size(), toPrintFriendlyStringAndReset()); + } } } catch (SocketTimeoutException timeoutEx) { throw timeoutEx; diff --git a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/TcpServerConsumerValidationRunnable.java b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/TcpServerConsumerValidationRunnable.java index 066b3db..10a9448 100644 --- a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/TcpServerConsumerValidationRunnable.java +++ b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/internal/TcpServerConsumerValidationRunnable.java @@ -138,18 +138,18 @@ public class TcpServerConsumerValidationRunnable implements Runnable { log.debug("Checking {} for data", combinedAddress); try { - mllpBuffer.readFrom(clientSocket, 500, 50); + mllpBuffer.readFrom(clientSocket, Math.min(500, consumer.getConfiguration().getReceiveTimeout()), consumer.getConfiguration().getReadTimeout()); if (mllpBuffer.hasCompleteEnvelope() || mllpBuffer.hasStartOfBlock()) { consumer.startConsumer(clientSocket, mllpBuffer); } else if (!mllpBuffer.isEmpty()) { // We have some leading out-of-band data but no START_OF_BLOCK - log.info("Ignoring out-of-band data on initial read: {}", mllpBuffer.toStringAndReset()); + log.info("Ignoring out-of-band data on initial read [{} bytes]: {}", mllpBuffer.size(), mllpBuffer.toPrintFriendlyStringAndReset()); mllpBuffer.resetSocket(clientSocket); } } catch (MllpSocketException socketEx) { // TODO: The socket is invalid for some reason if (!mllpBuffer.isEmpty()) { - log.warn("Exception encountered receiving complete message: ", mllpBuffer.toStringAndReset()); + log.warn("Exception encountered receiving complete initial message [{} bytes]: {}", mllpBuffer.size(), mllpBuffer.toPrintFriendlyStringAndReset()); } mllpBuffer.resetSocket(clientSocket); } catch (SocketTimeoutException timeoutEx) { @@ -157,7 +157,7 @@ public class TcpServerConsumerValidationRunnable implements Runnable { log.debug("Initial read timed-out but no data was read - starting consumer"); consumer.startConsumer(clientSocket, mllpBuffer); } else { - log.warn("Timeout receiving complete message: {}", mllpBuffer.toStringAndReset()); + log.warn("Timeout receiving complete initial message on read [{} bytes]: {}", mllpBuffer.size(), mllpBuffer.toPrintFriendlyStringAndReset()); mllpBuffer.resetSocket(clientSocket); } } finally { diff --git a/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/internal/MllpSocketBufferReadFromTest.java b/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/internal/MllpSocketBufferReadFromTest.java index ab2f532..ddf1974 100644 --- a/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/internal/MllpSocketBufferReadFromTest.java +++ b/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/internal/MllpSocketBufferReadFromTest.java @@ -83,7 +83,7 @@ public class MllpSocketBufferReadFromTest extends SocketBufferTestSupport { instance.readFrom(socketStub); fail("Should have thrown and exception"); } catch (SocketTimeoutException expectedEx) { - assertArrayEquals("FOOBAR".getBytes(), instance.toByteArray()); + assertNull(instance.toByteArray()); } } } \ No newline at end of file -- To stop receiving notification emails like this one, please contact qu...@apache.org.