#136 Remove mutual exclusion from set_value and setting_unset
Closed: Invalid None Opened 9 years ago by zpericic.

In some condition calling isc_task_beginexclusive in set_value could lead to:

task.c:1678: REQUIRE(task->state == task_state_running) failed, back trace

We should ensure mutual exclusion (running in single thread) by caller ie. new_ldap_instance, ldap_parse_configentry, ldap_parse_master_zoneentry.

Reference to task is no longer required in settings.c.


Hello,

please let me clarify the purpose of task parameter in setting* functions:

It is kind of optimization. It prevents unnecessary isc_task_beginexclusive calls when new and old values are the same.

That would not be possible without adding explicit checks before every call to setting_set function.

It is possible that there are some race conditions somewhere, in that case please provide stack traces and logs so we can fix them.

I don't think we should spread synchronization across the whole plugin.

I'm going to close this ticket. Feel free to reopen it if necessary. Thank you for understanding.

No need to clone deferred tickets to downstream.

Metadata Update from @mkosek:
- Issue assigned to pspacek
- Issue set to the milestone: The Deferred

7 years ago

Login to comment on this ticket.

Metadata