Bug 250906

Summary: net/samba412: "samba-tool domain backup offline" hangs
Product: Ports & Packages Reporter: ml
Component: Individual Port(s)Assignee: Timur I. Bakeyev <timur>
Status: New ---    
Severity: Affects Only Me Flags: bugzilla: maintainer-feedback? (timur)
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   

Description ml 2020-11-06 16:36:51 UTC
#samba-tool domain backup offline --targetdir .
running backup on dirs: /var/db/samba4/private /var/db/samba4 /usr/local/etc
Starting transaction on /var/db/samba4/private/secrets

What is really hanged is a subprocess that samba-tool starts:
/usr/local/bin/tdbbackup -s .copy.tdb /var/db/samba4/private/secrets.ldb 

This is a  long standing issue since Samba 4.10 (which introduced this command).
Now I tried upgrading to 4.12, but nothing changed.

A discussion on Samba's mailing list suggested this might be caused by an older version of TDB and that that library should be bundled.

Building (in Poudriere) with SAMBA4_BUNDLED_TDB=yes, however will produce the following:
# samba-tool domain backup offline --targetdir .
running backup on dirs: /var/db/samba4/private /var/db/samba4 /usr/local/etc
Starting transaction on /var/db/samba4/private/secrets
ERROR(<class 'FileNotFoundError'>): uncaught exception - [Errno 2] No such file or directory: '/root/bin/tdbbackup': '/root/bin/tdbbackup'
  File "/usr/local/lib/python3.7/site-packages/samba/netcmd/__init__.py", line 186, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/samba/netcmd/domain_backup.py", line 1061, in run
    self.backup_secrets(paths.private_dir, lp, logger)
  File "/usr/local/lib/python3.7/site-packages/samba/netcmd/domain_backup.py", line 954, in backup_secrets
    self.offline_tdb_copy(secrets_path + '.ldb')
  File "/usr/local/lib/python3.7/site-packages/samba/netcmd/domain_backup.py", line 928, in offline_tdb_copy
    tdb_copy(path, backup_path, readonly=True)
  File "/usr/local/lib/python3.7/site-packages/samba/tdb_util.py", line 40, in tdb_copy
    status = subprocess.check_call(tdbbackup_cmd, close_fds=True, shell=False)
  File "/usr/local/lib/python3.7/subprocess.py", line 358, in check_call
    retcode = call(*popenargs, **kwargs)
  File "/usr/local/lib/python3.7/subprocess.py", line 339, in call
    with Popen(*popenargs, **kwargs) as p:
  File "/usr/local/lib/python3.7/subprocess.py", line 800, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.7/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
A transaction is still active in ldb context [0x800a3cae0] on /var/db/samba4/private/secrets.ldb