incubator-hama-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tommaso Teofili <tommaso.teof...@gmail.com>
Subject LocalBSPRunner and multiple messages to the same peer
Date Tue, 29 Nov 2011 17:43:04 GMT
Hi all,
I just noticed the line 331 of LocalBSPRunner contains a warning which may
result in bugs with multiple messages.
In fact

LinkedList<BSPMessage> msgs = localOutgoingMessages.get(peerName);

is trying to get a List of BSPMessage instances from a
localOutgoingMessages of type HashMap<InetSocketAddress,
LinkedList<BSPMessage>>.

It seems to me there is problem as peerName is a String, not a
InetSocketAddress and in fact my debugging session highlighted that get()
method to result always to return a null object.

The quick fix seems to be putting the lines 337-341 :

      InetSocketAddress inetSocketAddress = socketCache.get(peerName);
      if (inetSocketAddress == null) {
        inetSocketAddress = BSPNetUtils.getAddress(peerName);
        socketCache.put(peerName, inetSocketAddress);
      }

upmost in the method and then call

LinkedList<BSPMessage> msgs = localOutgoingMessages.get(inetSocketAddress);

This was highlighted when dealing with multiple messages sent to a same
peer in local mode (only the last msg was actually stored in the
outGoingMessages item for that peer).

Please let me know if this sounds completely wrong but it seems this fixes
my scenario.
Cheers,
Tommaso

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message