Author: andygumbrecht
Date: Mon Jul 9 07:45:56 2012
New Revision: 1358955
URL: http://svn.apache.org/viewvc?rev=1358955&view=rev
Log:
Make interface enumeration less picky.
Modified:
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
Modified:
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java?rev=1358955&r1=1358954&r2=1358955&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
(original)
+++
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
Mon Jul 9 07:45:56 2012
@@ -10,6 +10,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantLock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -173,6 +174,8 @@ public class MulticastPulseClient extend
}
});
+ final ReentrantLock setLock = new ReentrantLock();
+
//Start threads that listen for multicast packets on our channel.
//These need to start 'before' we pulse a request.
final ArrayList<Future> futures = new ArrayList<Future>();
@@ -248,6 +251,8 @@ public class MulticastPulseClient extend
svc = ("mp-" + serverHost + ":" +
group + ":" + svc);
+ setLock.lock();
+
try {
if (svc.contains("0.0.0.0")) {
for (final String h :
hosts) {
@@ -263,6 +268,8 @@ public class MulticastPulseClient extend
}
} catch (Throwable e) {
//Ignore
+ } finally {
+ setLock.unlock();
}
}
}
@@ -334,7 +341,7 @@ public class MulticastPulseClient extend
}
}
- return new HashSet<URI>(set);
+ return set;
}
/**
@@ -423,15 +430,7 @@ public class MulticastPulseClient extend
final NetworkInterface next = interfaces.nextElement();
if (next.supportsMulticast() && next.isUp()) {
-
- final Enumeration<InetAddress> addresses =
next.getInetAddresses();
- while (addresses.hasMoreElements()) {
- final InetAddress address = addresses.nextElement();
- if (address.isSiteLocalAddress()) {
- list.add(next);
- break;
- }
- }
+ list.add(next);
}
}
} catch (SocketException e) {
Modified:
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java?rev=1358955&r1=1358954&r2=1358955&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
(original)
+++
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
Mon Jul 9 07:45:56 2012
@@ -407,15 +407,7 @@ public class MulticastPulseAgent impleme
final NetworkInterface next = interfaces.nextElement();
if (next.supportsMulticast() && next.isUp()) {
-
- final Enumeration<InetAddress> addresses =
next.getInetAddresses();
- while (addresses.hasMoreElements()) {
- final InetAddress address = addresses.nextElement();
- if (address.isSiteLocalAddress()) {
- list.add(next);
- break;
- }
- }
+ list.add(next);
}
}
} catch (SocketException e) {
Modified:
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java?rev=1358955&r1=1358954&r2=1358955&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
(original)
+++
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
Mon Jul 9 07:45:56 2012
@@ -45,6 +45,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantLock;
/**
* Copyright (c) ORPRO Vision GmbH.
@@ -103,14 +104,18 @@ public class MulticastPulseAgentTest {
throw new Exception(host + " is not a valid multicast address");
}
- final byte[] bytes = (MulticastPulseAgent.CLIENT +
forGroup).getBytes(utf8);
- final DatagramPacket request = new DatagramPacket(bytes, bytes.length,
new InetSocketAddress(ia, port));
-
- final AtomicBoolean running = new AtomicBoolean(true);
-
//Returns at least one socket per valid network interface
final MulticastSocket[] clientSockets =
MulticastPulseAgent.getSockets(host, port);
+ //No point going on if we don't have sockets...
+ if (clientSockets.length < 1) {
+ System.out.println("Cannnot perform multipulse test without a
valid interface");
+ return;
+ }
+
+ final byte[] bytes = (MulticastPulseAgent.CLIENT +
forGroup).getBytes(utf8);
+ final DatagramPacket request = new DatagramPacket(bytes, bytes.length,
new InetSocketAddress(ia, port));
+ final AtomicBoolean running = new AtomicBoolean(true);
final Timer timer = new Timer(true);
final Set<URI> set = new TreeSet<URI>(new Comparator<URI>() {
@@ -143,6 +148,8 @@ public class MulticastPulseAgentTest {
}
});
+ final ReentrantLock setLock = new ReentrantLock();
+
//Start threads that listen for multicast packets on our channel.
//These need to start 'before' we pulse a request.
final ArrayList<Future> futures = new ArrayList<Future>();
@@ -160,7 +167,7 @@ public class MulticastPulseAgentTest {
} catch (Throwable e) {
//Ignore
}
- System.out.println("Enter MulticastPulse client thread on:
" + name);
+ System.out.println("Entered MulticastPulse client thread
on: " + name);
final DatagramPacket response = new DatagramPacket(new
byte[2048], 2048);
@@ -198,7 +205,7 @@ public class MulticastPulseAgentTest {
final String[] serviceList =
services.split("\\|");
final String[] hosts = s.split(",");
- System.out.println(String.format("\nClient
received Server pulse:\n\tGroup: %1$s\n\tServices: %2$s\n\tServer: %3$s\n",
group, services, s));
+ System.out.println(String.format("\n" +
name + " received Server pulse:\n\tGroup: %1$s\n\tServices: %2$s\n\tServer:
%3$s\n", group, services, s));
for (String svc : serviceList) {
@@ -229,6 +236,8 @@ public class MulticastPulseAgentTest {
svc = ("mp-" + serverHost + ":" +
group + ":" + svc);
+ setLock.lock();
+
try {
if (svc.contains("0.0.0.0")) {
for (final String h :
hosts) {
@@ -244,6 +253,8 @@ public class MulticastPulseAgentTest {
}
} catch (Throwable e) {
//Ignore
+ } finally {
+ setLock.unlock();
}
} else {
System.out.println("Reject
service: " + serviceUri.toASCIIString() + " - Not looking for scheme: " +
serviceUri.getScheme());