[ 
https://issues.apache.org/jira/browse/GEODE-8584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17210293#comment-17210293
 ] 

ASF GitHub Bot commented on GEODE-8584:
---------------------------------------

agingade commented on a change in pull request #5605:
URL: https://github.com/apache/geode/pull/5605#discussion_r501818461



##########
File path: 
geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
##########
@@ -2588,17 +2592,20 @@ void writeFully(SocketChannel channel, ByteBuffer 
buffer, boolean forceAsync,
           }
           // fall through
         }
-        ByteBuffer wrappedBuffer = ioFilter.wrap(buffer);
-        while (wrappedBuffer.remaining() > 0) {
-          int amtWritten = 0;
-          long start = stats.startSocketWrite(true);
-          try {
-            amtWritten = channel.write(wrappedBuffer);
-          } finally {
-            stats.endSocketWrite(true, start, amtWritten, 0);
+        // synchronize on the ioFilter while using its network buffer
+        synchronized (ioFilter) {
+          ByteBuffer wrappedBuffer = ioFilter.wrap(buffer);
+          while (wrappedBuffer.remaining() > 0) {
+            int amtWritten = 0;
+            long start = stats.startSocketWrite(true);
+            try {
+              amtWritten = channel.write(wrappedBuffer);

Review comment:
       Is there anything that needs to be done, if write throws 
exception...Sorry I may be asking wrong question as I don't have much context 
here.

##########
File path: 
geode-core/src/main/java/org/apache/geode/internal/net/NioSslEngine.java
##########
@@ -396,9 +402,17 @@ public synchronized void close(SocketChannel 
socketChannel) {
     } catch (IOException e) {
       throw new GemFireIOException("exception closing SSL session", e);
     } finally {
-      bufferPool.releaseBuffer(TRACKED_SENDER, myNetData);
-      bufferPool.releaseBuffer(TRACKED_RECEIVER, peerAppData);
+      logger.info("NioSSLEngine releasing two buffers myNetData={}({}), 
peerAppData={}({})",

Review comment:
       This should be info or debug level log? just checking...




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Message transmission fails with IllegalStateException in socket i/o code
> ------------------------------------------------------------------------
>
>                 Key: GEODE-8584
>                 URL: https://issues.apache.org/jira/browse/GEODE-8584
>             Project: Geode
>          Issue Type: Bug
>          Components: membership, messaging
>    Affects Versions: 1.12.0, 1.13.0, 1.14.0
>            Reporter: Bruce J Schuchardt
>            Priority: Major
>              Labels: pull-request-available
>
> Transmission of an update operation failed with a toData exception caused by 
> an IllegalStateException in socket i/o code.  It shouldn't be possible for 
> this exception to happen unless multiple threads are using the buffer at the 
> same time.
>  
> {noformat}
> org.apache.geode.ToDataException: toData failed on dsfid=71 msg:null
>       at 
> org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1509)
>       at 
> org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:249)
>       at 
> org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:306)
>       at 
> org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:182)
>       at 
> org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:511)
>       at 
> org.apache.geode.distributed.internal.DistributionImpl.directChannelSend(DistributionImpl.java:346)
>       at 
> org.apache.geode.distributed.internal.DistributionImpl.send(DistributionImpl.java:291)
>       at 
> org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2053)
>       at 
> org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:1981)
>       at 
> org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2018)
>       at 
> org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1083)
>       at 
> org.apache.geode.internal.cache.DistributedCacheOperation._distribute(DistributedCacheOperation.java:572)
>       at 
> org.apache.geode.internal.cache.DistributedCacheOperation.startOperation(DistributedCacheOperation.java:277)
>       at 
> org.apache.geode.internal.cache.DistributedCacheOperation.distribute(DistributedCacheOperation.java:318)
>       at 
> org.apache.geode.internal.cache.DistributedRegion.distributeUpdate(DistributedRegion.java:520)
>       at 
> org.apache.geode.internal.cache.DistributedRegion.basicPutPart3(DistributedRegion.java:498)
>       at 
> org.apache.geode.internal.cache.map.RegionMapPut.doAfterCompletionActions(RegionMapPut.java:307)
>       at 
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPut(AbstractRegionMapPut.java:185)
>       at 
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.runWhileLockedForCacheModification(AbstractRegionMapPut.java:119)
>       at 
> org.apache.geode.internal.cache.map.RegionMapPut.runWhileLockedForCacheModification(RegionMapPut.java:161)
>       at 
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.put(AbstractRegionMapPut.java:169)
>       at 
> org.apache.geode.internal.cache.AbstractRegionMap.basicPut(AbstractRegionMap.java:2044)
>       at 
> org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5599)
>       at 
> org.apache.geode.internal.cache.DistributedRegion.virtualPut(DistributedRegion.java:393)
>       at 
> org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5577)
>       at 
> org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:157)
>       at 
> org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5035)
>       at 
> org.apache.geode.internal.cache.LocalRegion.replaceWithCallbackArgument(LocalRegion.java:10600)
>       at 
> org.apache.geode.internal.cache.LocalRegion.replace(LocalRegion.java:10566)
>         [application code traces deleted]
> Caused by: java.lang.IllegalArgumentException
>       at java.nio.Buffer.position(Buffer.java:244)
>       at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:96)
>       at sun.nio.ch.IOUtil.write(IOUtil.java:51)
>       at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:469)
>       at 
> org.apache.geode.internal.tcp.Connection.writeFully(Connection.java:2596)
>       at 
> org.apache.geode.internal.tcp.Connection.sendPreserialized(Connection.java:1866)
>       at 
> org.apache.geode.internal.tcp.MsgStreamer.realFlush(MsgStreamer.java:330)
>       at org.apache.geode.internal.tcp.MsgStreamer.write(MsgStreamer.java:390)
>       at 
> org.apache.geode.DataSerializer.writeByteArray(DataSerializer.java:1185)
>       at 
> org.apache.geode.DataSerializer.writeByteArray(DataSerializer.java:1153)
>       at 
> org.apache.geode.internal.cache.DistributedCacheOperation.writeValue(DistributedCacheOperation.java:137)
>       at 
> org.apache.geode.internal.cache.UpdateOperation$UpdateMessage.toData(UpdateOperation.java:417)
>       at 
> org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:213)
>       at 
> org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:137)
>       at 
> org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1484)
>       ... 37 more {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to