int requete;
int i, rank;
Task tache = null;
- Vector<?> neighbors;
+ @SuppressWarnings("unchecked")
+ Vector neighbors;
int nbOfDeamonsPerThread;
Node oldNode, node;
- public UpdateRegisterConcernedThread(Vector<?> neighbors, Register r, int i,
+ @SuppressWarnings("unchecked")
+ public UpdateRegisterConcernedThread(Vector neighbors, Register r, int i,
int rank, Node noeud, Node tmpNode) {
this.reg = r;
public void run() {
ListeTask listOfTasks = Register.Instance().getListeOfTasks().clone();
+// boolean retry = false ;
+// int nbRetry = 0 ;
+// int nbRetryMax = 2 ;
+
+ String name = "" ;
+
// listOfTasks.viewAll();
for (int index = i * nbOfDeamonsPerThread; index < i
- * nbOfDeamonsPerThread + nbOfDeamonsPerThread
- && index < neighbors.size(); index++) {
+ * nbOfDeamonsPerThread + nbOfDeamonsPerThread
+ && index < neighbors.size(); index++)
+ {
- try {
- if (((Integer) neighbors.elementAt(index)).intValue() == rank) {
- Register g = new Register();
- ListeTask newListOfTasks = new ListeTask();
- g.setAppliName(reg.getAppliName());
- g.setParams(reg.getParams());
+// retry = true ;
+// nbRetry = 0 ;
- g.setSpawnerStub(JaceSpawner.Instance()
- .getSpawnerResponsibleOn(rank));
- g.setNbOfTasks(reg.getNbOfTasks());
+// while( retry )
+// {
+ try {
+ if (((Integer) neighbors.elementAt(index)).intValue() == rank) {
+ Register g = new Register();
+ ListeTask newListOfTasks = new ListeTask();
+ g.setAppliName(reg.getAppliName());
+ g.setParams(reg.getParams());
- for (int j = 0; j < neighbors.size(); j++) {
- TaskId id = listOfTasks
- .getTaskIdOfRank(((Integer) neighbors
- .elementAt(j)).intValue());
- newListOfTasks.addTask(id);
- if (id.getHostStub() != null) {
- Node noeud = reg.getNodeOfStub(id.getHostStub());
- Node n2 = noeud;
-
- g.addNode(n2);
- }
- }
- g.setListeOfTasks(newListOfTasks);
-
- TaskId neighborTask = listOfTasks
- .getTaskIdOfRank((((Integer) neighbors
- .elementAt(index)).intValue() + 1)
- % listOfTasks.getSize());
- JaceInterface stubVoisin = neighborTask.getHostStub();
- JaceInterface stub = listOfTasks.getTaskIdOfRank(
- ((Integer) neighbors.elementAt(index)).intValue())
- .getHostStub();
- if (stub == null || stubVoisin == null) {
- System.out.println("stub NULL");
- } else {
-
- String name = listOfTasks.getTaskIdOfRank(
- ((Integer) neighbors.elementAt(index))
- .intValue()).getHostName();
+ g.setSpawnerStub(JaceSpawner.Instance()
+ .getSpawnerResponsibleOn(rank));
+ g.setNbOfTasks(reg.getNbOfTasks());
- try {
- // whatever the case, update the Register on each Node
+ for (int j = 0; j < neighbors.size(); j++) {
+ TaskId id = listOfTasks
+ .getTaskIdOfRank(((Integer) neighbors
+ .elementAt(j)).intValue()) ;
+ newListOfTasks.addTask( id ) ;
+ if( id.getHostStub() != null ) {
+ Node noeud = reg.getNodeOfStub( id.getHostStub() ) ;
+// Node n2 = noeud ;
+ if( noeud != null )
+ {
+ g.addNode( noeud ) ;
+ } else {
+ noeud = reg.getNodeOfName( id.getHostName() ) ;
+
+ if( noeud != null )
+ {
+ g.addNode( noeud ) ;
+ } else {
+ System.err.println( "UpdateRegisterConcernedThread: cannot found the corresponding node !" ) ;
+ }
+ }
+ }
+ }
+
+ g.setListeOfTasks(newListOfTasks);
- // JaceSpawnerInterface
- // ja=Register.Instance().getSpawnerStub();
- // System.out.println("avant update register");
+ TaskId neighborTask = listOfTasks
+ .getTaskIdOfRank((((Integer) neighbors
+ .elementAt(index)).intValue() + 1)
+ % listOfTasks.getSize());
+ JaceInterface stubVoisin = neighborTask.getHostStub();
+ JaceInterface stub = listOfTasks.getTaskIdOfRank(
+ ((Integer) neighbors.elementAt(index)).intValue())
+ .getHostStub();
+ if( stub == null || stubVoisin == null )
+ {
+ System.out.println("stub NULL");
+ } else {
+ name = listOfTasks.getTaskIdOfRank(
+ ((Integer) neighbors.elementAt(index))
+ .intValue()).getHostName();
- stub.updateRegister(g, stubVoisin, 0);
+ Node noeud = null ;
+
+ try {
+ // whatever the case, update the Register on each Node
- // System.out.println(" after update register");
- // if updateRegister worked, that means Node is
- // Alive
- Node noeud = Register.Instance()
- .getNodeOfStub(stub);
- if (noeud != null) {
- noeud.setAliveFlag(true);
- noeud.setAliveTime();
+ // JaceSpawnerInterface
+ // ja=Register.Instance().getSpawnerStub();
+ // System.out.println("avant update register");
- }
- } catch (Exception e) {
- System.err
- .println(name
- + " ("
- + LocalHost.Instance()
- .resolve(name)
- + " rank="
- + index
- + ") cannot be reached by UpdateRegisterConcernedThread for new node "
- + " size : "
- + Register.Instance().getSize()
- + " :" + e);
+ stub.updateRegister( g, stubVoisin, 0 ) ;
- }
- }
- } else {
- //int tag;
- TaskId id = listOfTasks
- .getTaskIdOfRank(((Integer) neighbors
- .elementAt(index)).intValue());
- String name = id.getHostName();
+ // System.out.println(" after update register");
+ // if updateRegister worked, that means Node is
+ // Alive
+ noeud = Register.Instance()
+ .getNodeOfStub(stub);
+ if (noeud != null) {
+ noeud.setAliveFlag(true);
+ noeud.setAliveTime();
- try {
-
- JaceInterface stub = id.getHostStub();
- stub.updateRegister(oldNode, node);
- } catch (Exception e) {
- System.err
+ }
+// retry = false ;
+ } catch( Exception e ) {
+ System.err
.println(name
+ " ("
- + LocalHost.Instance().resolve(name)
+ + LocalHost.Instance()
+ .resolve(name)
+ " rank="
+ index
- + ") cannot be reached by UpdateRegisterConcernedThread "
+ + ") cannot be reached by UpdateRegisterConcernedThread for new node "
+ " size : "
- + Register.Instance().getSize() + " :"
- + e);
+ + Register.Instance().getSize()
+ + " :" + e);
+// try{
+// Thread.sleep( (nbRetry + 1) * 2000 ) ;
+// }catch(Exception sl){}
+// nbRetry++ ;
+
+// if( nbRetry > nbRetryMax )
+// {
+// retry = false ;
+// System.err.println( "Cannot retry anymore!" ) ;
+// if( noeud != null )
+// {
+// try {
+// JaceSpawner.Instance().signalDeadNode( noeud.getStub(), index ) ;
+// } catch( Exception ex ) {
+// JaceSpawner.Instance().signalDeadNode( null, index ) ;
+// }
+// } else {
+// JaceSpawner.Instance().signalDeadNode( null, index ) ;
+// }
+// }
+ }
+ }
+ } else {
+ //int tag;
+ TaskId id = listOfTasks
+ .getTaskIdOfRank(((Integer) neighbors
+ .elementAt(index)).intValue());
+ name = id.getHostName();
+
+ try {
+
+ JaceInterface stub = id.getHostStub() ;
+ stub.updateRegister( oldNode, node, rank ) ;
+// retry = false ;
+ } catch (Exception e) {
+ System.err
+ .println(name
+ + " ("
+ + LocalHost.Instance().resolve(name)
+ + " rank="
+ + index
+ + ") cannot be reached by UpdateRegisterConcernedThread size : "
+ + Register.Instance().getSize() + " :"
+ + e);
+
+// try{
+// Thread.sleep( (nbRetry + 1) * 2000 ) ;
+// }catch(Exception sl){}
+// nbRetry++ ;
+
+// if( nbRetry > nbRetryMax )
+// {
+// retry = false ;
+// System.err.println( "Cannot retry anymore!" ) ;
+// }
+ }
}
+ } catch( Exception e2 ) {
+ System.err.println("Error in updateRegisterConcernedThread :"
+ + e2);
}
- } catch (Exception e2) {
- System.err.println("Error in updateRegisterConcernedThread :"
- + e2);
- }
+// }
+
+// if( nbRetry > nbRetryMax )
+// {
+//
+// }
}
// System.out.println("at the end of an updateRegisterCon. j="+i);
// Register.Instance().getListeOfTasks().viewAll();