LocalBSPRunner cannot deliver multiple messages to the same peer 
-----------------------------------------------------------------

                 Key: HAMA-482
                 URL: https://issues.apache.org/jira/browse/HAMA-482
             Project: Hama
          Issue Type: Bug
            Reporter: Tommaso Teofili
            Assignee: Tommaso Teofili
             Fix For: 0.4.0


the line 331 of LocalBSPRunner contains a warning which may result in bugs with 
multiple messages.
In fact 
{code}
LinkedList<BSPMessage> msgs = localOutgoingMessages.get(peerName);
{code}

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

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 :
{code}
      InetSocketAddress inetSocketAddress = socketCache.get(peerName);
      if (inetSocketAddress == null) {
        inetSocketAddress = BSPNetUtils.getAddress(peerName);
        socketCache.put(peerName, inetSocketAddress);
      }
{code}
upmost in the method and then call 

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

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).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to