X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/jaceP2P.git/blobdiff_plain/c0318ba7319bb30cd54a3e2fb0cfe55a0a155629..HEAD:/src/jaceP2P/UpdateRegisterConcernedThread.java?ds=sidebyside diff --git a/src/jaceP2P/UpdateRegisterConcernedThread.java b/src/jaceP2P/UpdateRegisterConcernedThread.java index fc5f6f4..9654291 100644 --- a/src/jaceP2P/UpdateRegisterConcernedThread.java +++ b/src/jaceP2P/UpdateRegisterConcernedThread.java @@ -1,17 +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; - Vector neighbors; + ArrayList neighbors; int nbOfDeamonsPerThread; Node oldNode, node; - 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; @@ -26,124 +28,186 @@ class UpdateRegisterConcernedThread extends Thread { public void run() { ListeTask listOfTasks = Register.Instance().getListeOfTasks().clone(); - // listOfTasks.viewAll(); - for (int index = i * nbOfDeamonsPerThread; index < i - * nbOfDeamonsPerThread + nbOfDeamonsPerThread - && index < neighbors.size(); index++) { +// boolean retry = false ; +// int nbRetry = 0 ; +// int nbRetryMax = 2 ; - try { - if (((Integer) neighbors.elementAt(index)).intValue() == rank) { - Register g = new Register(); - ListeTask newListOfTasks = new ListeTask(); - g.setAppliName(reg.getAppliName()); - g.setParams(reg.getParams()); + String name = "" ; - g.setSpawnerStub(JaceSpawner.Instance() - .getSpawnerResponsibleOn(rank)); - g.setNbOfTasks(reg.getNbOfTasks()); + // listOfTasks.viewAll(); + for (int index = i * nbOfDeamonsPerThread; index < i + * nbOfDeamonsPerThread + nbOfDeamonsPerThread + && index < neighbors.size(); index++) + { - 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 { +// retry = true ; +// nbRetry = 0 ; - String name = listOfTasks.getTaskIdOfRank( - ((Integer) neighbors.elementAt(index)) - .intValue()).getHostName(); +// while( retry ) +// { + try { + if (((Integer) neighbors.get(index)).intValue() == rank) { + Register g = new Register(); + ListeTask newListOfTasks = new ListeTask(); + g.setAppliName(reg.getAppliName()); + g.setParams(reg.getParams()); - try { - // whatever the case, uate the Register on each Node + g.setSpawnerStub(JaceSpawner.Instance() + .getSpawnerResponsibleOn(rank)); + g.setNbOfTasks(reg.getNbOfTasks()); - // JaceSpawnerInterface - // ja=Register.Instance().getSpawnerStub(); - // System.out.println("avant update register"); + for (int j = 0; j < neighbors.size(); j++) { + TaskId id = listOfTasks + .getTaskIdOfRank(((Integer) neighbors + .get(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); - // 0 l'applejaacoja commence - stub.updateRegister(g, stubVoisin, 0); + TaskId neighborTask = listOfTasks + .getTaskIdOfRank((((Integer) neighbors + .get(index)).intValue() + 1) + % listOfTasks.getSize()); + JaceInterface stubVoisin = neighborTask.getHostStub(); + JaceInterface stub = listOfTasks.getTaskIdOfRank( + ((Integer) neighbors.get(index)).intValue()) + .getHostStub(); + if( stub == null || stubVoisin == null ) + { + System.out.println("stub NULL"); + } else { + name = listOfTasks.getTaskIdOfRank( + ((Integer) neighbors.get(index)) + .intValue()).getHostName(); - // 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(); + Node noeud = null ; + + try { + // whatever the case, update the Register on each Node - } - } catch (Exception e) { - System.out - .println(name - + " (" - + LocalHost.Instance() - .resolve(name) - + " rank=" - + index - + ") cannot be reached by UpdateRegisterConcernedThread for new node " - + " size : " - + Register.Instance().getSize() - + " :" + e); + // JaceSpawnerInterface + // ja=Register.Instance().getSpawnerStub(); + // System.out.println("avant update register"); - } - } - } else { - //int tag; - TaskId id = listOfTasks - .getTaskIdOfRank(((Integer) neighbors - .elementAt(index)).intValue()); - String name = id.getHostName(); + stub.updateRegister( g, stubVoisin, 0 ) ; - try { + // 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(); - JaceInterface stub = id.getHostStub(); - stub.updateRegister(oldNode, node); - } catch (Exception e) { - System.out + } +// 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 + .get(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.out.println("error in updateRegisterConcernedThread :" - + e2); - } +// } + +// if( nbRetry > nbRetryMax ) +// { +// +// } } // System.out.println("at the end of an updateRegisterCon. j="+i); // Register.Instance().getListeOfTasks().viewAll(); } @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]); @@ -184,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) {