Return-Path: Received: from pch.mit.edu (PCH.MIT.EDU [18.7.21.90]) by krbdev.mit.edu (Postfix) with ESMTP id 3E9F6580D2; Thu, 26 Mar 2015 08:24:48 -0400 (EDT) Received: from pch.mit.edu (pch.mit.edu [127.0.0.1]) by pch.mit.edu (8.13.6/8.12.8) with ESMTP id t2QCOmRP013200; Thu, 26 Mar 2015 08:24:48 -0400 Received: from mailhub-dmz-2.mit.edu (mailhub-dmz-2.mit.edu [18.7.62.37]) by pch.mit.edu (8.13.6/8.12.8) with ESMTP id t2QAhUOF031711 for ; Thu, 26 Mar 2015 06:43:30 -0400 Received: from dmz-mailsec-scanner-7.mit.edu (dmz-mailsec-scanner-7.mit.edu [18.7.68.36]) by mailhub-dmz-2.mit.edu (8.13.8/8.9.2) with ESMTP id t2QAhSSF026293 for ; Thu, 26 Mar 2015 06:43:30 -0400 X-Auditid: 12074424-f79f56d000000da5-20-5513e2d1ae3a Authentication-Results: symauth.service.identifier Received: from mta4.srv.hcvlny.cv.net (mta4.srv.hcvlny.cv.net [167.206.4.199]) by dmz-mailsec-scanner-7.mit.edu (Symantec Messaging Gateway) with SMTP id 1A.34.03493.1D2E3155; Thu, 26 Mar 2015 06:43:29 -0400 (EDT) Received: from starbug.foonon.com (ool-44c06573.dyn.optonline.net [68.192.101.115]) by mta4.srv.hcvlny.cv.net (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPA id <0NLT006NMF4GOS20@mta4.srv.hcvlny.cv.net> for krb5-bugs@mit.edu; Thu, 26 Mar 2015 06:43:29 -0400 (EDT) Date: Thu, 26 Mar 2015 06:43:28 -0400 From: John Devitofranceschi Subject: patch for kpropd -t (runonce) full propagation To: krb5-bugs@mit.edu Message-ID: <32DF1452-8A56-4871-A36C-3877B8BEF2F1@optonline.net> MIME-Version: 1.0 X-Mailer: Apple Mail (2.2070.6) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7BIT X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrAIsWRWlGSWpSXmKPExsWy/BzLcd2Lj4RDDdZs17FoeHic3YHRo+nM UeYAxigum5TUnMyy1CJ9uwSujE9vfjAV9IhVnDh1n62B8ZtAFyMnh4SAicTLs7vZQGxGASOJ 3edesULExSQu3FsPFOfiEBK4zigxa8c5sISQwGomialb3UFsFgFViaMTullAbDYBA4nOtVvZ QWxhAXOJOd/fMoLYIgKiEi//HgOr4RVwkHj7B2IBr4CgxI/J94DiHEDL5CV6NqWDhJkFtCTW 7zzOBBJmBgofPC87gZFvFpKGWUiqZiFULWBkXsUom5JbpZubmJlTnJqsW5ycmJeXWqRrrpeb WaKXmlK6iREYXELsLio7GJsPKR1iFOBgVOLh/dEvHCrEmlhWXJl7iFGSg0lJlDf0PlCILyk/ pTIjsTgjvqg0J7X4EKMEB7OSCC/jOaAcb0piZVVqUT5MSpqDRUmcd9MPvhAhgfTEktTs1NSC 1CKYLBMH+yFGGQ4OJQnezodA3YJFqempFWmZOSXIajhBBBfIGh6gNdUghbzFBYm5xZnpEEWn GBWlxHlDQBICIImM0jy4AbCEcIlRVkqYl5GBgUGIB+gCoMdR5V8xigM9Lcw7C2QKT2ZeCdz0 V0CLmYAWn8vnA1lckoiQkmpg3PspQiddwKBhVkep+ryFOseq2ptXTKw53apQbWzwyMcr/8DP Uxdn7NDb0tvzpJm9e634euN0zZV+Zzj2rN50lPX6qo8TZx3d2Mzvf0d7/84Ts0K2WllfkP4w t85X8NVVD5kJpWmtxWo37v106Ezxnd4lK+5/K0So4uQZD4+nHIeUfr/eWhj3SomlOCPRUIu5 qDgRACO6J0sDAwAA X-Mailman-Approved-At: Thu, 26 Mar 2015 08:24:46 -0400 X-Beenthere: krb5-bugs-incoming@mailman.mit.edu X-Mailman-Version: 2.1.6 Precedence: list Sender: krb5-bugs-incoming-bounces@PCH.mit.edu Errors-To: krb5-bugs-incoming-bounces@PCH.mit.edu X-RT-Original-Encoding: us-ascii Content-Length: 2746 I've been looking at the code for kpropd and I came up with this patch. It allows the fullprop child to live, if necessary AND it picks up all the incremental changes to boot! --- kpropd.c- 2015-02-11 22:16:43.000000000 -0500 +++ kpropd.c 2015-03-25 21:10:17.147687869 -0400 @@ -92,6 +92,7 @@ char *def_realm = NULL; int runonce = 0; +int waitfor_do_standalone = 0; /* * This struct simulates the use of _kadm5_server_handle_t @@ -321,8 +322,15 @@ default: retval = do_iprop(); /* do_iprop() can return due to failures and runonce. */ - kill(fullprop_child, SIGHUP); - wait(NULL); + if (runonce == 1 && waitfor_do_standalone == 1) { + int status; + (void) waitpid(fullprop_child, &status, 0); + waitfor_do_standalone++; + retval = main(argc, argv); /* pick up incremental changes, too */ + } else { + kill(fullprop_child, SIGHUP); + wait(NULL); + } if (retval) com_err(progname, retval, _("do_iprop failed.\n")); else @@ -841,6 +849,7 @@ fprintf(stderr, _("Full resync request granted\n")); syslog(LOG_INFO, _("Full resync request granted.")); backoff_cnt = 0; + waitfor_do_standalone++; break; case UPDATE_BUSY: Here it is in action: Needing fullprop: $ sudo ./kpropd -d -t ready Incremental propagation enabled waiting for a kprop connection Initializing kadm5 as client kiprop/topper21.foonon.com@FOONON.COM kadm5 initialization succeeded Calling iprop_get_updates_1 (sno=0 sec=1427332239 usec=919246) Full resync needed Full resync request granted Connection from endless.foonon.com krb5_recvauth(5, kprop5_01, host/topper21.foonon.com@FOONON.COM, ...) authenticated client: host/endless.foonon.com@FOONON.COM (etype == AES-256 CTS mode with 96-bit SHA-1 HMAC) Full propagation transfer started. Full propagation transfer finished. calling kdb5_util to load database Load PID is 26490 Database load process for full propagation completed. ready Incremental propagation enabled waiting for a kprop connection Initializing kadm5 as client kiprop/topper21.foonon.com@FOONON.COM kadm5 initialization succeeded Calling iprop_get_updates_1 (sno=1 sec=1427036750 usec=158517) Got incremental updates (sno=16 sec=1427279653 usec=832057) Incremental updates: 15 updates / 32778 us Everything up to date: $ sudo ./kpropd -d -t ready Incremental propagation enabled waiting for a kprop connection Initializing kadm5 as client kiprop/topper21.foonon.com@FOONON.COM kadm5 initialization succeeded Calling iprop_get_updates_1 (sno=16 sec=1427279653 usec=832057) KDC is synchronized with master.