From e9ad3655aa50dde188c7a9b905cc5fe81fba664f Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Miqu=C3=A9e?= Date: Tue, 9 Feb 2010 08:11:47 +0100 Subject: [PATCH] Implementation of fault tolerance in Default Mapping. - Implementing the "replaceNode" and "getOtherNode" in the Default Mapping algorithm. - Adding a new function in the Mapping class and two others in the Association class in order to facilitate the replacing of a dead node. --- Makefile | 2 +- javadoc/allclasses-frame.html | 4 +-- javadoc/allclasses-noframe.html | 4 +-- javadoc/and/Mapping/Algo.html | 10 ++++---- javadoc/and/Mapping/Architecture.html | 4 +-- javadoc/and/Mapping/Association.html | 4 +-- javadoc/and/Mapping/Cluster.html | 4 +-- javadoc/and/Mapping/DefaultMapping.html | 14 +++++------ javadoc/and/Mapping/GNode.html | 4 +-- javadoc/and/Mapping/GTask.html | 4 +-- javadoc/and/Mapping/Graph.html | 4 +-- javadoc/and/Mapping/Grid.html | 4 +-- javadoc/and/Mapping/LSM.html | 14 +++++------ javadoc/and/Mapping/Linpack.html | 4 +-- javadoc/and/Mapping/Mapping.html | 4 +-- javadoc/and/Mapping/QM.html | 14 +++++------ javadoc/and/Mapping/Simple.html | 14 +++++------ javadoc/and/Mapping/Utils.html | 4 +-- javadoc/and/Mapping/package-frame.html | 4 +-- javadoc/and/Mapping/package-summary.html | 4 +-- javadoc/and/Mapping/package-tree.html | 4 +-- javadoc/constant-values.html | 4 +-- javadoc/deprecated-list.html | 4 +-- javadoc/help-doc.html | 4 +-- javadoc/index-all.html | 14 +++++------ javadoc/index.html | 2 +- javadoc/overview-tree.html | 4 +-- javadoc/serialized-form.html | 4 +-- src/and/Mapping/Algo.java | 2 +- src/and/Mapping/Association.java | 20 +++++++++++++++ src/and/Mapping/DefaultMapping.java | 31 +++++++++++++++++++++--- src/and/Mapping/LSM.java | 2 +- src/and/Mapping/Mapping.java | 23 ++++++++++++++++++ src/and/Mapping/QM.java | 2 +- src/and/Mapping/Simple.java | 2 +- 35 files changed, 156 insertions(+), 90 deletions(-) diff --git a/Makefile b/Makefile index 0484f53..bcb41b0 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ compile: $(JAVAC) -d ./$(BIN) ./$(SRC)/$(PACKAGE)/*.java -jar:clean compile javadoc +jar:clean compile @echo @echo "## Creation of Mapping jar ..." @echo diff --git a/javadoc/allclasses-frame.html b/javadoc/allclasses-frame.html index 01c4d95..7ffe7ad 100644 --- a/javadoc/allclasses-frame.html +++ b/javadoc/allclasses-frame.html @@ -2,12 +2,12 @@ - + All Classes - + diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html index fa1233a..802c5cd 100644 --- a/javadoc/allclasses-noframe.html +++ b/javadoc/allclasses-noframe.html @@ -2,12 +2,12 @@ - + All Classes - + diff --git a/javadoc/and/Mapping/Algo.html b/javadoc/and/Mapping/Algo.html index 23f3314..54faa7a 100644 --- a/javadoc/and/Mapping/Algo.html +++ b/javadoc/and/Mapping/Algo.html @@ -2,12 +2,12 @@ - + Algo - + @@ -190,7 +190,7 @@ Abstract class defining the structure for mapping algorithms abstract  GNode -getOtherGNode() +getOtherGNode(java.util.ArrayList<GNode> _ag)
          Find a new node, which may not takes part into the computation process. @@ -340,10 +340,10 @@ public abstract

+

getOtherGNode

-public abstract GNode getOtherGNode()
+public abstract GNode getOtherGNode(java.util.ArrayList<GNode> _ag)
Find a new node, which may not takes part into the computation process. Typically such kind of node is used to create a new spawner or a new super-node, diff --git a/javadoc/and/Mapping/Architecture.html b/javadoc/and/Mapping/Architecture.html index e9d73dd..da17f05 100644 --- a/javadoc/and/Mapping/Architecture.html +++ b/javadoc/and/Mapping/Architecture.html @@ -2,12 +2,12 @@ - + Architecture - + diff --git a/javadoc/and/Mapping/Association.html b/javadoc/and/Mapping/Association.html index 0aa9651..f35c71f 100644 --- a/javadoc/and/Mapping/Association.html +++ b/javadoc/and/Mapping/Association.html @@ -2,12 +2,12 @@ - + Association - + diff --git a/javadoc/and/Mapping/Cluster.html b/javadoc/and/Mapping/Cluster.html index 07dde86..a7ae852 100644 --- a/javadoc/and/Mapping/Cluster.html +++ b/javadoc/and/Mapping/Cluster.html @@ -2,12 +2,12 @@ - + Cluster - + diff --git a/javadoc/and/Mapping/DefaultMapping.html b/javadoc/and/Mapping/DefaultMapping.html index f1cef0d..c04c87a 100644 --- a/javadoc/and/Mapping/DefaultMapping.html +++ b/javadoc/and/Mapping/DefaultMapping.html @@ -2,12 +2,12 @@ - + DefaultMapping - + @@ -166,7 +166,7 @@ Implementation of JaceP2P default mapping  GNode -getOtherGNode() +getOtherGNode(java.util.ArrayList<GNode> _ag)
          Find a new node, which may not takes part into the computation process. @@ -289,18 +289,18 @@ public GNode

-

+

getOtherGNode

-public GNode getOtherGNode()
+public GNode getOtherGNode(java.util.ArrayList<GNode> _ag)
-
Description copied from class: Algo
+
Description copied from class: Algo
Find a new node, which may not takes part into the computation process. Typically such kind of node is used to create a new spawner or a new super-node, in order to bring fault tolerance.

-
Specified by:
getOtherGNode in class Algo
+
Specified by:
getOtherGNode in class Algo
diff --git a/javadoc/and/Mapping/GNode.html b/javadoc/and/Mapping/GNode.html index 8010c01..3981fdb 100644 --- a/javadoc/and/Mapping/GNode.html +++ b/javadoc/and/Mapping/GNode.html @@ -2,12 +2,12 @@ - + GNode - + diff --git a/javadoc/and/Mapping/GTask.html b/javadoc/and/Mapping/GTask.html index 593fd16..4638d2f 100644 --- a/javadoc/and/Mapping/GTask.html +++ b/javadoc/and/Mapping/GTask.html @@ -2,12 +2,12 @@ - + GTask - + diff --git a/javadoc/and/Mapping/Graph.html b/javadoc/and/Mapping/Graph.html index 24048b7..339f15b 100644 --- a/javadoc/and/Mapping/Graph.html +++ b/javadoc/and/Mapping/Graph.html @@ -2,12 +2,12 @@ - + Graph - + diff --git a/javadoc/and/Mapping/Grid.html b/javadoc/and/Mapping/Grid.html index d306e62..d70d4b3 100644 --- a/javadoc/and/Mapping/Grid.html +++ b/javadoc/and/Mapping/Grid.html @@ -2,12 +2,12 @@ - + Grid - + diff --git a/javadoc/and/Mapping/LSM.html b/javadoc/and/Mapping/LSM.html index 3d06e28..08d2338 100644 --- a/javadoc/and/Mapping/LSM.html +++ b/javadoc/and/Mapping/LSM.html @@ -2,12 +2,12 @@ - + LSM - + @@ -173,7 +173,7 @@ Mapping algorithm based on the Edge-Cut principles  GNode -getOtherGNode() +getOtherGNode(java.util.ArrayList<GNode> _ag)
          Find a new node, which may not takes part into the computation process. @@ -309,18 +309,18 @@ public GNode

-

+

getOtherGNode

-public GNode getOtherGNode()
+public GNode getOtherGNode(java.util.ArrayList<GNode> _ag)
-
Description copied from class: Algo
+
Description copied from class: Algo
Find a new node, which may not takes part into the computation process. Typically such kind of node is used to create a new spawner or a new super-node, in order to bring fault tolerance.

-
Specified by:
getOtherGNode in class Algo
+
Specified by:
getOtherGNode in class Algo
diff --git a/javadoc/and/Mapping/Linpack.html b/javadoc/and/Mapping/Linpack.html index 46a668b..4a65f0f 100644 --- a/javadoc/and/Mapping/Linpack.html +++ b/javadoc/and/Mapping/Linpack.html @@ -2,12 +2,12 @@ - + Linpack - + diff --git a/javadoc/and/Mapping/Mapping.html b/javadoc/and/Mapping/Mapping.html index b907ccd..11ade80 100644 --- a/javadoc/and/Mapping/Mapping.html +++ b/javadoc/and/Mapping/Mapping.html @@ -2,12 +2,12 @@ - + Mapping - + diff --git a/javadoc/and/Mapping/QM.html b/javadoc/and/Mapping/QM.html index 4f35839..ebba3fb 100644 --- a/javadoc/and/Mapping/QM.html +++ b/javadoc/and/Mapping/QM.html @@ -2,12 +2,12 @@ - + QM - + @@ -166,7 +166,7 @@ Implementation of the AIAC Quick Quality Map (AIAC-QM) algorithm  GNode -getOtherGNode() +getOtherGNode(java.util.ArrayList<GNode> _ag)
          Find a new node, which may not takes part into the computation process. @@ -289,18 +289,18 @@ public GNode

-

+

getOtherGNode

-public GNode getOtherGNode()
+public GNode getOtherGNode(java.util.ArrayList<GNode> _ag)
-
Description copied from class: Algo
+
Description copied from class: Algo
Find a new node, which may not takes part into the computation process. Typically such kind of node is used to create a new spawner or a new super-node, in order to bring fault tolerance.

-
Specified by:
getOtherGNode in class Algo
+
Specified by:
getOtherGNode in class Algo
diff --git a/javadoc/and/Mapping/Simple.html b/javadoc/and/Mapping/Simple.html index 8d0a943..a1bacdf 100644 --- a/javadoc/and/Mapping/Simple.html +++ b/javadoc/and/Mapping/Simple.html @@ -2,12 +2,12 @@ - + Simple - + @@ -165,7 +165,7 @@ Implementation of Simple Mapping algorithm  GNode -getOtherGNode() +getOtherGNode(java.util.ArrayList<GNode> _ag)
          Find a new node, which may not takes part into the computation process. @@ -287,18 +287,18 @@ public GNode

-

+

getOtherGNode

-public GNode getOtherGNode()
+public GNode getOtherGNode(java.util.ArrayList<GNode> _ag)
-
Description copied from class: Algo
+
Description copied from class: Algo
Find a new node, which may not takes part into the computation process. Typically such kind of node is used to create a new spawner or a new super-node, in order to bring fault tolerance.

-
Specified by:
getOtherGNode in class Algo
+
Specified by:
getOtherGNode in class Algo
diff --git a/javadoc/and/Mapping/Utils.html b/javadoc/and/Mapping/Utils.html index 137a72f..e7020b1 100644 --- a/javadoc/and/Mapping/Utils.html +++ b/javadoc/and/Mapping/Utils.html @@ -2,12 +2,12 @@ - + Utils - + diff --git a/javadoc/and/Mapping/package-frame.html b/javadoc/and/Mapping/package-frame.html index ebd91f9..938536a 100644 --- a/javadoc/and/Mapping/package-frame.html +++ b/javadoc/and/Mapping/package-frame.html @@ -2,12 +2,12 @@ - + and.Mapping - + diff --git a/javadoc/and/Mapping/package-summary.html b/javadoc/and/Mapping/package-summary.html index 6c23974..7f69f11 100644 --- a/javadoc/and/Mapping/package-summary.html +++ b/javadoc/and/Mapping/package-summary.html @@ -2,12 +2,12 @@ - + and.Mapping - + diff --git a/javadoc/and/Mapping/package-tree.html b/javadoc/and/Mapping/package-tree.html index 4765a41..b600c39 100644 --- a/javadoc/and/Mapping/package-tree.html +++ b/javadoc/and/Mapping/package-tree.html @@ -2,12 +2,12 @@ - + and.Mapping Class Hierarchy - + diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html index 9525f95..3ca6f6e 100644 --- a/javadoc/constant-values.html +++ b/javadoc/constant-values.html @@ -2,12 +2,12 @@ - + Constant Field Values - + diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html index ac0fab8..f1ab2de 100644 --- a/javadoc/deprecated-list.html +++ b/javadoc/deprecated-list.html @@ -2,12 +2,12 @@ - + Deprecated List - + diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html index 83ee54b..99d4c6e 100644 --- a/javadoc/help-doc.html +++ b/javadoc/help-doc.html @@ -2,12 +2,12 @@ - + API Help - + diff --git a/javadoc/index-all.html b/javadoc/index-all.html index 6c5c5f1..0aa775d 100644 --- a/javadoc/index-all.html +++ b/javadoc/index-all.html @@ -2,12 +2,12 @@ - + Index - + @@ -275,19 +275,19 @@ Method in class and.Mapping.getNum() - Method in class and.Mapping.GTask
Return the task's number. -
getOtherGNode() - +
getOtherGNode(ArrayList<GNode>) - Method in class and.Mapping.Algo
Find a new node, which may not takes part into the computation process. -
getOtherGNode() - +
getOtherGNode(ArrayList<GNode>) - Method in class and.Mapping.DefaultMapping
  -
getOtherGNode() - +
getOtherGNode(ArrayList<GNode>) - Method in class and.Mapping.LSM
  -
getOtherGNode() - +
getOtherGNode(ArrayList<GNode>) - Method in class and.Mapping.QM
  -
getOtherGNode() - +
getOtherGNode(ArrayList<GNode>) - Method in class and.Mapping.Simple
 
getPower() - diff --git a/javadoc/index.html b/javadoc/index.html index 963fa62..fe33d61 100644 --- a/javadoc/index.html +++ b/javadoc/index.html @@ -2,7 +2,7 @@ - + Generated Documentation (Untitled) diff --git a/javadoc/overview-tree.html b/javadoc/overview-tree.html index c24f169..c6f9bf8 100644 --- a/javadoc/overview-tree.html +++ b/javadoc/overview-tree.html @@ -2,12 +2,12 @@ - + Class Hierarchy - + diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html index 9a668cf..c68feae 100644 --- a/javadoc/serialized-form.html +++ b/javadoc/serialized-form.html @@ -2,12 +2,12 @@ - + Serialized Form - + diff --git a/src/and/Mapping/Algo.java b/src/and/Mapping/Algo.java index 79a210f..5761b67 100644 --- a/src/and/Mapping/Algo.java +++ b/src/and/Mapping/Algo.java @@ -63,7 +63,7 @@ public abstract class Algo implements Serializable * in order to bring fault tolerance. * @return Another node which will not compute */ - public abstract GNode getOtherGNode() ; + public abstract GNode getOtherGNode( ArrayList _ag ) ; /** diff --git a/src/and/Mapping/Association.java b/src/and/Mapping/Association.java index 543c849..7d24134 100644 --- a/src/and/Mapping/Association.java +++ b/src/and/Mapping/Association.java @@ -90,6 +90,26 @@ public class Association implements Serializable return t ; } + + /** + * Replace the GNode of the association. + * @param _g The replacing GNode + */ + public void setGNode( GNode _g ) + { + g = _g ; + } + + + /** + * Replace the GTask of the association. + * @param _t The replacing GTask + */ + public void setGtask( GTask _t ) + { + t = _t ; + } + } /** La programmation est un art, respectons ceux qui la pratiquent !! **/ diff --git a/src/and/Mapping/DefaultMapping.java b/src/and/Mapping/DefaultMapping.java index 5cdb0a2..4123be8 100644 --- a/src/and/Mapping/DefaultMapping.java +++ b/src/and/Mapping/DefaultMapping.java @@ -70,7 +70,25 @@ public class DefaultMapping extends Algo if( _dead != null ) { - return _ag.get( 0 ) ; + int pos = 0 ; + pos = mp.getIdOfAssociation( _dead ) ; + + if( pos == -1 ) + { + System.err.println( "GNode "+_dead+" does not exist in the mapping!" ) ; + return null ; + } + + if( _ag.size() > 0 ) + { + ret = _ag.get( 0 ) ; + + mp.getMapping().get( pos ).setGNode( ret ) ; + } else { + System.err.println( "Not enought available nodes in gnodes to replace one !" ) ; + return null ; + } + } return ret ; @@ -78,9 +96,14 @@ public class DefaultMapping extends Algo @Override - public GNode getOtherGNode() { - // TODO Auto-generated method stub - return null; + public GNode getOtherGNode( ArrayList _ag ) + { + if( _ag.size() > 0 ) + { + return _ag.get( 1 ) ; + } + + return null ; } } diff --git a/src/and/Mapping/LSM.java b/src/and/Mapping/LSM.java index 6dc6cd7..44b5676 100644 --- a/src/and/Mapping/LSM.java +++ b/src/and/Mapping/LSM.java @@ -410,7 +410,7 @@ public class LSM extends Algo @Override - public GNode getOtherGNode() { + public GNode getOtherGNode( ArrayList _ag ) { // TODO Auto-generated method stub return null; } diff --git a/src/and/Mapping/Mapping.java b/src/and/Mapping/Mapping.java index c6c4060..0499f1a 100644 --- a/src/and/Mapping/Mapping.java +++ b/src/and/Mapping/Mapping.java @@ -225,6 +225,29 @@ public class Mapping implements Serializable } + /** + * Return the position of the association containing + * the GNode _g. + * @param _g The GNode to be search + * @return The position of the association + */ + public int getIdOfAssociation( GNode _g ) + { + int ret = -1 ; + + for( int i = 0 ; i < mapping.size() ; i++ ) + { + if( mapping.get( i ).getGNode().getId() == _g.getId() ) + { + i = ret ; + break ; + } + } + + return ret ; + } + + /** * Return the amount of external tasks dependencies, in cluster point of view. * @return The amount of external dependencies diff --git a/src/and/Mapping/QM.java b/src/and/Mapping/QM.java index f437ec7..04f6a43 100644 --- a/src/and/Mapping/QM.java +++ b/src/and/Mapping/QM.java @@ -514,7 +514,7 @@ public class QM extends Algo @Override - public GNode getOtherGNode() { + public GNode getOtherGNode( ArrayList _ag ) { // TODO Auto-generated method stub return null; } diff --git a/src/and/Mapping/Simple.java b/src/and/Mapping/Simple.java index e320082..abf443d 100644 --- a/src/and/Mapping/Simple.java +++ b/src/and/Mapping/Simple.java @@ -124,7 +124,7 @@ public class Simple extends Algo @Override - public GNode getOtherGNode() { + public GNode getOtherGNode( ArrayList _ag ) { // TODO Auto-generated method stub return null; } -- 2.20.1