From c7001582aeefb419483631f88a0b0ee5873ae951 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Miqu=C3=A9e?= Date: Tue, 7 Jun 2011 10:04:19 +0200 Subject: [PATCH 1/1] Correction of some bugs and performance enhancement. --- src/jaceP2P/Backup.java | 9 +- src/jaceP2P/BackupConvg.java | 16 +- src/jaceP2P/BackupsManager.java | 15 +- src/jaceP2P/JaceInterface.java | 9 +- src/jaceP2P/JaceServer.java | 11 +- src/jaceP2P/JaceSpawner.java | 748 +++++++++++------- src/jaceP2P/JaceSpawnerInterface.java | 6 +- src/jaceP2P/JaceSpawnerServer.java | 31 +- src/jaceP2P/JaceSuperNode.java | 6 +- src/jaceP2P/JaceSuperNodeInterface.java | 5 +- src/jaceP2P/JaceSuperNodeServer.java | 26 +- src/jaceP2P/ListeTask.java | 12 +- src/jaceP2P/MsgQueue.java | 9 +- src/jaceP2P/Register.java | 51 +- src/jaceP2P/RunningApplication.java | 10 +- src/jaceP2P/ScanThread.java | 2 +- src/jaceP2P/ScanThreadSuperNode.java | 12 +- src/jaceP2P/SuperNodeListe.java | 69 +- src/jaceP2P/Task.java | 83 +- src/jaceP2P/TaskLauncher.java | 13 +- src/jaceP2P/TokenThread.java | 15 +- .../UpdateRegisterConcernedThread.java | 32 +- src/jaceP2P/UpdateRegisterThread.java | 10 +- 23 files changed, 685 insertions(+), 515 deletions(-) diff --git a/src/jaceP2P/Backup.java b/src/jaceP2P/Backup.java index 8e94e38..b174186 100644 --- a/src/jaceP2P/Backup.java +++ b/src/jaceP2P/Backup.java @@ -1,6 +1,7 @@ package jaceP2P; -import java.util.Vector; +import java.util.ArrayList; + public class Backup implements java.io.Serializable { @@ -48,11 +49,11 @@ public class Backup implements java.io.Serializable { return taskRank; } - public synchronized Vector getIterationStep() { - Vector v = new Vector(); + public synchronized ArrayList getIterationStep() { + ArrayList v = new ArrayList() ; v.add(iteration); v.add(timeStep); - return v; + return v ; } public synchronized int getIteration() { diff --git a/src/jaceP2P/BackupConvg.java b/src/jaceP2P/BackupConvg.java index e32e584..dc6af40 100644 --- a/src/jaceP2P/BackupConvg.java +++ b/src/jaceP2P/BackupConvg.java @@ -1,6 +1,6 @@ package jaceP2P; -import java.util.*; +import java.util.ArrayList; public class BackupConvg implements java.io.Serializable { private static final long serialVersionUID = 1L; @@ -8,7 +8,7 @@ public class BackupConvg implements java.io.Serializable { public String state; public boolean underTh; public int verifNum; - public Vector resp; + public ArrayList resp; public boolean localCV_state; public int nb_not_recv; public int sendId; @@ -17,13 +17,13 @@ public class BackupConvg implements java.io.Serializable { public String action; public boolean verdict; public boolean finalStep; - public Vector neighbors; - public Vector neighborsValues; + public ArrayList neighbors; + public ArrayList neighborsValues; public int timeStep; public LastSave lastSave; public int jaceP2P_Iteration; public boolean recievedVerdict; - public Vector reduceAll; + public ArrayList reduceAll; public boolean initialized = false; public BackupConvg() { @@ -36,9 +36,9 @@ public class BackupConvg implements java.io.Serializable { sauv.nb_not_recv = nb_not_recv; sauv.electedNode = electedNode; sauv.respSent = respSent; - sauv.neighbors = (Vector) neighbors.clone(); - sauv.neighborsValues = (Vector) neighborsValues.clone(); - sauv.resp = (Vector) resp.clone(); + sauv.neighbors = (ArrayList) neighbors.clone() ; + sauv.neighborsValues = (ArrayList) neighborsValues.clone() ; + sauv.resp = (ArrayList) resp.clone() ; sauv.verifNum = verifNum; sauv.sendId = sendId; sauv.finalStep = finalStep; diff --git a/src/jaceP2P/BackupsManager.java b/src/jaceP2P/BackupsManager.java index 429fce3..a9ce334 100644 --- a/src/jaceP2P/BackupsManager.java +++ b/src/jaceP2P/BackupsManager.java @@ -1,6 +1,7 @@ package jaceP2P; -import java.util.Vector; +import java.util.ArrayList; + public class BackupsManager { final int MAX_COUNT_NOT_ALIVE = 3; @@ -8,8 +9,8 @@ public class BackupsManager { // attributes public static BackupsManager Instance; public int myRank = -1; - public Vector liste = new Vector(); - public Vector liste_Convg = new Vector(); + public ArrayList liste = new ArrayList(); + public ArrayList liste_Convg = new ArrayList(); // constructors private BackupsManager() { @@ -175,7 +176,7 @@ public class BackupsManager { int isIn = existBackupTaskOfRank(t.getTaskRank(), tag); if (isIn == -1) { // si elle y est pas on l'isere - liste.addElement(t); + liste.add( t ) ; } @@ -187,7 +188,7 @@ public class BackupsManager { int isIn = existBackupTaskOfRank(t.getTaskRank(), tag); if (isIn == -1) { - liste_Convg.addElement(t); + liste_Convg.add( t ) ; } else liste_Convg.set(isIn, t); } @@ -221,7 +222,7 @@ public class BackupsManager { int ite; int lastIte = -1; int lastBackupRank = -1; - Vector v; + ArrayList v; int timeStep; int lastStep = -1; boolean ack = false; @@ -284,7 +285,7 @@ public class BackupsManager { int lastBackupRank = -1; boolean ack = false; int count; - Vector v; + ArrayList v; int timeStep; int lastStep = -1; // ask for ite number of Backups of all my Backup Nodes diff --git a/src/jaceP2P/JaceInterface.java b/src/jaceP2P/JaceInterface.java index e6694df..ab3b751 100644 --- a/src/jaceP2P/JaceInterface.java +++ b/src/jaceP2P/JaceInterface.java @@ -2,8 +2,7 @@ package jaceP2P; import java.rmi.Remote; import java.rmi.RemoteException; -import java.util.Vector; - +import java.util.ArrayList; public interface JaceInterface extends Remote { @@ -12,7 +11,7 @@ public interface JaceInterface extends Remote { public int updateRegister(Register newReg, JaceInterface stub, int req) throws RemoteException; - public Vector getIterationOfBackup(int remoteRank, int tag) + public ArrayList getIterationOfBackup(int remoteRank, int tag) throws RemoteException; public Backup getRemoteBackup(int remoteRank, int tag) @@ -38,7 +37,7 @@ public interface JaceInterface extends Remote { public void initializeVerif(int tag) throws RemoteException; public void savOrFinOrRest(int tag, int step, boolean verd, - Vector reduceAll) throws RemoteException; + ArrayList reduceAll) throws RemoteException; public boolean setNbNeighboursNotConv(int tag, int idNeigh, int neighborTimeStep) throws RemoteException; @@ -46,7 +45,7 @@ public interface JaceInterface extends Remote { public int getNbNeighboursNotConv() throws RemoteException; public void response(int neighId, int tag, int response, - Vector recievedValue) throws RemoteException; + ArrayList reduceAll) throws RemoteException; public boolean ping() throws RemoteException; diff --git a/src/jaceP2P/JaceServer.java b/src/jaceP2P/JaceServer.java index 69f0195..bf6e27d 100644 --- a/src/jaceP2P/JaceServer.java +++ b/src/jaceP2P/JaceServer.java @@ -2,9 +2,10 @@ package jaceP2P; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; +import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; -import java.util.Vector; + public class JaceServer extends UnicastRemoteObject implements JaceInterface { @@ -142,11 +143,11 @@ public class JaceServer extends UnicastRemoteObject implements JaceInterface { } } - public Vector getIterationOfBackup(int remoteRank, int tag) + public ArrayList getIterationOfBackup(int remoteRank, int tag) throws RemoteException { Backup b = BackupsManager.Instance().getBackupTaskOfRank(remoteRank, tag); - Vector result = b.getIterationStep(); + ArrayList result = b.getIterationStep(); return result; } @@ -231,7 +232,7 @@ public class JaceServer extends UnicastRemoteObject implements JaceInterface { } public void savOrFinOrRest(int tag, int step, boolean verd, - Vector recievedValue) throws RemoteException { + ArrayList recievedValue) throws RemoteException { JaceSession.Instance().getTaskObject().savOrFinOrRest(tag, step, verd, recievedValue); } @@ -247,7 +248,7 @@ public class JaceServer extends UnicastRemoteObject implements JaceInterface { } public synchronized void response(int neighId, int tag, int response, - Vector recievedValue) throws RemoteException { + ArrayList recievedValue) throws RemoteException { JaceSession.Instance().getTaskObject().response(neighId, tag, response, recievedValue); } diff --git a/src/jaceP2P/JaceSpawner.java b/src/jaceP2P/JaceSpawner.java index 3cb20ea..4c1672f 100644 --- a/src/jaceP2P/JaceSpawner.java +++ b/src/jaceP2P/JaceSpawner.java @@ -6,10 +6,11 @@ import java.io.PrintWriter; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.UnmarshalException; +import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Random; -import java.util.Vector; +import java.util.concurrent.Semaphore; import and.Mapping.Algo; import and.Mapping.Utils; @@ -40,7 +41,7 @@ public class JaceSpawner { private int z = 0; private static int nbOfDaemonsPerSpawner; private static int nbOfDeamonsPerThread; - private Vector spawnersList; + private ArrayList spawnersList; private int rank; private int nbSavingNodes; @@ -49,6 +50,8 @@ public class JaceSpawner { private double paramAlgo ; private String idAlgo ; + private Semaphore sema ; + // ** Test ** // private int test; private double dh ; @@ -67,6 +70,7 @@ public class JaceSpawner { nbFault = _nbF ; faultTime = _fT ; + sema = new Semaphore( 1, true ) ; superNode_IP = superNode; spawnerPort = port; @@ -136,6 +140,8 @@ public class JaceSpawner { idAlgo = _idAlgo ; + sema = new Semaphore( 1, true ) ; + this.appliName = appliName; this.nbTasks = nbTasks; @@ -203,7 +209,7 @@ public class JaceSpawner { return nbOfDaemonsPerSpawner; } - public void startProcess(Vector spawnersList) { + public void startProcess(ArrayList spawnersList) { this.spawnersList = spawnersList; int is = spawnersList.indexOf((Object) Register.Instance() @@ -297,101 +303,117 @@ public class JaceSpawner { System.exit( 1 ) ; } - public synchronized void signalDeadNode(JaceInterface host, int rankOfDead) { + public synchronized void signalDeadNode(JaceInterface host, int rankOfDead ) + { + try { + sema.acquire() ; + } catch (InterruptedException e3) { + System.err.println( "Problem while acquiring the semaphore in signalDeadNode!" ) ; + e3.printStackTrace() ; + } - TaskId myTaskId = null; - int nb = 0; - int nbC = 0; - long time = 0; - RunningApplication.Instance().incrementNumberOfDisconnections(); - - time = RunningApplication.Instance().getChrono().getValue() / 1000; - nb = RunningApplication.Instance().getNumberOfDisconnections(); - nbC = RunningApplication.Instance().getNumberOfCouilles(); - System.out.println("At time = " + time + "s, NbDisconnection = " - + nb + ", NbProblem = " + nbC); - - if( host == null ) - System.err.println( "SIGNAL DE NODE NULL" ) ; - - // !!!!!!!!!!!!!!actualiser le ListeTask ds le Register - try { - myTaskId = Register.Instance().getListeOfTasks() - .getTaskIdOfHostStub(host); - } catch( Exception e ) {} - - if (myTaskId == null) { - myTaskId = Register.Instance().getListeOfTasks() - .getTaskIdOfRank(rankOfDead); - if( myTaskId == null ) - { - System.err.println("Houston we have a serious problem!!"); - return ; - } - - JaceInterface deadStub = myTaskId.getHostStub(); + + TaskId myTaskId = null; + int nb = 0; + int nbC = 0; + long time = 0; + RunningApplication.Instance().incrementNumberOfDisconnections(); + + time = RunningApplication.Instance().getChrono().getValue() / 1000; + nb = RunningApplication.Instance().getNumberOfDisconnections(); + nbC = RunningApplication.Instance().getNumberOfProblems(); + System.out.println( "At time = " + time + "s, NbDisconnection = " + + nb + ", NbProblem = " + nbC ) ; - if( deadStub != null ) - { - try{ - deadStub.suicide2("Not doing a good work"); - }catch(Exception e){} - } else { - System.err.println( "Dead node stub unavailable!" ); - } - } - - Node noeud = Register.Instance().getNodeOfName( myTaskId.getHostName() ) ; - - int rankDeaD = myTaskId.getRank(); - - String nomNoeud = "" ; + if( host == null ) + System.err.println( "Signal of a node null!" ) ; + + // !!!!!!!!!!!!!!actualiser le ListeTask ds le Register + try { + myTaskId = Register.Instance().getListeOfTasks() + .getTaskIdOfHostStub( host ) ; + } catch( Exception e ) {} - if( noeud != null ) + if (myTaskId == null) + { + myTaskId = Register.Instance().getListeOfTasks() + .getTaskIdOfRank( rankOfDead ) ; + if( myTaskId == null ) { - nomNoeud = noeud.getName(); + System.err.println( "Houston we have a serious problem!!" ) ; + sema.release() ; + return ; } - - boolean b = false ; - - if( ! nomNoeud.equals( "" ) ) + + JaceInterface deadStub = myTaskId.getHostStub() ; + + if( deadStub != null ) { - b = Register.Instance().removeNodeOfName( nomNoeud ) ; + try{ + deadStub.suicide2( "Not doing a good work" ) ; + }catch(Exception e){} } else { - System.err.println( "Dead node name unknown!!" ) ; + System.err.println( "Dead node stub unavailable!" ) ; } + } + + Node noeud = Register.Instance().getNodeOfName( myTaskId.getHostName() ) ; + + int rankDeaD = myTaskId.getRank() ; + + String nomNoeud = "" ; + + if( noeud != null ) + { + nomNoeud = noeud.getName() ; + } + + boolean b = false ; + + if( ! nomNoeud.equals( "" ) ) + { + b = Register.Instance().removeNodeOfName( nomNoeud ) ; + } else { + System.err.println( "Dead node name unknown!!" ) ; + } - if( ! b ) - { - b = Register.Instance().removeNode( noeud ) ; - } + if( ! b ) + { + b = Register.Instance().removeNode( noeud ) ; + } - if( b == true ) - { - System.out.println("Removing Node of rank " - + rankDeaD + " : size = " - + Register.Instance().getSize()); - } else { - System.err - .println("Cannot remove the Node, it doesn't exist anymore: size = " - + Register.Instance().getSize()); - } + if( b == true ) + { + System.out.println( "Removing Node of rank " + + rankDeaD + " : size = " + + Register.Instance().getSize() ) ; + } else { + System.err.println( "Cannot remove the Node, it doesn't exist anymore: size = " + + Register.Instance().getSize() ) ; + } - Calendar cal = new GregorianCalendar(); - System.out.println("At time=" + cal.get(Calendar.MINUTE) + ":" - + cal.get(Calendar.SECOND)); + Calendar cal = new GregorianCalendar() ; + System.out.println( "At time=" + cal.get(Calendar.MINUTE) + ":" + + cal.get(Calendar.SECOND) ) ; - /**** Sébastien Miquée **/ - Node tmpNode = null ; - int retry = 0, retryMax = 4 ; + /**** Sébastien Miquée **/ + Node tmpNode = null ; + boolean ok = false ; + int retry = 0, retryMax = 4 ; + + while( tmpNode == null && ! ok ) + { + ok = true ; while( tmpNode == null ) { - tmpNode = foundToReplaceThisNode(rankDeaD, nomNoeud, noeud); + tmpNode = foundToReplaceThisNode( rankDeaD, nomNoeud, noeud ) ; if( tmpNode == null ) { + System.err.println( "I didn't receive a new Node! (" + retry + ")" ) ; + try{ Thread.sleep( 1000 ) ; } catch( Exception e ) {} @@ -400,47 +422,137 @@ public class JaceSpawner { if( retry > retryMax ) { - System.err.println( "Unable to replace the dead node "+nomNoeud ) ; + System.err.println( "Unable to replace the dead node " + nomNoeud ) ; + sema.release() ; return ; } } } + + System.out.println( "Using Node " + tmpNode.getName() + " in order to replace " + nomNoeud + "\n" ) ; + + tmpNode.setAliveFlag( true ) ; + tmpNode.setAliveTime() ; + tmpNode.setAppliName( RunningApplication.Instance().getName() ) ; + + // Replacing the node in the Register + int is = Register.Instance().existNode( tmpNode ) ; + + if( is != -1 ) + { + System.out.println( "The Node is already in the register! I don't add it." ) ; + System.out.println( "Node " + tmpNode.getName() + " not added!" ) ; + tmpNode = null ; + } else { + Register.Instance().addNode( tmpNode ) ; + + myTaskId = Register.Instance().getListeOfTasks().getTaskIdOfRank( rankDeaD ) ; + myTaskId.setHostIP( tmpNode.getIP() ) ; + myTaskId.setHostName( tmpNode.getName() ) ; + myTaskId.setHostStub( tmpNode.getStub() ) ; + + int neighborRank ; + + if( rankDeaD == 0 ) + { + neighborRank = Register.Instance().getSize() - 1 ; + } else { + neighborRank = rankDeaD - 1 ; + } + + TaskId neighborTask2 = Register.Instance().getListeOfTasks() + .getTaskIdOfRank( neighborRank ) ; + + int loop = 0, MAX_LOOP = 1 ; + boolean ook = false ; + JaceInterface jaceStub = null ; + + while( !ook && loop < MAX_LOOP ) + { + try { + jaceStub = neighborTask2.getHostStub() ; + jaceStub.updateHeart( tmpNode.getStub() ) ; + + ook = true ; + } catch( Exception e ) { + loop++ ; + + if( loop < MAX_LOOP ) + { + try { + Thread.sleep( loop * 2000 ) ; + } catch( InterruptedException e1 ) {} + } + + if( loop == MAX_LOOP ) + { + System.err.println( "Next node unreachable! " + e ) ; + } + } + } + + if( loop == MAX_LOOP && ! ok ) + { + + try { + jaceStub.suicide2( "Not reachable!" ) ; + } catch (RemoteException e1) { + System.err.println( "Unable to suicide the node!\n"+e1 ) ; + } + + try { + int pos = Register.Instance().existNodeOfStub( jaceStub ) ; + + if( pos != -1 ) + { + centralServer.delGNodeFromList( Register.Instance().getNodeAt( pos ), 0, LocalHost.Instance().getIP() ) ; + } else { + System.err.println( "The ping neighbor of " + tmpNode.getName() + " does not respond. It is probably dead ..." ) ; + } + } catch( RemoteException e ) { + System.err.println( "Unable to signal dead node to SuperNode!" ) ; + e.printStackTrace() ; + } + } + } try { - updateConcernedNodes(rankDeaD, noeud, tmpNode); + updateConcernedNodes( rankDeaD, noeud, tmpNode ) ; - Thread.sleep(500); - System.out.println("Set scanning on "+tmpNode.getName()); + Thread.sleep( 500 ) ; tmpNode.getStub().setScanning( true ) ; - } catch (Exception e) { + System.out.println( "Set scanning on " + tmpNode.getName() ) ; + } catch( Exception e ) { try { Thread.sleep( 2000 ) ; tmpNode.getStub().setScanning( true ) ; - } catch (InterruptedException e1) { - } catch (RemoteException e2) { + } catch( InterruptedException e1 ) { + } catch( RemoteException e2 ) { System.err.println( "Unable to setScanning on for the new node: " + e2 ) ; + ok = false ; } - System.err.println("Unable to setScanning on for the new node: " - + e) ; } - for (int z = 0; z < spawnersList.size(); z++) + for( int z = 0 ; z < spawnersList.size() ; z++ ) { - if (!((JaceSpawnerInterface) spawnersList.get(z)) - .equals(Register.Instance().getSpawnerStub())) + if( !( (JaceSpawnerInterface) spawnersList.get( z ) ) + .equals(Register.Instance().getSpawnerStub() ) ) { try { ((JaceSpawnerInterface) spawnersList.get(z)) - .replaceDeamonBy(noeud, tmpNode, rankDeaD); + .replaceDeamonBy(noeud, tmpNode, rankDeaD); } catch (Exception e) { - System.err - .println("Unable to broadcast the modifications to all the spawners: " - + e); + System.err.println( "Unable to broadcast the modifications to all the spawners: " + + e ) ; + ok = false ; } } - } + } + } + + sema.release() ; } // verifie si les noeud notes vivant ds le Register.Instance() du SuperNode @@ -489,141 +601,161 @@ public class JaceSpawner { try { node = null ; + if( centralServer == null ) + { + centralServer = LocalHost.Instance().getSuperNodeStub() ; + + if( centralServer == null ) + { + System.err.println( "Connection lost to SuperNode!" ) ; + System.err.println( "Reconnecting..." ) ; + connectSuperNode() ; + } + } + node = centralServer.getNewNode( idAlgo, theRank ) ; if( node != null && ! node.getIP().isEmpty() && node.getIP() != null && ! node.getIP().equals( "" ) ) { - found = true ; + if( Register.Instance().existNode( node ) != -1 ) + { + found = false ; + } else { + found = true ; + } } else { - System.err.println("Returned node is null!"); + System.err.println( "Returned node is null!" ) ; nbNull++ ; try { Thread.sleep( 2000 ) ; } catch( Exception e ) {} } - } catch (Exception e) { + } catch (RemoteException e) { // trouver un autre superNode et lui demander le noeud a lui - - System.err.println("Cannot localize SuperNode ! " + e); - - connectSuperNode(); - } - - if( Register.Instance().existNode( node ) != -1 ) - { - found = false ; + System.err.println( "Cannot localize SuperNode ! " + e ) ; + connectSuperNode() ; } } + return node ; - if( node != null ) - { - System.out.println( "Using Node " + node.getName() + " in order to replace " + nom + "\n" ) ; - - node.setAliveFlag(true); - node.setAliveTime(); - - // rajouter le noeud ds le Register - node.setAppliName(RunningApplication.Instance().getName()); - - // lui envoyer mon stub pr qu'il commence a me pinguer des - // maintenant - // TODO a mettre ds un thread ???? - - /* - * TaskId - * neighborTask=Register.Instance().getListeOfTasks().getTaskIdOfRank - * ((theRank+1)%Register.Instance().getListeOfTasks().getSize()); - * try{ node.getStub().updateHeart(neighborTask.getHostStub()); } - * catch(Exception e) { - * System.out.println("nvx noeud deja plu dispo2"); //node = null; } - */ - // TODO verif pourkoi superNode me le redonne - // alors qu'il fait deja du calcul - // int is = Register.Instance().existNode(node.getIP()); - int is = Register.Instance().existNode( node ) ; +// if( node != null ) +// { +// System.out.println( "Using Node " + node.getName() + " in order to replace " + nom + "\n" ) ; +// +// node.setAliveFlag(true); +// node.setAliveTime(); +// +// // rajouter le noeud ds le Register +// node.setAppliName(RunningApplication.Instance().getName()); +// +// // lui envoyer mon stub pr qu'il commence a me pinguer des +// // maintenant +// // TODO a mettre ds un thread ???? +// +// /* +// * TaskId +// * neighborTask=Register.Instance().getListeOfTasks().getTaskIdOfRank +// * ((theRank+1)%Register.Instance().getListeOfTasks().getSize()); +// * try{ node.getStub().updateHeart(neighborTask.getHostStub()); } +// * catch(Exception e) { +// * System.out.println("nvx noeud deja plu dispo2"); //node = null; } +// */ +// // TODO verif pourkoi superNode me le redonne +// // alors qu'il fait deja du calcul +// // int is = Register.Instance().existNode(node.getIP()); +// int is = Register.Instance().existNode( node ) ; +// +// if( is != -1 ) +// { +// System.out.println("The Node is already in the register ! I don't add it."); +// System.out.println("Node " + node.getName() + " not added !") ; +// node = null; +// } else { +// Register.Instance().addNode(node); +// +// // !!!!!!!!!!!!!!actualiser le ListeTask +// TaskId myTaskId = Register.Instance().getListeOfTasks() +// .getTaskIdOfRank(theRank); +// myTaskId.setHostIP(node.getIP()); +// myTaskId.setHostName(node.getName()); +// myTaskId.setHostStub(node.getStub()); +// +// int neighborRank; +// if (theRank == 0) +// { +// neighborRank = Register.Instance().getSize() - 1; +// } else { +// neighborRank = theRank - 1; +// } +// +// TaskId neighborTask2 = Register.Instance().getListeOfTasks() +// .getTaskIdOfRank( neighborRank ) ; +// +// int loop = 0, MAX_LOOP = 1 ; +// boolean ok = false ; +// JaceInterface jaceStub = null ; +// +// while( !ok && loop < MAX_LOOP ) +// { +// try { +// jaceStub = neighborTask2.getHostStub(); +// jaceStub.updateHeart(node.getStub()); +// +// ok = true ; +// } catch( Exception e ) { +// loop++ ; +// +// if( loop < MAX_LOOP ) +// { +// try { +// Thread.sleep( loop * 2000 ) ; +// } catch (InterruptedException e1) {} +// } +// +// if( loop == MAX_LOOP ) +// { +// System.err.println( "Next node unreachable! " + e ) ; +// } +// } +// } +// +// if( loop == MAX_LOOP ) +// { +// +// try { +// node.getStub().suicide2( "Not reachable!" ) ; +// } catch (RemoteException e1) { +// System.err.println( "Unable to suicide the node!\n"+e1 ) ; +// return null ; +// //signalDeadNode( null, neighborTask2.getRank(), 1 ) ; +// } +// +// try { +// centralServer.delGNodeFromList( node, 0, LocalHost.Instance().getIP() ) ; +// } catch( RemoteException e ) { +// System.err.println( "Unable to signal dead node to SuperNode!" ) ; +// e.printStackTrace() ; +// } +// } +// +// } +// +// } else { +// System.out.println( "I didn't receive a new Node !" ) ; +// } - if( is != -1 ) - { - System.out.println("The Node is already in the register ! I don't add it."); - System.out.println("Node " + node.getName() + " not added !") ; - node = null; - } else { - Register.Instance().addNode(node); - - // !!!!!!!!!!!!!!actualiser le ListeTask - TaskId myTaskId = Register.Instance().getListeOfTasks() - .getTaskIdOfRank(theRank); - myTaskId.setHostIP(node.getIP()); - myTaskId.setHostName(node.getName()); - myTaskId.setHostStub(node.getStub()); - - int neighborRank; - if (theRank == 0) - { - neighborRank = Register.Instance().getSize() - 1; - } else { - neighborRank = theRank - 1; - } - - TaskId neighborTask2 = Register.Instance().getListeOfTasks() - .getTaskIdOfRank( neighborRank ) ; - - int loop = 0, MAX_LOOP = 1 ; - boolean ok = false ; - JaceInterface jaceStub = null ; - - while( !ok && loop < MAX_LOOP ) - { - try { - jaceStub = neighborTask2.getHostStub(); - jaceStub.updateHeart(node.getStub()); - - ok = true ; - } catch( Exception e ) { - loop++ ; - - if( loop < MAX_LOOP ) - { - try { - Thread.sleep( loop * 2000 ) ; - } catch (InterruptedException e1) {} - } - - if( loop == MAX_LOOP ) - { - System.err.println( "Next node unreachable! " + e ) ; - } - } - } - - if( loop == MAX_LOOP ) - { - - try { - node.getStub().suicide2( "Not reachable!" ) ; - } catch (RemoteException e1) { - System.err.println( "Unable to suicide the node!\n"+e1 ); - signalDeadNode( null, neighborTask2.getRank() ) ; - } - } - - } - - } else { - System.out.println("I didn't receive a new Node !"); - } - return node; +// return node ; } public void replaceBy(JaceSpawnerInterface oldStub, JaceSpawnerInterface stub) { - int index = spawnersList.indexOf((Object) oldStub); + int index = spawnersList.indexOf((Object) oldStub) ; if (index != -1) - spawnersList.setElementAt(stub, index); + spawnersList.set(index, stub ) ; else - System.err.println("Spawner's stub not foud in spawnersList !"); + System.err.println( "Spawner's stub not foud in spawnersList !" ) ; } public void getNewSpawner(JaceSpawnerInterface previousSpawner) { @@ -677,7 +809,7 @@ public class JaceSpawner { .getNumberOfSpawnerDisconnections(), nbOfDaemonsPerSpawner, nbOfDeamonsPerThread , idAlgo); - spawnersList.setElementAt(spawnerStub, index); + spawnersList.set( index, spawnerStub ) ; new StartProcessThread(index).start(); @@ -788,17 +920,17 @@ public class JaceSpawner { System.out.println("Application finished successfully !"); System.out.println("TOTAL TIME in s : " + (finalTime / 1000)); - System.out.println("nb of desconnections: " + nbe); - System.out.println("nb of spawners desconnections: " + nbsdc); + System.out.println("Number of node disconnections: " + nbe); + System.out.println("Number of spawner disconnections: " + nbsdc); // ** Tests ** // - String path = "/home/lyon/smiquee/resultats/execTime_"+algo+"_"+test ; + String path = "/home/lyon/smiquee/resultats/execTime_"+algo+"_"+nbFault+"_"+test ; PrintWriter ecrivain = null ; ecrivain = new PrintWriter( new OutputStreamWriter( new FileOutputStream( path ), "UTF8" ) ) ; ecrivain.println( "TOTAL TIME in s : " + (finalTime / 1000)); - ecrivain.println( "nb of desconnections: " + nbe); - ecrivain.println( "nb of spawners desconnections: " + nbsdc); + ecrivain.println( "Number of node disconnections: " + nbe); + ecrivain.println( "Number of spawner disconnections: " + nbsdc); ecrivain.println( "DH = "+dh ) ; ecrivain.flush() ; @@ -833,7 +965,7 @@ public class JaceSpawner { * //si mon appli a besoin d'un noeud //sinon, on fait rien if ((nbTasks * - Register.Instance().getSize()) > 0) { cptReplaced = 0; * - * //TODO demander des paquet de nodes, pas qu'un //on scanne toutes les + * //TO DO demander des paquet de nodes, pas qu'un //on scanne toutes les * taches de cette appli for (int ind = 0; ind < tskList.getSize(); * ind++) { //si 1 tache a pas de noeud, on trouve 1 remplacant * @@ -862,7 +994,7 @@ public class JaceSpawner { // Node node = null; // // while (found == false) { // try { -// // TODO : trouver l'erreur !!! +// // TO DO : trouver l'erreur !!! // // msg d'erreur : // // "pas localise le super node java.lang.NullPointerException" // if (centralServer == null) { @@ -901,7 +1033,7 @@ public class JaceSpawner { // // // lui envoyer mon stub pr qu'il commence a me pinguer des // // maintenant -// // TODO a mettre ds un thread ???? +// // TO DO a mettre ds un thread ???? // try { // TaskId neighborTask = Register.Instance().getListeOfTasks() // .getTaskIdOfRank( @@ -913,7 +1045,7 @@ public class JaceSpawner { // // // int is = Register.Instance().existNode(node.getIP()); // int is = Register.Instance().existNode(node); -// // TODO verif pourkoi superNode me le redonne +// // TO DO verif pourkoi superNode me le redonne // // alors qu'il fait deja du calcul // if (is != -1) { // System.out.println("j'ajoute pas le noeud, il y est deja"); @@ -1056,16 +1188,16 @@ public class JaceSpawner { // completed with the required number of Daemons // or gets NULL public synchronized void getRegisterOnSuperNode() { - Register registerSpawner = null; - Node noeud = null; - boolean recieved = false; + Register registerSpawner = null ; + Node noeud = null ; + boolean recieved = false ; idAlgo = LocalHost.Instance().getIP() + ":" + LocalHost.Instance().getPort() ; - System.out.println("Trying to get a Register on the SuperNode"); - int nbExtraSpawners = 0; + System.out.println( "Trying to get a Register on the SuperNode" ) ; + int nbExtraSpawners = 0 ; if (nbTasks > nbOfDaemonsPerSpawner) { - nbExtraSpawners = (nbTasks - 1) / nbOfDaemonsPerSpawner; + nbExtraSpawners = (nbTasks - 1) / nbOfDaemonsPerSpawner ; } @@ -1075,17 +1207,16 @@ public class JaceSpawner { paramAlgo = nbFault ; } - while (!recieved) { + while( !recieved ) + { try { registerSpawner = centralServer.getRegisterSpawner(idAlgo, nbTasks, (Task) tache, nbTasks + nbExtraSpawners, algo, paramAlgo); recieved = true; } catch (Exception e) { - System.err - .println("Unable to recieve a register from superNode " - + e); - connectSuperNode(); + System.err.println( "Unable to recieve a register from superNode: " + e ) ; + connectSuperNode() ; } } @@ -1102,9 +1233,9 @@ public class JaceSpawner { "grid_"+algo+"_"+nbFault+"_"+test+".xml") ; Utils.writeMapping( al.getMapping(), "/home/lyon/smiquee/resultats/", "mapping_"+algo+"_"+nbFault+"_"+test+".xml" ) ; - } catch (RemoteException e1) { - System.err.println( "Problème avec Algo dans Spawner !" ) ; - e1.printStackTrace(); + } catch( RemoteException e1 ) { + System.err.println( "Unable to retrieve Algo information in Spawner!" ) ; + e1.printStackTrace() ; } if (registerSpawner.getSize() != (nbTasks + nbExtraSpawners)) { @@ -1120,7 +1251,7 @@ public class JaceSpawner { System.exit( 1 ) ; } - spawnersList = new Vector(); + spawnersList = new ArrayList(); for (int i = 0; i < nbExtraSpawners && i < registerSpawner.getSize(); i++) { spawnersList.add(registerSpawner.getNodeAt(0)); @@ -1137,25 +1268,27 @@ public class JaceSpawner { * nbTasks); } catch(Exception e1) {} */ - if (registerSpawner != null) { - System.out.println("I received the register"); + if( registerSpawner.getSize() > 0 ) + { + System.out.println( "I received the register" ) ; // registerSpawner.setVersion(registerVersion); // registerVersion++; - Register.Instance().replaceBy(registerSpawner); - System.out.println("It contains " + Register.Instance().getSize() - + " Nodes" + " " + nbExtraSpawners + " ExtraSpawners"); + Register.Instance().replaceBy( registerSpawner ) ; + System.out.println( "It contains " + Register.Instance().getSize() + + " Nodes" + " " + nbExtraSpawners + " ExtraSpawners" ) ; // set each Node aliveTime value to the Spawner current time - for (int i = 0; i < Register.Instance().getSize(); i++) { - noeud = Register.Instance().getNodeAt(i); - noeud.setAliveFlag(true); - noeud.setAliveTime(); + for (int i = 0; i < Register.Instance().getSize(); i++) + { + noeud = Register.Instance().getNodeAt( i ) ; + noeud.setAliveFlag( true ) ; + noeud.setAliveTime() ; } } else { - System.err.println("\n---------------WARNING--------------"); - System.err.println("No Daemon available on the SuperNode dispo, try later, please"); - System.exit(0); + System.err.println( "\n---------------WARNING--------------" ) ; + System.err.println( "No Daemon available on the SuperNode, try later, please" ) ; + System.exit( 0 ) ; } } @@ -1174,10 +1307,10 @@ public class JaceSpawner { try { System.out.println("Trying to transform the spawner (" + n.getName() + ") of rank " + i); - spawnersList.setElementAt(n.getStub().transformIntoSpawner( + spawnersList.set( i, n.getStub().transformIntoSpawner( params, appliName, Register.Instance(), nbTasks, centralServer, i, heartTime, 0, 0, 0, - nbOfDaemonsPerSpawner, nbOfDeamonsPerThread, idAlgo), i); + nbOfDaemonsPerSpawner, nbOfDeamonsPerThread, idAlgo) ) ; } catch (Exception e) { System.err.println("Error while contacting newly acquired spawner (" + n.getName() + "): " + e); @@ -1213,7 +1346,7 @@ public class JaceSpawner { Random r = null ; int next, old = -1 ; - System.out.println( "Starting fault tolerance !" ) ; + System.out.println( "Starting faults simulation!" ) ; while( ! RunningApplication.Instance().isRunning() ) { @@ -1226,14 +1359,25 @@ public class JaceSpawner { while( RunningApplication.Instance().isRunning() ) { + /** Stop too long computation **/ + if( (RunningApplication.Instance().getChrono().getValue() / 1000) > 700 ) + { + try { + Register.Instance().getSpawnerStub().setFinished( true ) ; + } catch (RemoteException e) { + System.err.println( "Unable to stop the too long computation!" ) ; + e.printStackTrace() ; + } + } + /** Waiting some time ... **/ try { sleep( faultTime * 1000 ) ; - } catch (InterruptedException e) { + } catch( InterruptedException e ) { } /** ... and kill some daemons ! **/ - t = Register.Instance().getListeOfTasks(); + t = Register.Instance().getListeOfTasks() ; r = new Random() ; for( int i = 0 ; i < nbFault ; i++ ) @@ -1246,32 +1390,32 @@ public class JaceSpawner { } old = next ; - Node noeud = null; + Node noeud = null ; try { - TaskId recev = null; - System.out.println("Making fault on Task" + next); + TaskId recev = null ; + System.out.println( "Making fault on Task" + next ) ; - recev = t.getTaskIdOfRank( next ); + recev = t.getTaskIdOfRank( next ) ; - JaceInterface stub = recev.getHostStub(); - System.out.println("name = " + recev.getHostName()); + JaceInterface stub = recev.getHostStub() ; + System.out.println( "name = " + recev.getHostName() ) ; noeud = Register.Instance().getNodeOfStub( stub ) ; stub.suicide2( "Test fault tolerance" ) ; - } catch (UnmarshalException ue ){ - } catch (Exception e) { + } catch( UnmarshalException ue ) { + } catch( Exception e) { try { - System.err.println("Error in FaultMake on node: " - + noeud.getName() + ". " + e); + System.err.println( "Error in FaultMake on node: " + + noeud.getName() + ". " + e ) ; } catch (Exception e2) { - System.err.println("(Fault)Error in error:" + e2); + System.err.println( "(Fault) Error in error:" + e2 ) ; } } try { sleep( 500 ) ; - } catch (InterruptedException e) { + } catch( InterruptedException e ) { } } } @@ -1297,7 +1441,7 @@ public class JaceSpawner { */ // System.out.println("start process on spawner of rank "+i); JaceSpawnerInterface spawnerStub = (JaceSpawnerInterface) spawnersList.get(i); - spawnerStub.startProcess(spawnersList); + spawnerStub.startProcess( spawnersList ) ; } catch (Exception e) { e.printStackTrace(System.out); System.err.println("Unable to start the process on the spawner of rank " @@ -1310,7 +1454,7 @@ public class JaceSpawner { Node n; int i; for (i = 0; i < spawnersList.size(); i++) { - n = (Node) spawnersList.elementAt(i); + n = (Node) spawnersList.get( i ) ; // Register.Instance().getListeOfTasks().viewAll(); // spawnersList.setElementAt(n.getStub().transformIntoSpawner( @@ -1331,7 +1475,7 @@ public class JaceSpawner { for (int j = 0; j < spawnersList.size(); j++) { System.out.println("waiting till transform of spawner " + j + " is finished"); - while ((spawnersList.elementAt(j) instanceof Node)) + while ((spawnersList.get(j) instanceof Node)) { try { @@ -1415,7 +1559,7 @@ public class JaceSpawner { for (int j = count; j < nbTasks; j++) { tsk.addTask(new TaskId(appliName, j, null)); } - System.out.println("in Register, misses " + System.out.println("In Register, misses " + (nbTasks - Register.Instance().getSize()) + " nodes"); } @@ -1583,6 +1727,7 @@ public class JaceSpawner { } } + @SuppressWarnings("unchecked") private synchronized void broadcastScanning() { Register reg = Register.Instance(); while (broadcasting == true) @@ -1591,7 +1736,7 @@ public class JaceSpawner { } catch (Exception e) { } // Register.Instance().viewAll(); - Vector nodes = (Vector) Register.Instance().getListOfNodes().clone(); + ArrayList nodes = (ArrayList) Register.Instance().getListOfNodes().clone(); int x = reg.getListeOfTasks().getSize() / nbOfDaemonsPerSpawner; int s; if (rank == x) @@ -1613,44 +1758,44 @@ public class JaceSpawner { } - @SuppressWarnings("unchecked") public synchronized Register getRegister( int rank ) { - ListeTask listOfTasks = Register.Instance().getListeOfTasks(); - Vector dependencies = getDependencies(rank, listOfTasks.getSize()); - Register g = new Register(); - ListeTask newListOfTasks = new ListeTask(); + ListeTask listOfTasks = Register.Instance().getListeOfTasks() ; + ArrayList dependencies = getDependencies( rank, listOfTasks.getSize() ) ; + Register g = new Register() ; + ListeTask newListOfTasks = new ListeTask() ; - g.setAppliName(Register.Instance().getAppliName()); - g.setParams(Register.Instance().getParams()); - g.setSpawnerStub(Register.Instance().getSpawnerStub()); - g.setNbOfTasks(Register.Instance().getNbOfTasks()); + g.setAppliName( Register.Instance().getAppliName() ) ; + g.setParams( Register.Instance().getParams() ) ; + g.setSpawnerStub( Register.Instance().getSpawnerStub() ) ; + g.setNbOfTasks( Register.Instance().getNbOfTasks() ) ; // g.setVersion(reg.getVersion()); - for (int j = 0; j < dependencies.size(); j++) { - TaskId id = listOfTasks.getTaskIdOfRank(((Integer) dependencies - .elementAt(j)).intValue()); - newListOfTasks.addTask(id); - if (id.getHostStub() != null) { - Node noeud = Register.Instance() - .getNodeOfName( id.getHostName() ) ;// (id.getHostStub()); + for( int j = 0 ; j < dependencies.size() ; j++ ) + { + TaskId id = listOfTasks.getTaskIdOfRank( ( (Integer) dependencies + .get(j) ).intValue() ) ; + newListOfTasks.addTask( id ) ; + if( id.getHostStub() != null ) { + Node noeud = Register.Instance().getNodeOfName( id.getHostName() ) ;// (id.getHostStub()); if( noeud != null ) + { g.addNode( noeud ) ; - else + } else { System.err.println( "PAS BON DU TOUT" ) ; + } } } - g.setListeOfTasks(newListOfTasks); - return g; + g.setListeOfTasks(newListOfTasks) ; + return g ; } - @SuppressWarnings("unchecked") private void updateConcernedNodes(int rank, Node oldNode, Node node) { ListeTask listOfTasks = Register.Instance().getListeOfTasks(); - Vector dependencies = getDependencies(rank, listOfTasks.getSize()); + ArrayList dependencies = getDependencies(rank, listOfTasks.getSize()); System.out.println("List of concerned neighbors of task " + rank+": "); for (int z = 0; z < dependencies.size(); z++) - System.out.print(((Integer) dependencies.elementAt(z)).intValue() + System.out.print(((Integer) dependencies.get(z)).intValue() + " "); System.out.println(); // Register.Instance().setVersion(registerVersion); @@ -1670,19 +1815,22 @@ public class JaceSpawner { } } - private Vector getDependencies(int id, int jaceSize) { + private ArrayList getDependencies( int id, int jaceSize ) + { // get computing dependencies - Vector neighbors = new Vector(); - int[] dep = tache.getDependencies(id); - for (int z = 0; z < taille(dep); z++) - neighbors.add(dep[z]); + ArrayList neighbors = new ArrayList() ; + int[] dep = tache.getDependencies( id ) ; + for( int z = 0 ; z < taille(dep) ; z++ ) + { + neighbors.add( dep[z] ) ; + } // System.out.println("la liste des voisins de calcul de: "+id+" concerne"); // for(int z=0;z nodes; + ArrayList nodes; int nbOfDeamonsPerThread, nbOfDeamonsPerSpawner; - StartScanThread(int i, Vector nodes, int debut) { + StartScanThread(int i, ArrayList nodes, int debut) { this.i = i; this.nodes = nodes; this.debut = debut; @@ -1762,7 +1910,7 @@ class StartScanThread extends Thread { && index < debut + nbOfDeamonsPerSpawner && index < nodes.size(); index++) { - Node node = (Node) nodes.elementAt(index); + Node node = (Node) nodes.get(index); JaceInterface stub = node.getStub(); String name = node.getName(); try { diff --git a/src/jaceP2P/JaceSpawnerInterface.java b/src/jaceP2P/JaceSpawnerInterface.java index 434b125..16bdf9f 100644 --- a/src/jaceP2P/JaceSpawnerInterface.java +++ b/src/jaceP2P/JaceSpawnerInterface.java @@ -2,7 +2,7 @@ package jaceP2P; import java.rmi.Remote; import java.rmi.RemoteException; -import java.util.Vector; +import java.util.ArrayList; @@ -16,7 +16,7 @@ public interface JaceSpawnerInterface extends Remote { public boolean getFinished() throws RemoteException; - public void signalDeadNode(JaceInterface host, int rankOfDead) + public void signalDeadNode(JaceInterface host, int rankOfDead ) throws RemoteException; public void beating() throws RemoteException; @@ -29,7 +29,7 @@ public interface JaceSpawnerInterface extends Remote { public void updateHeart(JaceSpawnerInterface stub) throws RemoteException; - public void startProcess(Vector spawnersList) throws RemoteException; + public void startProcess(ArrayList spawnersList) throws RemoteException; public void setOver(boolean bool) throws RemoteException; diff --git a/src/jaceP2P/JaceSpawnerServer.java b/src/jaceP2P/JaceSpawnerServer.java index e210d88..fc3a3bb 100644 --- a/src/jaceP2P/JaceSpawnerServer.java +++ b/src/jaceP2P/JaceSpawnerServer.java @@ -2,9 +2,9 @@ package jaceP2P; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; +import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; -import java.util.Vector; public class JaceSpawnerServer extends UnicastRemoteObject implements @@ -20,8 +20,7 @@ public class JaceSpawnerServer extends UnicastRemoteObject implements super(); } - @SuppressWarnings("unchecked") - public void startProcess(Vector spawnersList) throws RemoteException { + public void startProcess(ArrayList spawnersList) throws RemoteException { JaceSpawner.Instance().startProcess(spawnersList); } @@ -84,11 +83,31 @@ public class JaceSpawnerServer extends UnicastRemoteObject implements public boolean getFinished() throws RemoteException { return finished; } + + private class Signaler implements Runnable + { + JaceInterface host ; + int rankOfDead ; + Signaler( JaceInterface _host, int _rankOfDead ) + { + host = _host ; + rankOfDead = _rankOfDead ; + } + + @Override + public void run() + { + JaceSpawner.Instance().signalDeadNode( host, rankOfDead ) ; + } + + } - public void signalDeadNode(JaceInterface host, int rankOfDead) + public void signalDeadNode(JaceInterface host, int rankOfDead ) throws RemoteException { - System.out.println("SignalDeadNode of rank " + rankOfDead); - JaceSpawner.Instance().signalDeadNode(host, rankOfDead); + System.out.println( "SignalDeadNode of rank " + rankOfDead ) ; + + new Thread( new Signaler( host, rankOfDead ) ).start() ; +// JaceSpawner.Instance().signalDeadNode( host, rankOfDead ) ; } // heartBeat that detects if a Spawner is dead or alive diff --git a/src/jaceP2P/JaceSuperNode.java b/src/jaceP2P/JaceSuperNode.java index 06661a9..f0e380d 100644 --- a/src/jaceP2P/JaceSuperNode.java +++ b/src/jaceP2P/JaceSuperNode.java @@ -75,17 +75,17 @@ public class JaceSuperNode { next = index + 1; HeartBeatSNode.Instance().setServer( ((SuperNodeData) SuperNodeListe.Instance().getListe() - .elementAt(next)).getStub()); + .get(next)).getStub()); if (index == 0) previous = SuperNodeListe.Instance().getListe().size() - 1; else previous = index - 1; System.out.println(index + " " + next + " " + previous); try { - ((SuperNodeData) SuperNodeListe.Instance().getListe().elementAt( + ((SuperNodeData) SuperNodeListe.Instance().getListe().get( previous)).getStub().updateHeart( ((SuperNodeData) SuperNodeListe.Instance().getListe() - .elementAt(index)).getStub()); + .get(index)).getStub()); } catch (Exception e) { System.err diff --git a/src/jaceP2P/JaceSuperNodeInterface.java b/src/jaceP2P/JaceSuperNodeInterface.java index f3ef6bc..b7aef79 100644 --- a/src/jaceP2P/JaceSuperNodeInterface.java +++ b/src/jaceP2P/JaceSuperNodeInterface.java @@ -3,7 +3,6 @@ package jaceP2P; import java.rmi.Remote; import java.rmi.RemoteException; import java.util.ArrayList; -import java.util.Vector; import and.Mapping.Algo; import and.Mapping.GNode; @@ -35,12 +34,12 @@ public interface JaceSuperNodeInterface extends Remote { public Node getNewNode( String spawnerIP, GNode _deadNode ) throws RemoteException; - public Vector sendStub(String IP, int port, JaceSuperNodeInterface stub) + public ArrayList sendStub(String IP, int port, JaceSuperNodeInterface stub) throws RemoteException; public void updateCountNode(String IP, int nb) throws RemoteException; - public void sendSurplus(Vector nodes, ArrayList _gnodes) throws RemoteException; + public void sendSurplus(ArrayList newVector, ArrayList _gnodes) throws RemoteException; public void removeSuperNode(SuperNodeData d) throws RemoteException; diff --git a/src/jaceP2P/JaceSuperNodeServer.java b/src/jaceP2P/JaceSuperNodeServer.java index 8bee6cf..b279e30 100644 --- a/src/jaceP2P/JaceSuperNodeServer.java +++ b/src/jaceP2P/JaceSuperNodeServer.java @@ -3,7 +3,6 @@ package jaceP2P; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.ArrayList; -import java.util.Vector; import and.Mapping.Algo; import and.Mapping.DefaultMapping; @@ -40,12 +39,12 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements return beat; } - public Vector sendStub(String IP, int port, JaceSuperNodeInterface stub) + public ArrayList sendStub(String IP, int port, JaceSuperNodeInterface stub) throws RemoteException { SuperNodeListe.Instance().addStubOf(IP, port, stub); System.out.println("Added new superNode (" + IP + ") to list and return List"); - return SuperNodeListe.Instance().getListe(); + return SuperNodeListe.Instance().getListe() ; } public void updateCountNode(String IP, int nb) throws RemoteException { @@ -55,17 +54,17 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements SuperNodeListe.Instance().viewAll(); } - public void sendSurplus(Vector nodes, ArrayList _gnodes) throws RemoteException { + public void sendSurplus(ArrayList nodes, ArrayList _gnodes) throws RemoteException { System.out.println("Recieved " + nodes.size() + " nodes"); for (int i = 0; i < nodes.size(); i++) { - Register.Instance().getListe().add((Node) nodes.elementAt(i)); + Register.Instance().getListe().add((Node) nodes.get(i)); System.out.println("Adding " - + ((Node) nodes.elementAt(i)).getName()); + + ((Node) nodes.get(i)).getName()); try { - ((Node) nodes.elementAt(i)).getStub().updateHeart( + ((Node) nodes.get(i)).getStub().updateHeart( LocalHost.Instance().getSuperNodeStub()); int index = SuperNodeListe.Instance().existSuperNode( LocalHost.Instance().getIP()); @@ -317,7 +316,7 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements ((Maheve) al).setNbSave((int)paramAlgo); break ; default: - al = new DefaultMapping( graph, grid, gnodes ) ; + al = new DefaultMapping( graph, grid ) ; } if (al != null) @@ -465,6 +464,14 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements algos.get( i ).getGrid().removeGNode( dead ) ; Register.Instance().removeNodeOfName( dead.getName() ) ; SuperNodeListe.Instance().removeGNode( dead, _mode, _spawnerIp ) ; + + // trying to reboot the node + try { + _n.getStub().suicide2( "Reboot!" ) ; + } catch( Exception e ) { + System.err.println( "(SN) Unable to reboot the node:" ) ; + e.printStackTrace() ; + } } } else { System.err.println( "The dead node signaled does not exist!" ) ; @@ -900,8 +907,7 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements } return ret ; - } - + } } diff --git a/src/jaceP2P/ListeTask.java b/src/jaceP2P/ListeTask.java index 701b123..e355718 100644 --- a/src/jaceP2P/ListeTask.java +++ b/src/jaceP2P/ListeTask.java @@ -1,13 +1,14 @@ package jaceP2P; -import java.util.Vector; +import java.util.ArrayList; + public class ListeTask implements java.io.Serializable, java.lang.Cloneable { private static final long serialVersionUID = 1L ; // attributes - protected Vector liste = new Vector() ; + protected ArrayList liste = new ArrayList() ; protected TaskId task ; // constructor @@ -16,14 +17,14 @@ public class ListeTask implements java.io.Serializable, java.lang.Cloneable @SuppressWarnings("unchecked") public synchronized ListeTask clone() { ListeTask l = new ListeTask(); - l.liste = (Vector) liste.clone(); + l.liste = (ArrayList) liste.clone(); l.task = task; return (l); } // methods public synchronized void addTask(TaskId tsk) { - liste.addElement(tsk); + liste.add( tsk ) ; } public synchronized TaskId getTaskIdOfHostStub(JaceInterface hostStub) { @@ -35,8 +36,7 @@ public class ListeTask implements java.io.Serializable, java.lang.Cloneable if (is != -1) { return (TaskId) liste.get(is); } else { - System.err - .println("There is no task affected to this host stub !"); + System.err.println("There is no task affected to this host stub !"); return null; } } diff --git a/src/jaceP2P/MsgQueue.java b/src/jaceP2P/MsgQueue.java index 39bdbd0..005089f 100644 --- a/src/jaceP2P/MsgQueue.java +++ b/src/jaceP2P/MsgQueue.java @@ -1,16 +1,17 @@ package jaceP2P; -import java.util.Vector; +import java.util.ArrayList; + public class MsgQueue { public static MsgQueue Instance; // attributes - private Vector liste; + private ArrayList liste; // constructors public MsgQueue() { - liste = new Vector(); + liste = new ArrayList(); } public synchronized static MsgQueue Instance() { @@ -97,7 +98,7 @@ public class MsgQueue { // si existe deja 1 Message de meme tag ET meme envoyeur, on l'ecrase if (is != -1) { // liste.remove(is); - liste.setElementAt(msg, is); + liste.set( is, msg ) ; } // si existe pas de Message de meme tag ET meme envoyeur, on l'ajoute diff --git a/src/jaceP2P/Register.java b/src/jaceP2P/Register.java index 1c4fdb6..d599565 100644 --- a/src/jaceP2P/Register.java +++ b/src/jaceP2P/Register.java @@ -1,6 +1,7 @@ package jaceP2P; -import java.util.Vector; +import java.util.ArrayList; + public class Register implements java.io.Serializable, java.lang.Cloneable { @@ -13,7 +14,7 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { // attributes public static Register Instance; private String appliName; // name of the appli - private Vector liste; // list of the nodes of the Register + private ArrayList liste; // list of the nodes of the Register // private ListeTask listeOfTasks = null; //liste of the TaskId of the appli // private int version=0; private String[] params; // params of the appli @@ -25,7 +26,7 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { // constructors public Register() { - liste = new Vector(); + liste = new ArrayList() ; } public synchronized static Register Instance() { @@ -40,20 +41,27 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { } public synchronized int existNode(Node node) { - if (node == null) { + if( node == null ) + { System.err .println("Node est null dans existNode"); return -1 ; } + int existe = -1; int index = 0; - while ((existe == -1) && (index < liste.size())) { - if (node.equals((Node) liste.get(index))) { - existe = index; - } else - index++; + + while ((existe == -1) && (index < liste.size())) + { + if (node.equals((Node) liste.get(index))) + { + existe = index ; + } else { + index++ ; + } } - return existe; + + return existe ; } /* @@ -76,9 +84,9 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { if (is != -1) { System.out.println("This node exists yet, I replace it"); - liste.setElementAt(host, is); + liste.set( is, host ) ; } else { - liste.add(host); + liste.add( host ) ; } return 0 ; @@ -91,12 +99,11 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { public synchronized void addNodeBeg(Node host) { int is = -1; if (host == null) { - System.err - .println("In Register.addNode : host.getIP() == null !"); + System.err.println( "In Register.addNode : host.getIP() == null !" ) ; } - is = existNodeOfStub(host.getStub()); + is = existNodeOfStub( host.getStub() ) ; if (is != -1) { - System.out.println("This node exists yet, I replace it"); + System.out.println( "This node exists yet, I replace it" ) ; // System.out.println("MERDE !!"); // System.out.println("MERDE !!"); // System.out.println("MERDE !!"); @@ -104,9 +111,9 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { // System.out.println("MERDE !!"); // System.out.println("MERDE !!"); // System.out.println("MERDE !!"); - liste.setElementAt(host, is); + liste.set( is, host ) ; } else { - liste.add(0,host); + liste.add( 0, host ) ; } } @@ -208,7 +215,7 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { return liste.size(); } - public synchronized Vector getListe() { + public synchronized ArrayList getListe() { return liste; } @@ -252,9 +259,9 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { public synchronized void purge() { for (int i = 0; i < liste.size(); i++) - if (((Node) liste.elementAt(i)).getOutputStream() != null) { + if (((Node) liste.get(i)).getOutputStream() != null) { try { - ((Node) liste.elementAt(i)).getOutputStream().close(); + ((Node) liste.get(i)).getOutputStream().close(); } catch (Exception e) { System.err.println("Unable to close outputStream :" + e); } @@ -267,7 +274,7 @@ public class Register implements java.io.Serializable, java.lang.Cloneable { return params; } - public synchronized Vector getListOfNodes() { + public synchronized ArrayList getListOfNodes() { return liste; } diff --git a/src/jaceP2P/RunningApplication.java b/src/jaceP2P/RunningApplication.java index 0f887b0..809896d 100644 --- a/src/jaceP2P/RunningApplication.java +++ b/src/jaceP2P/RunningApplication.java @@ -17,7 +17,7 @@ public class RunningApplication /* implements java.io.Serializable */{ private int numberOfSpawnerDisconnections = 0; // nb de deconnection de // spawners depuis debut // appli - private int numberOfCouilles = 0; // nb de deconnection depuis debut appli + private int numberOfProblems = 0; // nb de deconnection depuis debut appli private int numberOfSuicides = 0; // nb de deconnection depuis debut appli private RunningApplication() { @@ -43,8 +43,8 @@ public class RunningApplication /* implements java.io.Serializable */{ return name; } - public synchronized int getNumberOfCouilles() { - return numberOfCouilles; + public synchronized int getNumberOfProblems() { + return numberOfProblems; } public synchronized void setNbTasks(int nb) { @@ -94,8 +94,8 @@ public class RunningApplication /* implements java.io.Serializable */{ numberOfSpawnerDisconnections = nb; } - public synchronized void incrementNumberOfCouille() { - numberOfCouilles++; + public synchronized void incrementNumberOfProblems() { + numberOfProblems++; } public synchronized void incrementNumberOfSuicides() { diff --git a/src/jaceP2P/ScanThread.java b/src/jaceP2P/ScanThread.java index f11667c..467521d 100644 --- a/src/jaceP2P/ScanThread.java +++ b/src/jaceP2P/ScanThread.java @@ -133,7 +133,7 @@ public class ScanThread extends Thread { if (spawnerStub == null) System.err.println("SpawnerStub is null"); try { - spawnerStub.signalDeadNode(jaceStub, neighborRank); + spawnerStub.signalDeadNode( jaceStub, neighborRank ) ; Thread.sleep(10 * beat); diff --git a/src/jaceP2P/ScanThreadSuperNode.java b/src/jaceP2P/ScanThreadSuperNode.java index 1f3dad6..c3e92f7 100644 --- a/src/jaceP2P/ScanThreadSuperNode.java +++ b/src/jaceP2P/ScanThreadSuperNode.java @@ -92,22 +92,22 @@ public class ScanThreadSuperNode extends Thread { synchronized (SuperNodeListe.Instance()) { System.out.println("Removing " + ((SuperNodeData) SuperNodeListe.Instance() - .getListe().elementAt(index)).getIP()); + .getListe().get(index)).getIP()); data = (SuperNodeData) SuperNodeListe.Instance().getListe() - .elementAt(index); + .get(index); SuperNodeListe.Instance().removeSuperNode( ((SuperNodeData) SuperNodeListe.Instance() - .getListe().elementAt(index))); + .getListe().get(index))); } // diffusing the message concerning a dead superNode for (int i = 0; i < SuperNodeListe.Instance().getListe().size(); i++) try { if (!((SuperNodeData) SuperNodeListe.Instance() - .getListe().elementAt(i)).getIP().equals( + .getListe().get(i)).getIP().equals( LocalHost.Instance().getIP())) ((SuperNodeData) SuperNodeListe.Instance() - .getListe().elementAt(i)).getStub() + .getListe().get(i)).getStub() .removeSuperNode(data); } catch (Exception e2) { System.err @@ -127,7 +127,7 @@ public class ScanThreadSuperNode extends Thread { else index = SuperNodeListe.Instance().getListe().size() - 1; ((SuperNodeData) SuperNodeListe.Instance().getListe() - .elementAt(index)).getStub().updateHeart( + .get(index)).getStub().updateHeart( LocalHost.Instance().getSuperNodeStub()); } diff --git a/src/jaceP2P/SuperNodeListe.java b/src/jaceP2P/SuperNodeListe.java index 0eede4b..107d9b7 100644 --- a/src/jaceP2P/SuperNodeListe.java +++ b/src/jaceP2P/SuperNodeListe.java @@ -5,8 +5,8 @@ import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.rmi.Naming; +import java.util.ArrayList; import java.util.Random; -import java.util.Vector; import and.Mapping.Algo; import and.Mapping.GNode; @@ -16,13 +16,11 @@ public class SuperNodeListe implements Cloneable { // attributes public static SuperNodeListe Instance; private Random r; - @SuppressWarnings("unchecked") - private Vector liste = null; + private ArrayList liste = null; // constructors - @SuppressWarnings("unchecked") public SuperNodeListe() { - liste = new Vector(); + liste = new ArrayList() ; r = new Random(); } @@ -32,13 +30,13 @@ public class SuperNodeListe implements Cloneable { } return Instance; } - + @SuppressWarnings("unchecked") public synchronized SuperNodeListe clone() { SuperNodeListe d = new SuperNodeListe(); // d.r = (Random) r.clone(); - d.liste = (Vector) liste.clone(); - return d; + d.liste = (ArrayList) liste.clone() ; + return d ; } // methods @@ -48,8 +46,6 @@ public class SuperNodeListe implements Cloneable { // in order to discover new superNodes dynamicaly /* Sébastien Miquée -- ajout de la lecture du fichier de config **/ - - @SuppressWarnings("unchecked") public void staticInitialization() { String adr = ""; String home = System.getProperty("user.home"); @@ -91,8 +87,8 @@ public class SuperNodeListe implements Cloneable { // donnees ds un fichier de conf } - @SuppressWarnings("unchecked") - public Vector getListe() { + + public ArrayList getListe() { return liste; } @@ -106,11 +102,11 @@ public class SuperNodeListe implements Cloneable { if (index < 0) { index = -index; } - return (SuperNodeData) liste.elementAt(index); + return (SuperNodeData) liste.get(index); } public SuperNodeData getSuperNodeData(int i) { - return (SuperNodeData) liste.elementAt(i); + return (SuperNodeData) liste.get(i); } // if returns 0, there are no nodes at all @@ -120,25 +116,24 @@ public class SuperNodeListe implements Cloneable { SuperNodeData return_d = null; for (int i = 0; i < liste.size(); i++) { - d = (SuperNodeData) liste.elementAt(i); + d = (SuperNodeData) liste.get(i); if (d.getNbOfNodes() > max) { max = d.getNbOfNodes(); - return_d = (SuperNodeData) liste.elementAt(i); + return_d = (SuperNodeData) liste.get(i); } } return return_d; } public void addStub(int index, JaceSuperNodeInterface stub) { - ((SuperNodeData) liste.elementAt(index)).setStub(stub); + ((SuperNodeData) liste.get(index)).setStub(stub); } - @SuppressWarnings("unchecked") public void addStubOf(String snode, int port, JaceSuperNodeInterface stub) { int is = -1; is = existSuperNode(snode); if (is != -1) { - ((SuperNodeData) liste.elementAt(is)).setStub(stub); + ((SuperNodeData) liste.get(is)).setStub(stub); } else { System.err.println("This superNode does not exist : " + snode); System.out.println("Add the new SuperNode"); @@ -201,7 +196,7 @@ public class SuperNodeListe implements Cloneable { JaceSuperNodeInterface remoteStub = null; for (int i = 0; i < liste.size(); i++) { - d = (SuperNodeData) liste.elementAt(i); + d = (SuperNodeData) liste.get(i); if (!d.getIP().equals(LocalHost.Instance().getIP())) { // if not me, I inform the other super nodes remoteStub = d.getStub(); @@ -224,14 +219,13 @@ public class SuperNodeListe implements Cloneable { int is = -1; is = existSuperNode(IP); if (is != -1) { - SuperNodeData d = (SuperNodeData) liste.elementAt(is); + SuperNodeData d = (SuperNodeData) liste.get(is); d.setNbOfNodes(nb); } else { System.err.println("This SuperNode does not exists in my list: " + IP); } } - @SuppressWarnings("unchecked") public void locateSuperNodes(JaceSuperNodeInterface stub) { String remoteIP; int remotePort; @@ -240,8 +234,8 @@ public class SuperNodeListe implements Cloneable { boolean inStaticList = false; while (i < liste.size() && !connected) { remoteIP = LocalHost.Instance().resolve( - ((SuperNodeData) liste.elementAt(i)).getIP()); - remotePort = ((SuperNodeData) liste.elementAt(i)).getPort(); + ((SuperNodeData) liste.get(i)).getIP()); + remotePort = ((SuperNodeData) liste.get(i)).getPort(); // If I'm not this superNode, I locate the others if (!remoteIP.equals(LocalHost.Instance().getIP())) { @@ -257,7 +251,7 @@ public class SuperNodeListe implements Cloneable { // SuperNodeListe.Instance().addStub(i, remoteStub); // Send my stub to this corresponding remote SuperNode - liste = (Vector) remoteStub.sendStub(LocalHost.Instance() + liste = (ArrayList) remoteStub.sendStub(LocalHost.Instance() .getIP(), LocalHost.Instance().getPort(), stub); System.out.println("Recieved List"); connected = true; @@ -269,7 +263,7 @@ public class SuperNodeListe implements Cloneable { // get the nb of Daemons the remote SuperNode has already // registered // nb = remoteStub.getNbOfNodes(); - // ((SuperNodeData)liste.elementAt(i)).setNbOfNodes(nb); + // ((SuperNodeData)liste.get(i)).setNbOfNodes(nb); // System.out.println("bien envoye mon stub a " + remoteIP); System.out.println("size:" + liste.size()); @@ -299,13 +293,12 @@ public class SuperNodeListe implements Cloneable { } - @SuppressWarnings("unchecked") public void addSuperNode(SuperNodeData d) { int is = -1; String name = d.getIP(); is = existSuperNode(name); if (is != -1) { - liste.setElementAt(d, is); + liste.set( is, d ) ; } else { liste.add(d); } @@ -326,12 +319,12 @@ public class SuperNodeListe implements Cloneable { System.out.println("\nConfig of the superNodes :"); String msg = ""; for (int i = 0; i < liste.size(); i++) { - SuperNodeData d = (SuperNodeData) liste.elementAt(i); + SuperNodeData d = (SuperNodeData) liste.get(i); if (d.getIP().equals(LocalHost.Instance().getIP())) { msg = "me : " + Register.Instance().getSize(); } else { System.out.println(d.getIP() + " : " - + ((SuperNodeData) liste.elementAt(i)).getNbOfNodes()); + + ((SuperNodeData) liste.get(i)).getNbOfNodes()); } } System.out.println(msg); @@ -354,7 +347,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals(LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes @@ -379,7 +372,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals(LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes @@ -404,7 +397,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals(LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes @@ -429,7 +422,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals(LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes @@ -454,7 +447,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals(LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes @@ -479,7 +472,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals(LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes @@ -503,7 +496,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals( LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes @@ -530,7 +523,7 @@ public class SuperNodeListe implements Cloneable { for( int i = 0 ; i < liste.size() ; i++ ) { - d = (SuperNodeData) liste.elementAt( i ) ; + d = (SuperNodeData) liste.get( i ) ; if( ! d.getIP().equals( LocalHost.Instance().getIP() ) ) { // if not me, I inform the other super nodes diff --git a/src/jaceP2P/Task.java b/src/jaceP2P/Task.java index ffad2e9..f7db564 100644 --- a/src/jaceP2P/Task.java +++ b/src/jaceP2P/Task.java @@ -5,7 +5,7 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.rmi.ConnectException; import java.rmi.RemoteException; -import java.util.Vector; +import java.util.ArrayList; //import java.util.Calendar; //import java.util.GregorianCalendar; @@ -26,13 +26,13 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { public int nb_not_recv; public boolean electedNode = false; public boolean respSent = false; - public Vector resp; + public ArrayList resp; public int verifNum = 0; public LastSave lastSave = new LastSave(); - public Vector neighbors; - public Vector neighborsValues; - public Vector dependancies; - public Vector values; + public ArrayList neighbors; + public ArrayList neighborsValues; + public ArrayList dependancies; + public ArrayList values; public int sendId; public String action = "nothing"; public boolean verdict = false; @@ -57,22 +57,21 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { public Task sauv; public BackupConvg sauvConvg = new BackupConvg(); public boolean postReloading = false; - @SuppressWarnings("unchecked") - public Vector reduceAll; + public ArrayList reduceAll; int cpt = 0; int count = 0; Thread th; public Task() { - reduceAll = new Vector(); - dependancies = new Vector(); - values = new Vector(); - resp = new Vector(); + reduceAll = new ArrayList(); + dependancies = new ArrayList(); + values = new ArrayList(); + resp = new ArrayList(); saved = new boolean[2]; sauv = this; - neighbors = new Vector(); - neighborsValues = new Vector(); + neighbors = new ArrayList(); + neighborsValues = new ArrayList(); } public void getBackupForNewNode(int rank) { @@ -124,7 +123,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { } // method to overload by user in the appli to specify the reduceAll method - public synchronized void reduceAll(Vector recievedValue) { + public synchronized void reduceAll(ArrayList recievedValue) { } public void setId(TaskId Id) { @@ -233,11 +232,11 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { } public void reinitializeVectors() throws RemoteException { - values.removeAllElements(); - dependancies.removeAllElements(); - neighbors.removeAllElements(); - neighborsValues.removeAllElements(); - resp.removeAllElements(); + values.clear() ; + dependancies.clear() ; + neighbors.clear() ; + neighborsValues.clear() ; + resp.clear() ; } public long jaceP2P_getChronoValue() { @@ -433,7 +432,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { } public void setValues(int index, boolean value) { - values.setElementAt(new Boolean(value), index); + values.set( index, new Boolean(value) ) ; } @SuppressWarnings("static-access") @@ -637,9 +636,9 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { sauv.nb_not_recv = nb_not_recv; sauv.electedNode = electedNode; sauv.respSent = respSent; - sauv.neighbors = (Vector) neighbors.clone(); - sauv.neighborsValues = (Vector) neighborsValues.clone(); - sauv.resp = (Vector) resp.clone(); + sauv.neighbors = (ArrayList) neighbors.clone(); + sauv.neighborsValues = (ArrayList) neighborsValues.clone(); + sauv.resp = (ArrayList) resp.clone(); sauv.verifNum = verifNum; sauv.sendId = sendId; sauv.reduceAll = reduceAll; @@ -670,9 +669,9 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { sauvConvg.nb_not_recv = nb_not_recv; sauvConvg.electedNode = electedNode; sauvConvg.respSent = respSent; - sauvConvg.neighbors = (Vector) neighbors.clone(); - sauvConvg.neighborsValues = (Vector) neighborsValues.clone(); - sauvConvg.resp = (Vector) resp.clone(); + sauvConvg.neighbors = (ArrayList) neighbors.clone(); + sauvConvg.neighborsValues = (ArrayList) neighborsValues.clone(); + sauvConvg.resp = (ArrayList) resp.clone(); sauvConvg.verifNum = verifNum; sauvConvg.sendId = sendId; sauvConvg.finalStep = finalStep; @@ -1135,7 +1134,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { } public synchronized void response(int neighId, int tag, int response, - Vector recievedValue) throws RemoteException { + ArrayList recievedValue) throws RemoteException { // System.out.println("inside response function"); // System.out.println("sleeping till not reloading"); while (reloading == true) { @@ -1159,12 +1158,12 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { if (response == 1 && !state.equals("SAVING") - && (((Integer) (resp.elementAt(indexNeigh))).intValue()) != 1) { + && (((Integer) (resp.get(indexNeigh))).intValue()) != 1) { // System.out.println("calling reduceAll()"); reduceAll(recievedValue); } // System.out.println("after calculating reduceAll"); - resp.setElementAt(response, indexNeigh); + resp.set( indexNeigh, response ) ; // System.out.println("get response ............"); waitForAck(3); @@ -1175,8 +1174,8 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { public void initializeSavLeader() { for (int i = 0; i < resp.size(); i++) - resp.setElementAt(0, i); - respSent = false; + resp.set( i, 0 ) ; + respSent = false ; } public boolean recievedAllResp() { @@ -1224,7 +1223,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { if (((Boolean) neighborsValues.get(i)).booleanValue() == false) { nb_not_recv--; // System.out.println("le noeud "+idNeigh+" a envoyer un message de pseudoconvergence"); - neighborsValues.setElementAt(new Boolean(true), i); + neighborsValues.set( i, new Boolean(true) ) ; waitForAck(3); } @@ -1262,9 +1261,9 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { nb_not_recv = neighbors.size(); for (int i = 0; i < neighbors.size(); i++) - neighborsValues.setElementAt(new Boolean(false), i); + neighborsValues.set( i, new Boolean(false) ) ; for (int i = 0; i < resp.size(); i++) - resp.setElementAt(0, i); + resp.set( i, 0 ) ; underTh = false; electedNode = false; localCV_state = false; @@ -1282,14 +1281,14 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { int neighId = -1; for (int i = 0; i < neighbors.size(); i++) if (((Boolean) neighborsValues.get(i)).booleanValue() == false) - neighId = ((Integer) neighbors.elementAt(i)).intValue(); + neighId = ((Integer) neighbors.get(i)).intValue(); return neighId; } public boolean getValues() { boolean bool = true; for (int i = 0; i < values.size(); i++) - if (((Boolean) values.elementAt(i)).equals(new Boolean(false))) { + if (((Boolean) values.get(i)).equals(new Boolean(false))) { bool = false; break; } @@ -1342,7 +1341,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { public void initializeVerifLeader() throws RemoteException { reinitializePPEr(); for (int i = 0; i < resp.size(); i++) - resp.setElementAt(0, i); + resp.set( i, 0 ) ; verifNum++; respSent = false; } @@ -1362,7 +1361,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { action = "sendVerif"; reinitializePPEr(); for (int i = 0; i < resp.size(); i++) - resp.setElementAt(0, i); + resp.set( i, 0 ) ; verifNum++; respSent = false; @@ -1390,7 +1389,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { pseudoPerBeg = false; pseudoPerEnd = false; for (int i = 0; i < values.size(); i++) - values.setElementAt(new Boolean(false), i); + values.set( i, new Boolean(false) ) ; } @@ -1415,7 +1414,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { } public void savOrFinOrRest(int tag, int step, boolean verd, - Vector reduceAll) { + ArrayList reduceAll) { // System.out.println("Recieved verd "+verd+" sleeping till not reloading"); while (reloading == true) { try { @@ -1429,7 +1428,7 @@ public class Task implements Runnable, Cloneable, java.io.Serializable { action = "sendVerdict"; if (finalStep == true) { for (int i = 0; i < resp.size(); i++) - resp.setElementAt(0, i); + resp.set( i, 0 ) ; // System.out.println("sleeping till response is sent"); while (action.equals("sendResponse") || respSent == false) try { diff --git a/src/jaceP2P/TaskLauncher.java b/src/jaceP2P/TaskLauncher.java index 70eb239..60cf393 100644 --- a/src/jaceP2P/TaskLauncher.java +++ b/src/jaceP2P/TaskLauncher.java @@ -2,7 +2,7 @@ package jaceP2P; import java.io.ByteArrayInputStream; import java.io.ObjectInputStream; -import java.util.Vector; +import java.util.ArrayList; @@ -89,15 +89,12 @@ public class TaskLauncher { tsk.electedNode = tskConvg.electedNode; tsk.respSent = tskConvg.respSent; // System.out.println("avant la copie des vecteurs"); - tsk.neighbors = (Vector) (tskConvg.neighbors) - .clone(); + tsk.neighbors = tskConvg.neighbors ; + tsk.neighborsValues = tskConvg.neighborsValues ; - tsk.neighborsValues = (Vector) (tskConvg.neighborsValues) - .clone(); if (bConvg.getIteration() >= b.getIteration()) - tsk.reduceAll = (Vector) (tskConvg.reduceAll) - .clone(); - tsk.resp = (Vector) (tskConvg.resp).clone(); + tsk.reduceAll = tskConvg.reduceAll ; + tsk.resp = (ArrayList) (tskConvg.resp).clone() ; // System.out.println("apres la copie des vecteurs"); tsk.underTh = tskConvg.underTh; tsk.verifNum = tskConvg.verifNum; diff --git a/src/jaceP2P/TokenThread.java b/src/jaceP2P/TokenThread.java index 1f11e73..3c9d76b 100644 --- a/src/jaceP2P/TokenThread.java +++ b/src/jaceP2P/TokenThread.java @@ -2,7 +2,6 @@ package jaceP2P; import java.rmi.RemoteException; import java.util.ArrayList; -import java.util.Vector; import and.Mapping.*; public class TokenThread extends Thread { @@ -58,13 +57,13 @@ public class TokenThread extends Thread { // System.out.println("finished set token"); } - @SuppressWarnings("unchecked") + public void distribute() { System.out.println("totalDaemons=" + SuperNodeListe.Instance().getTotalDaemons()); int nbLocal = Register.Instance().getSize(); int totalDaemons; - Vector liste = SuperNodeListe.Instance().getListe(); + ArrayList liste = SuperNodeListe.Instance().getListe(); /******* Sébastien Miquée ********/ ArrayList gnodes = null ; @@ -86,14 +85,14 @@ public class TokenThread extends Thread { if (((SuperNodeData) liste.get(i)).getNbOfNodes() < nbDaemons) try { // System.out.println("Snode="+i+" nodes="+((SuperNodeData)liste.get(i)).getNbOfNodes()); - Vector nodes = Register.Instance() + ArrayList nodes = Register.Instance() .getListe(); int amountToSend = nbDaemons - ((SuperNodeData) liste.get(i)) .getNbOfNodes(); - Vector newVector = new Vector(); + ArrayList newVector = new ArrayList() ; for (int j = 0; j < amountToSend; j++) { - newVector.add(nodes.elementAt(j)); + newVector.add(nodes.get(j)); } ((SuperNodeData) liste.get(i)).getStub() .sendSurplus(newVector, gnodes); @@ -140,7 +139,7 @@ public class TokenThread extends Thread { index = (index + 1) % SuperNodeListe.Instance().getListe().size(); // System.out.println("index="+index); try { - ((SuperNodeData) liste.elementAt(index)).getStub().setToken(); + ((SuperNodeData) liste.get(index)).getStub().setToken(); if (index != SuperNodeListe.Instance().existSuperNode( LocalHost.Instance().getIP())) token = false; @@ -149,7 +148,7 @@ public class TokenThread extends Thread { } catch (Exception e) { try { System.err.println("Unable to send Token to " - + ((SuperNodeData) liste.elementAt(index)).getIP() + + ((SuperNodeData) liste.get(index)).getIP() + " :" + e); /* * SuperNodeListe.Instance().removeSuperNode(((SuperNodeData) diff --git a/src/jaceP2P/UpdateRegisterConcernedThread.java b/src/jaceP2P/UpdateRegisterConcernedThread.java index a95f0a7..9654291 100644 --- a/src/jaceP2P/UpdateRegisterConcernedThread.java +++ b/src/jaceP2P/UpdateRegisterConcernedThread.java @@ -1,19 +1,19 @@ package jaceP2P; -import java.util.Vector; +import java.util.ArrayList; +//import java.util.Vector; class UpdateRegisterConcernedThread extends Thread { Register reg = null; int requete; int i, rank; Task tache = null; - @SuppressWarnings("unchecked") - Vector neighbors; + ArrayList neighbors; int nbOfDeamonsPerThread; Node oldNode, node; - @SuppressWarnings("unchecked") - public UpdateRegisterConcernedThread(Vector neighbors, Register r, int i, + + public UpdateRegisterConcernedThread(ArrayList neighbors, Register r, int i, int rank, Node noeud, Node tmpNode) { this.reg = r; @@ -46,7 +46,7 @@ class UpdateRegisterConcernedThread extends Thread { // while( retry ) // { try { - if (((Integer) neighbors.elementAt(index)).intValue() == rank) { + if (((Integer) neighbors.get(index)).intValue() == rank) { Register g = new Register(); ListeTask newListOfTasks = new ListeTask(); g.setAppliName(reg.getAppliName()); @@ -59,7 +59,7 @@ class UpdateRegisterConcernedThread extends Thread { for (int j = 0; j < neighbors.size(); j++) { TaskId id = listOfTasks .getTaskIdOfRank(((Integer) neighbors - .elementAt(j)).intValue()) ; + .get(j)).intValue()) ; newListOfTasks.addTask( id ) ; if( id.getHostStub() != null ) { Node noeud = reg.getNodeOfStub( id.getHostStub() ) ; @@ -84,18 +84,18 @@ class UpdateRegisterConcernedThread extends Thread { TaskId neighborTask = listOfTasks .getTaskIdOfRank((((Integer) neighbors - .elementAt(index)).intValue() + 1) + .get(index)).intValue() + 1) % listOfTasks.getSize()); JaceInterface stubVoisin = neighborTask.getHostStub(); JaceInterface stub = listOfTasks.getTaskIdOfRank( - ((Integer) neighbors.elementAt(index)).intValue()) + ((Integer) neighbors.get(index)).intValue()) .getHostStub(); if( stub == null || stubVoisin == null ) { System.out.println("stub NULL"); } else { name = listOfTasks.getTaskIdOfRank( - ((Integer) neighbors.elementAt(index)) + ((Integer) neighbors.get(index)) .intValue()).getHostName(); Node noeud = null ; @@ -158,7 +158,7 @@ class UpdateRegisterConcernedThread extends Thread { //int tag; TaskId id = listOfTasks .getTaskIdOfRank(((Integer) neighbors - .elementAt(index)).intValue()); + .get(index)).intValue()); name = id.getHostName(); try { @@ -205,9 +205,9 @@ class UpdateRegisterConcernedThread extends Thread { } @SuppressWarnings("unused") - private Vector getDependencies(int id, int jaceSize) { + private ArrayList getDependencies(int id, int jaceSize) { // get computing dependencies - Vector neighbors = new Vector(); + ArrayList neighbors = new ArrayList(); int[] dep = tache.getDependencies(id); for (int z = 0; z < taille(dep); z++) neighbors.add(dep[z]); @@ -248,9 +248,9 @@ class UpdateRegisterConcernedThread extends Thread { neighbors.add(rankOfBackTask); } // adds itself - neighbors.add(id); - return neighbors; - + neighbors.add( id ) ; + + return neighbors ; } public static int taille(int[] vect) { diff --git a/src/jaceP2P/UpdateRegisterThread.java b/src/jaceP2P/UpdateRegisterThread.java index df8c036..1e352af 100644 --- a/src/jaceP2P/UpdateRegisterThread.java +++ b/src/jaceP2P/UpdateRegisterThread.java @@ -1,6 +1,6 @@ package jaceP2P; -import java.util.Vector; +import java.util.ArrayList; class UpdateRegisterThread extends Thread { // Register reg = Register.Instance(); @@ -44,7 +44,7 @@ class UpdateRegisterThread extends Thread { // Node node = Register.Instance().getNodeAt(index); // Node node = reg.getNodeAt(index); // Node voisin=reg.getNodeAt((index+1)%reg.getSize()); - Vector dependencies = getDependencies(index, listOfTasks.getSize()); + ArrayList dependencies = getDependencies(index, listOfTasks.getSize()); // System.out.println("la liste des voisins de : "+index); // for(int z=0;z getDependencies(int id, int jaceSize) { + private ArrayList getDependencies(int id, int jaceSize) { // get computing dependencies - Vector neighbors = new Vector(); + ArrayList neighbors = new ArrayList(); int[] dep = null; // try{ // if(tache==null) -- 2.20.1