Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
I put a pause in Services.installView() before the view is passed to the Messenger service and ran LocatorUDPSecurityDUnitTest.testCollocatedLocatorWithSecurity() and encountered a RuntimeException:
[vm1] java.lang.RuntimeException: Not found public key for member 10.118.20.12(68202)<v31>:32773 [vm1] at org.apache.geode.distributed.internal.membership.gms.messenger.GMSEncrypt.getPublicKey(GMSEncrypt.java:178) [vm1] at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger.getPublicKey(JGroupsMessenger.java:1367) [vm1] at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.addPublicKeysToView(GMSJoinLeave.java:933) [vm1] at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.sendView(GMSJoinLeave.java:896) [vm1] at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.prepareView(GMSJoinLeave.java:838) [vm1] at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave$ViewCreator.prepareAndSendView(GMSJoinLeave.java:2385) [vm1] at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave$ViewCreator.sendInitialView(GMSJoinLeave.java:2031) [vm1] at org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave$ViewCreator.run(GMSJoinLeave.java:2091) [vm1] Caused by: java.lang.NullPointerException [vm1] at java.security.spec.EncodedKeySpec.<init>(EncodedKeySpec.java:56) [vm1] at java.security.spec.X509EncodedKeySpec.<init>(X509EncodedKeySpec.java:64) [vm1] at org.apache.geode.distributed.internal.membership.gms.messenger.GMSEncrypt.getPublicKey(GMSEncrypt.java:545) [vm1] at org.apache.geode.distributed.internal.membership.gms.messenger.GMSEncrypt$PeerEncryptor.<init>(GMSEncrypt.java:377) [vm1] at org.apache.geode.distributed.internal.membership.gms.messenger.GMSEncrypt.createPeerEncryptor(GMSEncrypt.java:301) [vm1] at org.apache.geode.distributed.internal.membership.gms.messenger.GMSEncrypt.getPeerEncryptor(GMSEncrypt.java:259) [vm1] at org.apache.geode.distributed.internal.membership.gms.messenger.GMSEncrypt.getPublicKey(GMSEncrypt.java:176) [vm1] ... 7 more
Since GMSJoinLeave already had the new view installed and JGroupsMessenger did not have the new view installed we were unable to find the public key for one of the recipients of the new view. View preparation should probably be synchronized with view installation so that both aren't done in parallel.