On 9/27/19 10:07 AM, Fabian Grünbichler wrote:
>> @@ -651,9 +662,17 @@ sub next_state_started {
>>                  $haenv->log('info', "$cmd service '$sid' to node 
>> '$target'");
>>                  &$change_service_state($self, $sid, $cmd, node => 
>> $sd->{node}, target => $target);
>>              }
>> +        } elsif ($cmd eq 'stop') {
>> +            my $timeout = shift @{$sd->{cmd}};
>> +            $haenv->log('info', "$cmd service with timeout '$timeout'");
>> +            &$change_service_state($self, $sid, 'request_stop', timeout => 
>> $timeout);
>> +            $haenv->update_service_config(0, 0, $sid, {'state' => 
>> 'stopped'});
> this uses the methods introduced in patch #2/3, but is missing the 
> locking that the other call site (and the other read/modify/write blocks 
> for that config file) have.
> 
> either move the locking to PVE::HA::Config::update_resources_config in 
> #2, or add locking here, or re-evaluate whether there is an approach 
> that can skip modifying the config file ;). there are other calls to 
> lock_ha_domain in the CRM command handling flow, so it's probably not 
> that bad to have another few instances here..
> 

That's the "missing locking" issue I mentioned in the cover-letter reply:

> especially at 02/13 (the service-config) changes, which seems to have
> some issues (missing locking) but that should be solvable.
 
If we add it here I'd mark the refactored method as "_nolock"
But IMO it makes never sense to update without lock so it probably
should be always locked in the update_service_config method..


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to