From: Sébastien Miquée Date: Wed, 17 Feb 2010 01:00:48 +0000 (+0100) Subject: Fixing some bugs. X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/jaceP2P.git/commitdiff_plain/80ef4550f12b23bb3c35aff33e40761fa9a1f71d Fixing some bugs. - Correcting a problem during the transformation of a node into an extra spawner; - Correcting some mechanisms in the connected nodes registers management. --- diff --git a/src/jaceP2P/JaceServer.java b/src/jaceP2P/JaceServer.java index 8b973ef..d63f6ee 100644 --- a/src/jaceP2P/JaceServer.java +++ b/src/jaceP2P/JaceServer.java @@ -34,10 +34,9 @@ public class JaceServer extends UnicastRemoteObject implements JaceInterface { int nbdc, int nbsdc, int nbDaemonPerSpawner, int nbDaemonPerThread) throws RemoteException { System.out.println("Beginning the transformation ..."); -// @SuppressWarnings("unused") -// JaceSpawner spawner = new JaceSpawner(params, appliName, reg, nbTasks, -// snodeStub, rank, heartTime, tag, nbdc, nbsdc, -// nbDaemonPerSpawner, nbDaemonPerThread); + new JaceSpawner(params, appliName, reg, nbTasks, + snodeStub, rank, heartTime, tag, nbdc, nbsdc, + nbDaemonPerSpawner, nbDaemonPerThread); HeartBeatThread.Instance().kill(); return Register.Instance().getSpawnerStub(); } diff --git a/src/jaceP2P/JaceSpawner.java b/src/jaceP2P/JaceSpawner.java index e2f68d5..66be55a 100644 --- a/src/jaceP2P/JaceSpawner.java +++ b/src/jaceP2P/JaceSpawner.java @@ -181,8 +181,10 @@ public class JaceSpawner { public void startProcess(Vector spawnersList) { this.spawnersList = spawnersList; + int is = spawnersList.indexOf((Object) Register.Instance() .getSpawnerStub()); + if (is != -1) { int nextNeighbour; if (is == spawnersList.size() - 1) @@ -584,7 +586,7 @@ public class JaceSpawner { .updateHeart(spawnerStub); } catch (Exception e) { System.err - .println("unable to change the server of the heartbeatThread for the previous node of rank " + .println("Unable to change the server of the heartbeatThread for the previous node of rank " + previous + ". error:" + e); } } @@ -947,10 +949,10 @@ public class JaceSpawner { spawnersList = new Vector(); for (int i = 0; i < nbExtraSpawners && i < registerSpawner.getSize(); i++) { - spawnersList.add(registerSpawner.getNodeAt(i - * nbOfDaemonsPerSpawner)); - registerSpawner.removeNode(registerSpawner.getNodeAt(i - * nbOfDaemonsPerSpawner)); + spawnersList.add(registerSpawner.getNodeAt(0)); +// * nbOfDaemonsPerSpawner)); + registerSpawner.removeNodeOfName(registerSpawner.getNodeAt(0).getName()); +// * nbOfDaemonsPerSpawner)); } registerSpawner.setNbOfTasks(nbTasks); @@ -1020,7 +1022,7 @@ public class JaceSpawner { + ez); } } - System.exit(0); + System.exit(1); } } } @@ -1041,10 +1043,8 @@ public class JaceSpawner { * System.out.println("waiting till transform of spawner "+i+ * " is finished"); Thread.sleep(20); }catch(Exception e1){} */ - // System.out.println("start process on spawner of rank "+i); - JaceSpawnerInterface spawnerStub = (JaceSpawnerInterface) spawnersList - .elementAt(i); + JaceSpawnerInterface spawnerStub = (JaceSpawnerInterface) spawnersList.get(i); spawnerStub.startProcess(spawnersList); } catch (Exception e) { e.printStackTrace(System.out); @@ -1071,9 +1071,11 @@ public class JaceSpawner { // in order to start each task on the Daemons spawnersList.add(Register.Instance().getSpawnerStub()); - System.out.println(" rank=spawnersList.size()=" + spawnersList.size()); + System.out.println(" rank="+rank+" spawnersList.size()=" + spawnersList.size()); rank = spawnersList.size() - 1; + broadcastRegister(1); + for (int j = 0; j < spawnersList.size(); j++) { System.out.println("waiting till transform of spawner " + j + " is finished"); @@ -1083,9 +1085,10 @@ public class JaceSpawner { Thread.sleep(20); } catch (Exception e) { } - System.out - .println("End Transformation of all spawners. Beginning the computing processes"); } + + System.out.println("End Transformation of all spawners. Beginning the computing processes"); + for (i = 0; i < spawnersList.size(); i++) { // while(!(spawnersList.elementAt(i) instanceof @@ -1112,7 +1115,7 @@ public class JaceSpawner { JaceInterface nodeStub = null; TaskId myTask = null; - System.out.println("appli launched, starting the chrono"); + System.out.println("Application launched, starting the chronometer"); RunningApplication.Instance().getChrono().start(); RunningApplication.Instance().setName(appliName); @@ -1277,8 +1280,8 @@ public class JaceSpawner { while (broadcasting == true) Thread.sleep(5); broadcasting = true; - Register.Instance().setSpawnerStub( - Register.Instance().getSpawnerStub()); +// Register.Instance().setSpawnerStub( +// Register.Instance().getSpawnerStub()); int x = reg.getListeOfTasks().getSize() / nbOfDaemonsPerSpawner; int s; if (rank == x) diff --git a/src/jaceP2P/JaceSuperNodeServer.java b/src/jaceP2P/JaceSuperNodeServer.java index c85a7c5..5648cd6 100644 --- a/src/jaceP2P/JaceSuperNodeServer.java +++ b/src/jaceP2P/JaceSuperNodeServer.java @@ -293,8 +293,24 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements for (int i = 0; i < ag.size(); i++) { reg.addNode((Node) ag.get(i).getNode()); - gnodes.remove(ag.get(i)); - Register.Instance().removeNode((Node) ag.get(i).getNode()); + delGNodeFromList( (Node) ag.get(i).getNode() ) ; +// gnodes.remove(ag.get(i)); +// Register.Instance().removeNode((Node) ag.get(i).getNode()); + } + + + /** Searching extra nodes if any **/ + if( nbNoeuds > nbTasks ) + { + int nb = nbNoeuds - nbTasks ; + GNode sup = null ; + + for( int i = 0 ; i < nb ; i ++ ) + { + sup = al.getOtherGNode( gnodes ) ; + reg.addNodeBeg( (Node) sup.getNode() ) ; + delGNodeFromList( (Node) sup.getNode() ) ; + } } authorized = false ; @@ -343,6 +359,7 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements if( ((Node)gnodes.get(i).getNode()).getId() == _n.getId() ) { removedGNode = gnodes.remove( i ) ; + Register.Instance().removeNodeOfName( removedGNode.getName() ) ; break ; } } @@ -472,7 +489,13 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements { if( _g != null ) { - workingOnGnodes() ; + boolean free = false ; + + if( ! operating ) + { + workingOnGnodes() ; + free = true ; + } for( int i = 0 ; i < gnodes.size() ; i++ ) { @@ -483,7 +506,8 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements } } - operating = false ; + if( free ) + operating = false ; } } diff --git a/src/jaceP2P/Register.java b/src/jaceP2P/Register.java index e6f88cf..680c05d 100644 --- a/src/jaceP2P/Register.java +++ b/src/jaceP2P/Register.java @@ -84,6 +84,32 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { } } + /** + * Add extra Nodes (for extra Spawners) at the beginning of the register. + * @param host The extra Node + */ + public synchronized void addNodeBeg(Node host) { + int is = -1; + if (host == null) { + System.err + .println("In Register.addNode : host.getIP() == null !"); + } + is = existNodeOfStub(host.getStub()); + if (is != -1) { + System.out.println("This node exists yet, I replace it"); + // System.out.println("MERDE !!"); + // System.out.println("MERDE !!"); + // System.out.println("MERDE !!"); + // System.out.println("MERDE !!"); + // System.out.println("MERDE !!"); + // System.out.println("MERDE !!"); + // System.out.println("MERDE !!"); + liste.setElementAt(host, is); + } else { + liste.add(0,host); + } + } + public synchronized int existNodeOfStub(JaceInterface stub) { // System.out.println("remote " + stub + "\n\n"); if (stub == null) { diff --git a/src/jaceP2P/SuperNodeListe.java b/src/jaceP2P/SuperNodeListe.java index a0b1ca4..61add0a 100644 --- a/src/jaceP2P/SuperNodeListe.java +++ b/src/jaceP2P/SuperNodeListe.java @@ -362,7 +362,7 @@ public class SuperNodeListe implements Cloneable { try { remoteStub.addGNode( _g ) ; } catch( Exception e ) { - System.err.println( "Unable to add new GNode at SuperNode " + d.getIP() ) ; + System.err.println( "Unable to add new GNode on SuperNode " + d.getIP() ) ; } } } @@ -387,7 +387,7 @@ public class SuperNodeListe implements Cloneable { try { remoteStub.removeGNode( _g ) ; } catch( Exception e ) { - System.err.println( "Unable to remove GNode at SuperNode " + d.getIP() ) ; + System.err.println( "Unable to remove GNode on SuperNode " + d.getIP() ) ; } } }