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