--immutable should set --retries=1 when source and dest are different

when using --immutable and there is some difference between source and dest, rclone should not keep retrying over and over.
there is no point in re-trying, as no changes can be made
in addition, rclone keeps using api calls to re-check md5 and so on.

also, rclone should not raise an error in this case, as there is no error.
makes it difficult to parse the logs files for real errors.

here is a debug log of it

DEBUG : rclone: Version "v1.53.3" starting with parameters ["C:\\data\\rclone\\scripts\\rclone.exe" "copy" "b:\\mount\\rcloner\\kdbx_quick_wasabi_copy_20201226.175628\\data\\u\\keepass\\database" "wasabi01:en07copy/kdbx/rclone/backup" "--stats=0" "--fast-list" "--immutable" "--log-level=DEBUG" "--log-file=C:\\data\\rclone\\logs\\kdbx_quick_wasabi_copy\\20201226.175628\\rclone.log"]
DEBUG : Creating backend with remote "b:\\mount\\rcloner\\kdbx_quick_wasabi_copy_20201226.175628\\data\\u\\keepass\\database"
DEBUG : Using config file from "C:\\data\\rclone\\scripts\\rclone.conf"
DEBUG : fs cache: renaming cache item "b:\\mount\\rcloner\\kdbx_quick_wasabi_copy_20201226.175628\\data\\u\\keepass\\database" to be canonical "//?/b:/mount/rcloner/kdbx_quick_wasabi_copy_20201226.175628/data/u/keepass/database"
DEBUG : Creating backend with remote "wasabi01:en07copy/kdbx/rclone/backup"
DEBUG : 01.kdbx: Sizes differ (src 321486 vs dst 321502)
ERROR : 01.kdbx: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for checks to finish
DEBUG : 01.key: Modification times differ by 1h0m0.000328s: 2019-07-06 16:16:51.017 -0400 EDT, 2019-07-06 17:16:51.017328 -0400 EDT
DEBUG : 01.key: MD5 = c1d5ac68140e11a2468bb42d1d02d10e OK
ERROR : 01.key: StartedAt mismatch between immutable objects
ERROR : 01.key: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for transfers to finish
INFO  : There was nothing to transfer
ERROR : Attempt 1/3 failed with 1 errors and: immutable file modified
DEBUG : 01.kdbx: Sizes differ (src 321486 vs dst 321502)
ERROR : 01.kdbx: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for checks to finish
DEBUG : 01.key: Modification times differ by 1h0m0.000328s: 2019-07-06 16:16:51.017 -0400 EDT, 2019-07-06 17:16:51.017328 -0400 EDT
DEBUG : 01.key: MD5 = c1d5ac68140e11a2468bb42d1d02d10e OK
ERROR : 01.key: StartedAt mismatch between immutable objects
ERROR : 01.key: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for transfers to finish
INFO  : There was nothing to transfer
ERROR : Attempt 2/3 failed with 1 errors and: immutable file modified
DEBUG : 01.kdbx: Sizes differ (src 321486 vs dst 321502)
ERROR : 01.kdbx: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for checks to finish
DEBUG : 01.key: Modification times differ by 1h0m0.000328s: 2019-07-06 16:16:51.017 -0400 EDT, 2019-07-06 17:16:51.017328 -0400 EDT
DEBUG : 01.key: MD5 = c1d5ac68140e11a2468bb42d1d02d10e OK
ERROR : 01.key: StartedAt mismatch between immutable objects
ERROR : 01.key: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for transfers to finish
INFO  : There was nothing to transfer
ERROR : Attempt 3/3 failed with 1 errors and: immutable file modified
INFO  : 
Transferred:   	         0 / 0 Bytes, -, 0 Bytes/s, ETA -
Errors:                 1 (retrying may help)
Checks:                 6 / 6, 100%
Elapsed time:         0.4s

DEBUG : 4 go routines active
Failed to copy: immutable file modified

Try this

v1.54.0-beta.4993.94ff16494.fix-immutable-retry on branch fix-immutable-retry (uploaded in 15-30 mins)

thanks.
the windows-amd64.zip is missing?

The build had a little glitch. I kicked it off again - hopefully in 20 mins from now you'll have an amd64 build to test :slight_smile:

that works, thanks,

there are four ERRORS and a summary Errors in the log, yet there are no actual errors.
it is very useful that rclone notices a difference between the source and dest. my script is going to scan for that log entry and notify me.

please, can you

  • change the ERRORS to NOTICE
  • remove the summary Errors
  • remove Failed to copy: immutable file modified if INFO : There was nothing to transfer, as this is a false positive.
DEBUG : 01.kdbx: Sizes differ (src 322926 vs dst 321502)
ERROR : 01.kdbx: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for checks to finish
DEBUG : 01.key: Modification times differ by 1h0m0.000328s: 2019-07-06 16:16:51.017 -0400 EDT, 2019-07-06 17:16:51.017328 -0400 EDT
DEBUG : 01.key: MD5 = c1d5ac68140e11a2468bb42d1d02d10e OK
ERROR : 01.key: StartedAt mismatch between immutable objects
ERROR : 01.key: Source and destination exist but do not match: immutable file modified
DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for transfers to finish
INFO  : There was nothing to transfer
ERROR : Can't retry this error - not attempting retries
INFO  : 
Transferred:   	         0 / 0 Bytes, -, 0 Bytes/s, ETA -
Errors:                 1 (no need to retry)
Checks:                 2 / 2, 100%
Elapsed time:         0.5s


DEBUG : 4 go routines active
Failed to copy: immutable file modified

Great

It looks like rclone counted the number of errors wrong! I've fixed that now.

I think that has got to stay an ERROR. The user asked for something to be transferred and rclone couldn't do it - that needs to be reported as an ERROR with a non-zero exit code.

I think that will need to stay as we counted errors

Yes that is wrong. I fixed that now so that it only prints the message if there was nothing to transfer and there were no errors.

Can you give this a go?

v1.54.0-beta.5023.b5a1586ae.fix-immutable-retry on branch fix-immutable-retry (uploaded in 15-30 mins)

thanks, that beta fixed the issue you mentioned.

  1. however, i still do not understand why this is an error
    2020/12/30 13:16:57 ERROR : 01.kdbx: Source and destination exist but do not match: immutable file modified
    as per docs,
    " Use copy --immutable if it is desired to avoid deletion as well as modification."
    with my command, i explicitly set --immutable, that means i desire for rclone to avoid modification of the file.
    the fact that the rclone notices a difference between source and dest is not an error; just something that should be logged as that is very useful info.

  2. as i mentioned i do not consider this an error but why are there two errors, not one error?

2020/12/30 14:04:41 ERROR : 01.key: StartedAt mismatch between immutable objects
2020/12/30 14:04:41 ERROR : 01.key: Source and destination exist but do not match: immutable file modified
  1. again, not sure why this is an error but no matter what you choose to call it, perhaps it could be more descriptive
    2020/12/30 14:02:19 ERROR : Can't retry this error - not attempting retries
    could be
    2020/12/30 14:02:19 ERROR : Can't retry this error - not attempting retries - due to --immutable
2020/12/30 14:02:19 DEBUG : rclone: Version "v1.54.0-beta.5023.b5a1586ae.fix-immutable-retry" starting with parameters ["c:\\data\\rclone\\versions\\rclone-v1.54.0-beta.5023.b5a1586ae.fix-immutable-retry-windows-amd64\\rclone-v1.54.0-beta.5023.b5a1586ae.fix-immutable-retry-windows-amd64.exe" "copy" "b:\\mount\\rcloner\\kdbx_quick_wasabi_copy_20201229.134231\\data\\u\\keepass\\database" "wasabi01:en07copy/kdbx/rclone/backup" "--stats=0" "--fast-list" "--immutable" "--log-level=DEBUG" "--log-file=C:\\data\\rclone\\logs\\kdbx_quick_wasabi_copy\\20201229.134231\\rclone.log"]
2020/12/30 14:02:19 DEBUG : Creating backend with remote "b:\\mount\\rcloner\\kdbx_quick_wasabi_copy_20201229.134231\\data\\u\\keepass\\database"
2020/12/30 14:02:19 DEBUG : Using config file from "C:\\data\\rclone\\scripts\\rclone.conf"
2020/12/30 14:02:19 DEBUG : fs cache: renaming cache item "b:\\mount\\rcloner\\kdbx_quick_wasabi_copy_20201229.134231\\data\\u\\keepass\\database" to be canonical "//?/b:/mount/rcloner/kdbx_quick_wasabi_copy_20201229.134231/data/u/keepass/database"
2020/12/30 14:02:19 DEBUG : Creating backend with remote "wasabi01:en07copy/kdbx/rclone/backup"
2020/12/30 14:02:19 DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for checks to finish
2020/12/30 14:02:19 DEBUG : 01.kdbx: Sizes differ (src 323182 vs dst 321502)
2020/12/30 14:02:19 ERROR : 01.kdbx: Source and destination exist but do not match: immutable file modified
2020/12/30 14:02:19 DEBUG : 01.key: Modification times differ by 1h0m0.000328s: 2019-07-06 16:16:51.017 -0400 EDT, 2019-07-06 17:16:51.017328 -0400 EDT
2020/12/30 14:02:19 DEBUG : 01.key: MD5 = c1d5ac68140e11a2468bb42d1d02d10e OK
2020/12/30 14:02:19 ERROR : 01.key: StartedAt mismatch between immutable objects
2020/12/30 14:02:19 ERROR : 01.key: Source and destination exist but do not match: immutable file modified
2020/12/30 14:02:19 DEBUG : S3 bucket en07copy path kdbx/rclone/backup: Waiting for transfers to finish
2020/12/30 14:02:19 DEBUG : test.txt: MD5 = d41d8cd98f00b204e9800998ecf8427e OK
2020/12/30 14:02:19 INFO  : test.txt: Copied (new)
2020/12/30 14:02:19 ERROR : Can't retry this error - not attempting retries
2020/12/30 14:02:19 INFO  : 
Transferred:   	         0 / 0 Bytes, -, 0 Bytes/s, ETA -
Errors:                 2 (no need to retry)
Checks:                 2 / 2, 100%
Transferred:            1 / 1, 100%
Elapsed time:         0.5s

2020/12/30 14:02:19 DEBUG : 6 go routines active
2020/12/30 14:02:19 Failed to copy with 2 errors: last error was: immutable file modified

Maybe you want

  --ignore-existing   Skip all files that exist on destination

Instead of --immutable? --immutable is designed for compliance reasons where you should never be modifying stuff you've already uploaded, hence the error. --ignore-existing should calmly skip existing stuff with no error.

good point,

when using --immutable, i need to know about the mismatches, so the errors are ok.

last question, no, really,...
what does this error mean ERROR : 01.key: StartedAt mismatch between immutable objects

thanks much,

OK

Good question.

It looks like it got changed by accident. It should read ERROR : 01.key: Timestamp mismatch between immutable objects which makes a whole lot more sense! I'll change it back.

I've merged those little fixes to --immutable we made which is nice - thank you :slight_smile:

i was not sure if you uploaded a new set of beta files.
so i re-downloaded the same beta and in testing, did not see a difference from the last beta download.
did i download the wrong file or did you not update the beta yet?

I updated the latest beta rather than the branch I uploaded previously.

that worked well.

perhaps this error message could be more descriptive
ERROR : Can't retry this error - not attempting retries
could be
ERROR : Not attempting retries due to --immutable

Great

Hmm... I suppose what it is saying is "There were 1 or more errors, but none of the errors can be retried, so not doing any retries". We could print the last error, but we get that in just a moment

2021/01/01 16:37:01 ERROR : Can't retry this error - not attempting retries
2021/01/01 16:37:01 INFO  : 
Transferred:   	         0 / 0 Bytes, -, 0 Bytes/s, ETA -
Errors:                 3 (no need to retry)
Checks:                 3 / 3, 100%
Elapsed time:         0.0s

2021/01/01 16:37:01 DEBUG : 3 go routines active
2021/01/01 16:37:01 Failed to sync with 3 errors: last error was: immutable file modified

Maybe a better wording would be Can't retry any of the errors - not attempting retries - what do you think?

well, i think that rclone should be clear as to why there will not be any retries, as the normal rclone behavior is to retry. whatever you think is best.

the combination of aws s3 sse-c encryption and --immutable is huge for me.
really looking forward to v1.54.0.

OK I made that change - that looks much more understandable.

Great :slight_smile: