Back to bug 1399600

Who When What Removed Added
wibrown 2016-12-12 22:40:08 UTC CC wibrown
Noriko Hosoi 2016-12-16 17:47:26 UTC CC mreynolds
Assignee nhosoi mreynolds
Status NEW ASSIGNED
Status ASSIGNED POST
CC nhosoi
Flags needinfo?(mreynolds)
Tom Lavigne 2017-01-06 18:56:14 UTC Flags needinfo?(mreynolds)
CC tlavigne
Noriko Hosoi 2017-01-10 00:24:12 UTC Status POST MODIFIED
Fixed In Version 389-ds-base-1.2.11.15-86.el6
errata-xmlrpc 2017-01-10 00:28:50 UTC Status MODIFIED ON_QA
Simon Pichugin 2017-01-10 12:39:29 UTC Status ON_QA VERIFIED
CC spichugi
Noriko Hosoi 2017-01-10 20:18:22 UTC Doc Text Bug:
There were 2 VLV index issues.
1) When a VLV index is removed, it did not call dblayer_erase_index_file_nolock, which removes the physical index file as well as a back pointer set to the dblayer handle. The back pointer is scanned at the backend close time where the garbage address is used to close the already removed vlv index.
2) VLV plugin callbacks are registered in vlv_init. The function could be called multiple times without unregster the VLV plugin callbacks, e.g., from bulk import, which reopens the backend instance. If create an instance and a vlv index, then initialize the database with bulk import, 2 VLV index callbacks are registered. The first set points the old instance address, which is already freed.

Fix:
1) When a VLV index is removed, it calls dblayer_erase_index_file_nolock to clean up the physical index file and a back pointer in the dblayer handle.
2) Before registering VLV plugin callbacks, calling unregister callbacks to make sure cleaning up the existing callbacks.

Result:
No more VLV related crashes observed.
Doc Type If docs needed, set a value Bug Fix
Marc Muehlfeld 2017-01-11 17:20:29 UTC Docs Contact mmuehlfe
Marc Muehlfeld 2017-01-19 07:46:19 UTC Doc Text Bug:
There were 2 VLV index issues.
1) When a VLV index is removed, it did not call dblayer_erase_index_file_nolock, which removes the physical index file as well as a back pointer set to the dblayer handle. The back pointer is scanned at the backend close time where the garbage address is used to close the already removed vlv index.
2) VLV plugin callbacks are registered in vlv_init. The function could be called multiple times without unregster the VLV plugin callbacks, e.g., from bulk import, which reopens the backend instance. If create an instance and a vlv index, then initialize the database with bulk import, 2 VLV index callbacks are registered. The first set points the old instance address, which is already freed.

Fix:
1) When a VLV index is removed, it calls dblayer_erase_index_file_nolock to clean up the physical index file and a back pointer in the dblayer handle.
2) Before registering VLV plugin callbacks, calling unregister callbacks to make sure cleaning up the existing callbacks.

Result:
No more VLV related crashes observed.
Virtual list view-related problems have been fixed

Previously, when removing a virtual list view (VLV) index, the "dblayer_erase_index_file_nolock()" function was not called. Thus, the physical index file and the back pointer set to the *dblayer* handle were not removed. Consequently, Directory Server terminated unexpectedly. This fix updates the code and the "dblayer_erase_index_file_nolock()" function is now called when removing a VLV index.

In addition, the "vlv_init()" function previously could be called multiple times without unregistering VLV plug-in callbacks. As a consequence, Directory Server sometimes terminated unexpectedly. With this update, callbacks are now unregistered.

As a result, Directory Server no longer terminates unexpectedly in the described situations.
Flags needinfo?(mreynolds)
errata-xmlrpc 2017-03-21 00:56:33 UTC Flags needinfo?(mreynolds)
Status VERIFIED RELEASE_PENDING
errata-xmlrpc 2017-03-21 10:24:02 UTC Status RELEASE_PENDING CLOSED
Resolution --- ERRATA
Last Closed 2017-03-21 06:24:02 UTC

Back to bug 1399600