joeyates / imap-backup

Backup and Migrate IMAP Email Accounts
MIT License
1.37k stars 75 forks source link

undefined method `size' for nil:NilClass (NoMethodError) #112

Closed mtruem closed 2 years ago

mtruem commented 2 years ago

Hi!

While testing your amazing tool it occasionally crashes while syncing my Gmail account with the following stack trace. Hope this is helpful.

Traceback (most recent call last):
        28: from /usr/local/bin/imap-backup:23:in `<main>'
        27: from /usr/local/bin/imap-backup:23:in `load'
        26: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/bin/imap-backup:9:in `<top (required)>'
        25: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/logger.rb:29:in `sanitize_stderr'
        24: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/bin/imap-backup:10:in `block in <top (required)>'
        23: from /var/lib/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
        22: from /var/lib/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
        21: from /var/lib/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
        20: from /var/lib/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
        19: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/cli.rb:45:in `backup'
        18: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/cli/backup.rb:15:in `run'
        17: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/cli/helpers.rb:26:in `each_connection'
        16: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/cli/accounts.rb:16:in `each'
        15: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/cli/accounts.rb:16:in `each'
        14: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/cli/helpers.rb:27:in `block in each_connection'
        13: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/cli/backup.rb:16:in `block in run'
        12: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/account/connection.rb:66:in `run_backup'
        11: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/account/connection.rb:146:in `each_folder'
        10: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/account/connection.rb:146:in `each'
         9: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/account/connection.rb:148:in `block in each_folder'
         8: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/account/connection.rb:74:in `block in run_backup'
         7: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:17:in `run'
         6: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:17:in `with_index'
         5: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:17:in `each_slice'
         4: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:17:in `each'
         3: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:31:in `block in run'
         2: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:31:in `with_index'
         1: from /var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:31:in `each'
/var/lib/gems/2.7.0/gems/imap-backup-4.2.1/lib/imap/backup/downloader.rb:36:in `block (2 levels) in run': undefined method `size' for nil:NilClass (NoMethodError)

Thanks again for providing this tool!

joeyates commented 2 years ago

I've added a check for incomplete responses, in which case the email is skipped temporarily. In theory, future runs will get a complete response and manage to back up the email.