RFC: dbwrap_ctdb and empty vs deleted records
Ralph Böhme
slow at samba.org
Wed Jul 20 13:14:02 UTC 2016
On Mon, Jul 04, 2016 at 01:43:00PM +0200, Ralph Boehme wrote:
> Hi!
>
> Attached is a RFC patch for bug
> <https://bugzilla.samba.org/show_bug.cgi?id=12005>
>
> From the bugreport:
> ---8<---
> On a Samba 4.4.4 ctdb cluster the following messages where
> (repeatedly) found in the log:
>
> [2016/06/30 08:45:02.645180, 1]
> ../librpc/ndr/ndr.c:578(ndr_pull_error)
> ndr_pull_error(11): Pull bytes 8 (../librpc/ndr/ndr_basic.c:236)
> [2016/06/30 08:45:02.645213, 1]
> ../source3/locking/share_mode_lock.c:312(parse_share_modes)
> ndr_pull_share_mode_lock failed: Buffer Size Error
>
> Looking closer this is coming from ctdb tombstone records in the node
> local ltdb.
>
> ...
>
> I see two ways to address this:
> o add yet another check for tombstone records to a dbwrap caller, or
> o fix dbwrap
>
> In dbwrap we already check for tombstone records in at least two
> places:
> o when fetching records from remote ctdb nodes via ctdbd_parse()
> o in db_ctdb_traverse()
>
> Just db_ctdb_ltdb_parser() lacks a check for tombstone records.
> ---8<---
>
> This had been fixed in 1cae59ce112ccb51b45357a52b902f80fce1eef1 for
> bug https://bugzilla.samba.org/show_bug.cgi?id=10008, but had to be
> reverted in because of a deadlock (commit message has the details).
>
> I *think* my patch might be a proper fix without the risk of a
> deadlock, because it *won't* call out to ctdb but return ENOENT (im
> terms of NTSTATUS).
>
> I'd highly appreciate some feedback. In case we don't want to take the
> risk of this change, I'll prepare a patch for parse_share_modes() and
> callers.
*ping*
Michael, I'm tempted to bribe you with another bag of that nice
espresso.
Meanwhile, here's a patch that paves over the underlying issue in the
caller.
Please review&push if ok.
Cheerio!
-slow
More information about the samba-technical
mailing list