Author: pjd
Date: Wed Apr 28 22:41:06 2010
New Revision: 207348
URL: http://svn.freebsd.org/changeset/base/207348

Log:
  Restart worker thread only if the problem was temporary.
  In case of persistent problem we don't want to loop forever.
  
  MFC after:    3 days

Modified:
  head/sbin/hastd/hastd.c

Modified: head/sbin/hastd/hastd.c
==============================================================================
--- head/sbin/hastd/hastd.c     Wed Apr 28 22:39:47 2010        (r207347)
+++ head/sbin/hastd/hastd.c     Wed Apr 28 22:41:06 2010        (r207348)
@@ -140,9 +140,15 @@ child_exit(void)
                proto_close(res->hr_ctrl);
                res->hr_workerpid = 0;
                if (res->hr_role == HAST_ROLE_PRIMARY) {
-                       sleep(1);
-                       pjdlog_info("Restarting worker process.");
-                       hastd_primary(res);
+                       if (WEXITSTATUS(status) == EX_TEMPFAIL) {
+                               sleep(1);
+                               pjdlog_info("Restarting worker process.");
+                               hastd_primary(res);
+                       } else {
+                               res->hr_role = HAST_ROLE_INIT;
+                               pjdlog_info("Changing resource role back to 
%s.",
+                                   role2str(res->hr_role));
+                       }
                }
                pjdlog_prefix_set("%s", "");
        }
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to