[16.0] auto_backup: TypeError: makedirs() got an unexpected keyword argument 'exist_ok'

Open Beginner friendly
#3,139 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
1/5
Estimated time
Under an hour
Newbie friendliness
72/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
python
Domain
database

Research direction

The failing call is remote.makedirs(rec.folder, exist_ok=True) in auto_backup/models/db_backup.py, inside action_backup around line 189; the traceback points there. The remote object is a pysftp Connection, whose makedirs() takes no exist_ok argument, so compare the call against the pysftp docs linked in the issue. Done means the SFTP backup path runs without the TypeError and the transfer completes, which you can check by running a backup to an SFTP target or by adding a test for that branch.

Written by the indexing model from the issue text.

Description

bug

Module

auto_backup 16.0

Describe the bug

This bug is the same than pull request #2902 in 12.0 branch but recent changes 3d39f2b8b47 has reintroduced it in 16.0 branch.

Trying to make a backup in a remote sftp server, throws this error:

Odoo Server 16.0:odoo:ERROR:odoo.addons.auto_backup.models.db_backup:Database backup failed: sftp://[email protected]:22
Traceback (most recent call last):
File "/opt/odoo/addons-oca/auto_backup/models/db_backup.py", line 215, in backup_log
yield
File "/opt/odoo/addons-oca/auto_backup/models/db_backup.py", line 189, in action_backup
remote.makedirs(rec.folder, exist_ok=True)
TypeError: Connection.makedirs() got an unexpected keyword argument 'exist_ok'

and it does not complete the backup transfer.

To Reproduce

Affected versions: Only 16.0,

Steps to reproduce the behavior:

  1. Setup a backup in a remote server.
  2. Make one backup, it fails.

Additional context
Pysftp method makedirs() it does not have any argument, it's different than the os.makedirs method.
https://pysftp.readthedocs.io/en/release_0.2.9/cookbook.html#pysftp-connection-makedirs
Removing "exist_ok" on line 189 solves the error.
https://github.com/OCA/server-tools/blob/6e7e03d85cc58ccadda083c3ea14d04b24092ca2/auto_backup/models/db_backup.py#L189

Regards.

Dominant language
Python
Stars
960
Forks
1.7k
Avg merge
5d 23h
Merged PRs (30d)
15

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from OCA/server-tools

All issues in OCA/server-tools

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.