[JBoss JIRA] Created: (JGRP-1332) MuxRpcDispatcher: use of topics disturbs invocations
by Benoit Leblanc (JIRA)
MuxRpcDispatcher: use of topics disturbs invocations
----------------------------------------------------
Key: JGRP-1332
URL: https://issues.jboss.org/browse/JGRP-1332
Project: JGroups
Issue Type: Bug
Affects Versions: 2.12.1
Reporter: Benoit Leblanc
Assignee: Bela Ban
Scenario 1 : Let's A and B be 2 jgroups members connected to the same channels "rpc". Member A uses an
MuxRpcDispatcher with topic id 1 and Member B uses an MuxRpcDispatcher with different topic id, 2 for example. Channel configuration file is « udp.xml ».
When Member A sends a multicast rpc call (mode = GET_ALL) with no filter (null), I observed that server object on member B was invoked although it doesn't have the same topic as caller from member A.
To better observe invocations, I deployed the attached sample program (Launcher.java) on different machine (member A hosted by 192.168.46.36 and member B hosted by 192.168.46.38) and disable local invocation on channel ( channel.setOpt(Channel.LOCAL, false);). I also use a kind of jgroups sniffer (on host of member B) that logs members exchange. See enclosed file RpcTopic-1ToTopic_2_NoMuxUpHandler.log). Note that topic should be different, so you need to modify sample code before execution on member A or B.
Scenario 2: roughly, the same as the previous one. Just set an UpHandler to the channel :
channel.setUpHandler(new MuxUpHandler());
I observed that:
- Object server on member B wasn't invoked (expected behavior).
- Member B didn't respond at all. May be it should send back an ack. See RpcTopic-1ToTopic_2_WithMuxUpHandler.log file.
- The invoker (or caller) runs until the timeout kicks in. Or block for ever if timeout = 0. Execution shouldn't runs out "immediately" ?
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 7 months
[JBoss JIRA] Created: (JGRP-1319) GMS: view acks on MergeView are only required from partition coordinators
by Bela Ban (JIRA)
GMS: view acks on MergeView are only required from partition coordinators
-------------------------------------------------------------------------
Key: JGRP-1319
URL: https://issues.jboss.org/browse/JGRP-1319
Project: JGroups
Issue Type: Enhancement
Reporter: Bela Ban
Assignee: Bela Ban
Priority: Minor
Fix For: 2.12.2, 3.1
When we have a merge of {A,B,C} and {X,Y,Z}, and A and X are the partition coordinators, then view acks for the new combined view {A,B,C,X,Y,Z} will not be received from non coordinator B,C, Y and Z.
Therefore, as an optimzation, and to avoid spurious warnings, we should get acks for the MergeView only from A and X. A itself will dissemniate the view locally and should only get acks from A,B,C, and X should only get acks from X,Y,Z, too.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 7 months
[JBoss JIRA] Created: (JGRP-1321) ENCRYPT puts 'illegal' chars into UTF-8 String
by Ken Michie (JIRA)
ENCRYPT puts 'illegal' chars into UTF-8 String
----------------------------------------------
Key: JGRP-1321
URL: https://issues.jboss.org/browse/JGRP-1321
Project: JGroups
Issue Type: Bug
Affects Versions: 2.12, 2.11, 2.10, 2.9, 2.8, 2.7, 2.6
Environment: Sun JVM and IBM JVM are currently incompatible. IBM is fixing, but still this is a problem since it weakens the strength of the key
Reporter: Ken Michie
Assignee: Bela Ban
Priority: Minor
Storing any random byte array into a UTF-8 string causes invalid characters to be replaced with hex value FFFD. Since the IBM JVM currently does this incorrectly (differently from the Sun JVM), 2 nodes on different JVMs (IBM and SUN) using ENCRYPT will not be able to communicate because they calculate different MD5 digest values.
Main thread:
http://old.nabble.com/ENCRYPT-puts-illegal-chars-into-UTF-8-String-seems-...
More description of why UTF-8 does this recplacement:
http://en.wikipedia.org/wiki/UTF-8
The fix will possibly make older versions of ENCRYPT incompatible since it will change the calculated MD5 digest value.
To fix it, ENCRYPT should be changed from this:
private void initSymCiphers(String algorithm, SecretKey secret) throws Exception {
...
symVersion=new String(digest.digest(), "UTF-8");
...
}
To something like this (byteArrayToHexString() copied from http://jkmessenger.googlecode.com/svn-history/r8/trunk/CryptoUtils.java):
private void initSymCiphers(String algorithm, SecretKey secret) throws Exception {
...
symVersion = byteArrayToHexString(digest.digest())
...
public static String byteArrayToHexString(byte[] b){
StringBuffer sb = new StringBuffer(b.length * 2);
for (int i = 0; i < b.length; i++){
int v = b[i] & 0xff;
if (v < 16) {
sb.append('0');
}
sb.append(Integer.toHexString(v));
}
return sb.toString().toUpperCase();
}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 7 months
[JBoss JIRA] Created: (JGRP-1337) ConnectionMap: getConnection() can be a bottleneck
by Bela Ban (JIRA)
ConnectionMap: getConnection() can be a bottleneck
--------------------------------------------------
Key: JGRP-1337
URL: https://issues.jboss.org/browse/JGRP-1337
Project: JGroups
Issue Type: Enhancement
Reporter: Bela Ban
Assignee: Bela Ban
Priority: Minor
Fix For: 3.1
When multiple threads call TcpConnectionMap.Mapper.getConnection() to different target addresses, and some of those addresses are down, then the threads unnecessarily compete for the same lock, therefore socket creations to targets which are up might get delayed by socket creations to targets which are down.
SOLUTION: move the actual creation of a socket out of the lock scope
NOTE: getConnection() may not even need to acquire the lock as the calling code already acquired it.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 7 months