Author: fhanik
Date: Tue Jun 13 21:53:55 2006
New Revision: 414073
URL: http://svn.apache.org/viewvc?rev=414073&view=rev
Log:
Fixed nextIndex bug and added support for multi threading during start/stop of
the entire demo
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java
tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java?rev=414073&r1=414072&r2=414073&view=diff
==============================================================================
---
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
(original)
+++
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
Tue Jun 13 21:53:55 2006
@@ -33,6 +33,7 @@
import org.apache.catalina.tribes.io.XByteBuffer;
import org.apache.catalina.tribes.membership.MemberImpl;
import org.apache.catalina.tribes.membership.Membership;
+import java.net.ConnectException;
/**
* <p>Title: A perfect failure detector </p>
@@ -254,6 +255,8 @@
}//end if
return true;
} catch ( SocketTimeoutException sx) {
+ //do nothing, we couldn't connect
+ } catch ( ConnectException cx) {
//do nothing, we couldn't connect
}catch (Exception x ) {
log.error("Unable to perform failure detection check, assuming
member down.",x);
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java?rev=414073&r1=414072&r2=414073&view=diff
==============================================================================
---
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java
(original)
+++
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java
Tue Jun 13 21:53:55 2006
@@ -163,9 +163,13 @@
}
public static int nextIndex(Member member, Member[] members) {
- int idx = indexOf(member,members);
- if (idx == (members.length-1) ) return members.length>0?0:-1;
- else return idx+1;
+ int idx = indexOf(member,members)+1;
+ if (idx >= members.length ) idx = ((members.length>0)?0:-1);
+
+//System.out.println("Next index:"+idx);
+//System.out.println("Member:"+member.getName());
+//System.out.println("Members:"+toNameString(members));
+ return idx;
}
Modified:
tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java?rev=414073&r1=414072&r2=414073&view=diff
==============================================================================
---
tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java
(original)
+++
tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java
Tue Jun 13 21:53:55 2006
@@ -18,6 +18,7 @@
public class CoordinationDemo {
static int CHANNEL_COUNT = 5;
static int SCREEN_WIDTH = 120;
+ static boolean MULTI_THREAD = false;
StringBuffer statusLine = new StringBuffer();
Status[] status = null;
BufferedReader reader = null;
@@ -38,9 +39,10 @@
public void printMenuOptions() {
System.out.println("Commands:");
- System.out.println("start [member id]");
- System.out.println("stop [member id]");
- System.out.println("quit");
+ System.out.println("\tstart [member id]");
+ System.out.println("\tstop [member id]");
+ System.out.println("\tprint (refresh)");
+ System.out.println("\tquit");
System.out.print("Enter command:");
}
@@ -90,33 +92,9 @@
String[] args = tokenize(l);
while ( args.length >= 1 && (!"quit".equalsIgnoreCase(args[0]))) {
if ("start".equalsIgnoreCase(args[0])) {
- if ( args.length == 1 ) {
- setSystemStatus("System starting up...");
- for (int i = 0; i < status.length; i++) status[i].start();
- setSystemStatus("System started.");
- } else {
- int index = -1;
- try { index = Integer.parseInt(args[1])-1;}catch (
Exception x ) {setSystemStatus("Invalid index:"+args[1]);}
- if ( index >= 0 ) {
- setSystemStatus("Starting member:"+(index+1));
- status[index].start();
- setSystemStatus("Member started:"+(index+1));
- }
- }
+ cmdStart(args);
} else if ("stop".equalsIgnoreCase(args[0])) {
- if ( args.length == 1 ) {
- setSystemStatus("System shutting down...");
- for (int i = 0; i < status.length; i++) status[i].stop();
- setSystemStatus("System stopped.");
- } else {
- int index = -1;
- try { index = Integer.parseInt(args[1])-1;}catch (
Exception x ) {setSystemStatus("Invalid index:"+args[1]);}
- if ( index >= 0 ) {
- setSystemStatus("Stopping member:"+(index+1));
- status[index].stop();
- setSystemStatus("Member stopped:"+(index+1));
- }
- }
+ cmdStop(args);
}
printScreen();
@@ -126,6 +104,56 @@
for ( int i=0; i<status.length; i++ ) status[i].stop();
}
+ private void cmdStop(String[] args) {
+ if ( args.length == 1 ) {
+ setSystemStatus("System shutting down...");
+ Thread[] t = new Thread[CHANNEL_COUNT];
+ for (int i = 0; i < status.length; i++) {
+ final int j = i;
+ t[j] = new Thread() {
+ public void run() {
+ status[j].stop();
+ }
+ };
+ }
+ for (int i = 0; i < status.length; i++) if (MULTI_THREAD )
t[i].start(); else t[i].run();
+ setSystemStatus("System stopped.");
+ } else {
+ int index = -1;
+ try { index = Integer.parseInt(args[1])-1;}catch ( Exception x )
{setSystemStatus("Invalid index:"+args[1]);}
+ if ( index >= 0 ) {
+ setSystemStatus("Stopping member:"+(index+1));
+ status[index].stop();
+ setSystemStatus("Member stopped:"+(index+1));
+ }
+ }
+ }
+
+ private void cmdStart(String[] args) {
+ if ( args.length == 1 ) {
+ setSystemStatus("System starting up...");
+ Thread[] t = new Thread[CHANNEL_COUNT];
+ for (int i = 0; i < status.length; i++) {
+ final int j = i;
+ t[j] = new Thread() {
+ public void run() {
+ status[j].start();
+ }
+ };
+ }
+ for (int i = 0; i < status.length; i++) if (MULTI_THREAD )
t[i].start(); else t[i].run();
+ setSystemStatus("System started.");
+ } else {
+ int index = -1;
+ try { index = Integer.parseInt(args[1])-1;}catch ( Exception x )
{setSystemStatus("Invalid index:"+args[1]);}
+ if ( index >= 0 ) {
+ setSystemStatus("Starting member:"+(index+1));
+ status[index].start();
+ setSystemStatus("Member started:"+(index+1));
+ }
+ }
+ }
+
public void setSystemStatus(String status) {
statusLine.delete(0,statusLine.length());
statusLine.append(status);
@@ -137,7 +165,16 @@
public static void main(String[] args) throws Exception {
- if ( args.length == 1 ) CHANNEL_COUNT = Integer.parseInt(args[0]);
+ System.out.println("Usage:");
+ System.out.println("\tjava
org.apache.catalina.tribes.demos.CoordinationDemo [channel-count
multi-thread]");
+ System.out.println("Example:");
+ System.out.println("\tjava o.a.c.t.d.CoordinationDemo -> starts demo
single threaded start/stop with 5 channels");
+ System.out.println("\tjava o.a.c.t.d.CoordinationDemo 10 -> starts
demo single threaded start/stop with 10 channels");
+ System.out.println("\tjava o.a.c.t.d.CoordinationDemo 7 true-> starts
demo multi threaded start/stop with 7 channels");
+ System.out.println();
+
+ if ( args.length >= 1 ) CHANNEL_COUNT = Integer.parseInt(args[0]);
+ if ( args.length >= 2 ) MULTI_THREAD = true;
CoordinationDemo demo = new CoordinationDemo();
demo.waitForInput();
}
@@ -217,6 +254,8 @@
if ( channel != null ) {
channel.stop(channel.DEFAULT);
status = "Channel Stopped";
+ } else {
+ status = "Channel Already Stopped";
}
}catch ( Exception x ) {
status = "Stop failed:"+x.getMessage();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]