{"push_id":783879140,"size":2,"distinct_size":2,"ref":"refs/heads/feature/apply-lock","head":"2194d8f4c33ad73ddff77a0f5d2adc15e0492180","before":"f97ad16e33a3c59147759897192f62c55335c142","commits":[{"sha":"0d726de469e3a01d29a07ed7560db5d323137333","author":{"email":"a3b1ac66d44425905084924ee6cef90b31d2e761@suse.com","name":"Adam Spiers"},"message":"add Lock::SharedNonBlocking class\n\nThis class implements a shared (i.e. non-exclusive) lock, by default on\na remote node.  It will be used by the next commit to allow one or more\nconcurrent proposal applications to temporarily pause any intervallic\nruns triggered by the chef-client daemon, to prevent them from\ninterfering with the orchestration of the proposals being applied:\n\n  https://bugzilla.suse.com/show_bug.cgi?id=857375\n\nIt has the same semantics as a shared read/write lock, except that\ninstead of readers reading, we have threads applying proposals, and\ninstead of a single writer writing, we have the chef-client daemon\ntriggering a chef-client run.  In other words, the daemon can only\ntrigger a run when there are no proposals being applied.","distinct":true,"url":"https://api.github.com/repos/aspiers/crowbar-core/commits/0d726de469e3a01d29a07ed7560db5d323137333"},{"sha":"2194d8f4c33ad73ddff77a0f5d2adc15e0492180","author":{"email":"a3b1ac66d44425905084924ee6cef90b31d2e761@suse.com","name":"Adam Spiers"},"message":"pause chef-client daemon while applying proposals (bsc#936302)\n\nImprove the technique for eliminating a race window where intervallic\nruns of a chef-client daemon interfered with the orchestration of\napplying a proposal:\n\n  https://bugzilla.suse.com/show_bug.cgi?id=857375\n\nPreviously this was done by stopping the chef-client daemon before\napplying the proposal, and restarting it after.  However, when\nrestarting it, this triggered an immediate chef-client run, which\nwhen applying multiple proposals in sequence caused large slowdowns:\n\n  https://bugzilla.suse.com/show_bug.cgi?id=936302\n\nand also excerbated the problem of chef-client runs on cluster nodes\ndrifting apart from synchronisation:\n\n  https://bugzilla.suse.com/show_bug.cgi?id=935462\n\nThe new technique temporarily pauses the chef-client daemon's\nintervallic runs whilst the proposal is being applied, by touching\n/var/chef/cache/pause-file.lock beforehand and removing it after.","distinct":true,"url":"https://api.github.com/repos/aspiers/crowbar-core/commits/2194d8f4c33ad73ddff77a0f5d2adc15e0492180"}]}