Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=48…
Commit: 4876dd567929506c2828b523607aaf48b567acfe
Parent: c553446e6586bb4ad6d4cc8396bed6d83f4f0db2
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Fri Sep 10 15:12:26 2010 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Fri Sep 24 18:17:22 2010 -0400
config: Add independent subtree restart tolerances
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
config/tools/xml/cluster.rng.in | 150 +++++++++++++++++++++++++++++++++++++++
1 files changed, 150 insertions(+), 0 deletions(-)
diff --git a/config/tools/xml/cluster.rng.in b/config/tools/xml/cluster.rng.in
index fad30ad..15c6172 100644
--- a/config/tools/xml/cluster.rng.in
+++ b/config/tools/xml/cluster.rng.in
@@ -999,6 +999,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1041,6 +1047,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1093,6 +1105,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1132,6 +1150,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1166,6 +1190,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1211,6 +1241,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1261,6 +1297,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1297,6 +1339,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1342,6 +1390,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1387,6 +1441,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1432,6 +1492,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1480,6 +1546,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1525,6 +1597,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1573,6 +1651,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1612,6 +1696,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1652,6 +1742,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1736,6 +1832,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1793,6 +1895,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1863,6 +1971,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1911,6 +2025,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1951,6 +2071,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -1982,6 +2108,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -2018,6 +2150,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -2074,6 +2212,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
@@ -2115,6 +2259,12 @@ To validate your cluster.conf against this schema, run:
<attribute name="__failure_expire_time" rha:description="Amount of time before a failure is forgotten."/>
</optional>
<optional>
+ <attribute name="__max_restarts" rha:description="Maximum number restarts for an independent subtree before giving up."/>
+ </optional>
+ <optional>
+ <attribute name="__restart_expire_time" rha:description="Amount of time before a failure is forgotten for an independent subtree."/>
+ </optional>
+ <optional>
<ref name="CHILDREN"/>
</optional>
</element>
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=70…
Commit: 7097cb971d5aa2d7bee6f2ac5bfd7e2db53c8f2d
Parent: d76d0935b4f130a93bf2b50f95b4a54a9264b4ab
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Sep 8 16:20:19 2010 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Fri Sep 24 18:17:22 2010 -0400
rgmanager: Do not fail service if non-critical resources fail to stop
During non-critical component recovery (e.g. stop and leave dead),
rgmanager stops parts up to the __independent_subtree="2" flag.
If any stop operations fail during this phase, rgmanager should
ignore them since the resources are non-critical.
During a normal relocation/restart/enable/disable/etc, these
operations are critical and a fail to stop will result in the
service being placed in to the failed state.
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/daemons/restree.c | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/rgmanager/src/daemons/restree.c b/rgmanager/src/daemons/restree.c
index ab0e20d..8719791 100644
--- a/rgmanager/src/daemons/restree.c
+++ b/rgmanager/src/daemons/restree.c
@@ -1510,6 +1510,21 @@ _res_op_internal(resource_node_t __attribute__ ((unused)) **tree,
node->rn_flags &= ~RF_NEEDSTOP;
rv |= res_exec(node, op, NULL, 0);
+ if (node->rn_flags & RF_QUIESCE) {
+ /* Non-critical resources = do not fail
+ * service if the resource fails to stop
+ */
+ if (rv & SFL_FAILURE) {
+ logt_print(LOG_WARNING, "Failure to stop %s:%s"
+ " during non-critical recovery "
+ "operation\n",
+ node->rn_resource->r_rule->rr_type,
+ primary_attr_value(
+ node->rn_resource));
+ rv &= ~SFL_FAILURE;
+ }
+ }
+
if (rv == 0 && (node->rn_state == RES_STARTED ||
node->rn_state == RES_FAILED)) {
assert(node->rn_resource->r_incarnations >= 0);