Eventscripts: fix regression in 60.nfs export checking.
authorMartin Schwenke <martin@meltin.net>
Wed, 13 Apr 2011 02:37:42 +0000 (12:37 +1000)
committerMartin Schwenke <martin@meltin.net>
Thu, 11 Aug 2011 05:01:39 +0000 (15:01 +1000)
Commit 35a60a63a9b5c7d98dde514ae552239506b691c9 introduced a
regression, reported by "Jonathan Buzzard" <J.Buzzard@dundee.ac.uk>,
as follows:

  Basically the use of sed in the following code snippet does not work
  for long exports where exportfs wraps the host or network onto the
  next line.

         exportfs | grep -v '^#' | grep '^/' |
         sed -e 's/[[:space:]]*[^[:space:]]*$//' |
         ctdb_check_directories

  The result is that the you get lots of blank lines being sent to
  ctdb_check_directories which causes the host to be marked as
  unhealthy and then thrashing sets in of the managed IP's making the
  whole cluster unusable.

This tightens up the sed expression so that it is less likely to
produce a spurious empty line.  It also removes an unnecessary "grep -v".

Signed-off-by: Martin Schwenke <martin@meltin.net>
config/events.d/60.nfs

index e77804836ba2c260197b8cd3bbc797f645a945ce..23f447f9013325f2e61ce3e5f4875815af3c1d46 100755 (executable)
@@ -61,9 +61,9 @@ case "$1" in
       monitor)
        # and that its directories are available
        [ "$CTDB_NFS_SKIP_SHARE_CHECK" = "yes" ] || {
-           exportfs | grep -v '^#' | grep '^/' |
-           sed -e 's/[[:space:]]\+[^[:space:]]*$//' |
-           ctdb_check_directories
+           exportfs -v | grep '^/' | 
+           sed -r -e 's@[[:space:]]+[^[:space:]()]+\([^[:space:]()]+\)$@@' | 
+           ctdb_check_directories 
        } || exit $?
 
        update_tickles 2049