Upgrade path from s3ql 1.19

150 views
Skip to first unread message

Martin

unread,
Sep 14, 2015, 10:16:37 AM9/14/15
to s3ql
Hi,

I've managed to build s3ql 1.19 in a test environment and have a test bucket with up-to-date 1.19 filesystem.
I want to upgrade this filesystem to 2.x series, but the upgrade path seems to be stuck:

2.9 says: Metadata backup already exists, did something go wrong?
2.10.1 says: File system revision too old to upgrade!

Feels like there's no supported way out of 1.19?

Regards,
Martin

Nikolaus Rath

unread,
Sep 14, 2015, 12:55:01 PM9/14/15
to s3...@googlegroups.com
Upgrading to 2.9 should work, but it looks as if you already tried that
update and maybe interrupted it?

Can you go to https://console.aws.amazon.com/s3/home and open the bucket
that you're trying to upgrade? Please tell me the names of the objects
in that bucket that start with 's3ql_metadata'.

Best,
-Nikolaus

--
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

»Time flies like an arrow, fruit flies like a Banana.«

Martin

unread,
Sep 14, 2015, 2:04:32 PM9/14/15
to s3ql
Hi Nikolaus


On Monday, September 14, 2015 at 6:55:01 PM UTC+2, Nikolaus Rath wrote:
On Sep 14 2015, Martin <mrv...@gmail.com> wrote:
Can you go to https://console.aws.amazon.com/s3/home and open the bucket
that you're trying to upgrade? Please tell me the names of the objects
in that bucket that start with 's3ql_metadata'.

s3ql_metadata
s3ql_metadata_bak_0
s3ql_metadata_bak_1

Martin

Nikolaus Rath

unread,
Sep 14, 2015, 2:20:29 PM9/14/15
to s3...@googlegroups.com
On Sep 14 2015, Martin <mrv...@gmail.com> wrote:
> Hi Nikolaus
>
> On Monday, September 14, 2015 at 6:55:01 PM UTC+2, Nikolaus Rath wrote:
>>
>> On Sep 14 2015, Martin <mrv...@gmail.com <javascript:>> wrote:
>> Can you go to https://console.aws.amazon.com/s3/home and open the bucket
>> that you're trying to upgrade? Please tell me the names of the objects
>> in that bucket that start with 's3ql_metadata'.
>>
>
> s3ql_metadata
> s3ql_metadata_bak_0
> s3ql_metadata_bak_1

Uh? That's odd. Is that a test file system that you created just for the
upgrade? There should be more files than that (at least one for every
time you mounted+umounted the file system, but not more than 10).

For that file system, please copy & paste the full output of s3qladm
upgrade from S3QL 2.9.

Martin van Es

unread,
Sep 15, 2015, 3:57:07 AM9/15/15
to s3ql
On Mon, Sep 14, 2015 at 8:20 PM, Nikolaus Rath <Niko...@rath.org> wrote:
> On Sep 14 2015, Martin <mrv...@gmail.com> wrote:
>> Hi Nikolaus
>>
>> On Monday, September 14, 2015 at 6:55:01 PM UTC+2, Nikolaus Rath wrote:
>>>
>>> On Sep 14 2015, Martin <mrv...@gmail.com <javascript:>> wrote:
>>> Can you go to https://console.aws.amazon.com/s3/home and open the bucket
>>> that you're trying to upgrade? Please tell me the names of the objects
>>> in that bucket that start with 's3ql_metadata'.
>>>
>>
>> s3ql_metadata
>> s3ql_metadata_bak_0
>> s3ql_metadata_bak_1
>
> Uh? That's odd. Is that a test file system that you created just for the
> upgrade? There should be more files than that (at least one for every
> time you mounted+umounted the file system, but not more than 10).

Yes, this is a fresh test fs and hasn't been (un)mounted many times.

> For that file system, please copy & paste the full output of s3qladm
> upgrade from S3QL 2.9.

# s3qladm --version
S3QL 2.9

# s3qladm --cachedir /var/s3ql/ --authfile /var/s3ql/authinfo --no-ssl
upgrade s3://****.****.****.*****
Getting file system parameters..
Ignoring locally cached metadata for upgrade.

I am about to update the file system to the newest revision.
You will not be able to access the file system with any older version
of S3QL after this operation.

You should make very sure that this command is not interrupted and
that no one else tries to mount, fsck or upgrade the file system at
the same time.


Please enter "yes" to continue.
> yes
Metadata backup already exists, did something go wrong?


Regards,
Martin

Nikolaus Rath

unread,
Sep 15, 2015, 1:38:18 PM9/15/15
to s3...@googlegroups.com
Oh, sorry. I should have looked at the code first. It's not complaining
about data in the bucket, but about data in your cache directory. Please
use a clean --cachedir (or delete the files pertaining to your test
bucket), and it should work.

Martin van Es

unread,
Sep 16, 2015, 6:15:21 AM9/16/15
to s3ql
I managed to upgrade the 1.16 fs to 2.9 using a clean cachedir.
Now 2.16 (from repo) chokes while mounting the bucket:

Uncaught top-level exception:
Traceback (most recent call last):
File "/usr/bin/fsck.s3ql", line 9, in <module>
load_entry_point('s3ql==2.14', 'console_scripts', 'fsck.s3ql')()
File "/usr/lib/s3ql/s3ql/fsck.py", line 1162, in main
seq_no = get_seq_no(backend)
File "/usr/lib/s3ql/s3ql/common.py", line 54, in get_seq_no
while ('s3ql_seq_no_%d' % seq_no) not in backend:
File "/usr/lib/s3ql/s3ql/backends/common.py", line 271, in __contains__
return self.contains(key)
File "/usr/lib/s3ql/s3ql/backends/comprenc.py", line 287, in contains
return self.backend.contains(key)
File "/usr/lib/s3ql/s3ql/backends/common.py", line 438, in contains
self.lookup(key)
File "/usr/lib/s3ql/s3ql/backends/common.py", line 107, in wrapped
return method(*a, **kw)
File "/usr/lib/s3ql/s3ql/backends/s3c.py", line 279, in lookup
return self._extractmeta(resp, key)
File "/usr/lib/s3ql/s3ql/backends/s3c.py", line 742, in _extractmeta
raise CorruptedObjectError('Invalid metadata format: %s' % format_)
s3ql.backends.common.CorruptedObjectError: Invalid metadata format: pickle
Uncaught top-level exception:
Traceback (most recent call last):
File "/usr/bin/mount.s3ql", line 9, in <module>
load_entry_point('s3ql==2.14', 'console_scripts', 'mount.s3ql')()
File "/usr/lib/s3ql/s3ql/mount.py", line 129, in main
(param, db) = get_metadata(backend, cachepath)
File "/usr/lib/s3ql/s3ql/mount.py", line 361, in get_metadata
seq_no = get_seq_no(backend)
File "/usr/lib/s3ql/s3ql/common.py", line 54, in get_seq_no
while ('s3ql_seq_no_%d' % seq_no) not in backend:
File "/usr/lib/s3ql/s3ql/backends/common.py", line 271, in __contains__
return self.contains(key)
File "/usr/lib/s3ql/s3ql/backends/comprenc.py", line 287, in contains
return self.backend.contains(key)
File "/usr/lib/s3ql/s3ql/backends/common.py", line 438, in contains
self.lookup(key)
File "/usr/lib/s3ql/s3ql/backends/common.py", line 107, in wrapped
return method(*a, **kw)
File "/usr/lib/s3ql/s3ql/backends/s3c.py", line 279, in lookup
return self._extractmeta(resp, key)
File "/usr/lib/s3ql/s3ql/backends/s3c.py", line 742, in _extractmeta
raise CorruptedObjectError('Invalid metadata format: %s' % format_)
s3ql.backends.common.CorruptedObjectError: Invalid metadata format: pickle

Which was to be expected, but a bit rude I think.

When I use 2.16 upgrade, I get the following message:

# s3ql.upgrade *****.******.******.*****
Getting file system parameters..

File system revision too old to upgrade!

You need to use an older S3QL version to upgrade to a more recent
revision before you can use this version to upgrade to the newest
revision.

The last S3QL version that supported this file system revision
was 2.13. To run this version's s3qladm, proceed along
the following steps:

$ wget http://s3ql.googlecode.com/files/s3ql-2.13.tar.bz2
|| wget https://bitbucket.org/nikratio/s3ql/downloads/s3ql-2.13.tar.bz2
$ tar xjf s3ql-2.13.tar.bz2
$ (cd s3ql-2.13; ./setup.py build_ext)
$ s3ql-2.13/bin/s3qladm <options>

2.13 says:
Getting file system parameters..

File system revision too old to upgrade!

You need to use an older S3QL version to upgrade to a more recent
revision before you can use this version to upgrade to the newest
revision.

The last S3QL version that supported this file system revision
was 2.12. To run this version's s3qladm, proceed along
the following steps:

$ wget http://s3ql.googlecode.com/files/s3ql-2.12.tar.bz2
|| wget https://bitbucket.org/nikratio/s3ql/downloads/s3ql-2.12.tar.bz2
$ tar xjf s3ql-2.12.tar.bz2
$ (cd s3ql-2.12; ./setup.py build_ext)
$ s3ql-2.12/bin/s3qladm <options>

2.12 runs smoothly, but warns:
It is strongly recommended to run the s3ql_verify command with the
--data option as soon as possible. This is necessary to ensure that the
upgrade to the next (2.11) S3QL release will run smoothly.

That's a totally rediculous statement, since 2.11 was before 2.12?

And finally, 2.12 to 2.14 runs smooth as well.

Pff... gonna be a rough ride upgrading my mailstore I see!

Regards,
Martin
> --
> You received this message because you are subscribed to the Google Groups "s3ql" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to s3ql+uns...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.



--
If 'but' was any useful, it would be a logic operator

Nikolaus Rath

unread,
Sep 16, 2015, 12:02:58 PM9/16/15
to s3...@googlegroups.com
On Sep 16 2015, Martin van Es <mrv...@gmail.com> wrote:
> When I use 2.16 upgrade, I get the following message:
>
> # s3ql.upgrade *****.******.******.*****
> Getting file system parameters..
>
> File system revision too old to upgrade!

You mean 2.14, not 2.16, right? There is no version 2.16 yet.

> The last S3QL version that supported this file system revision
> was 2.13. To run this version's s3qladm, proceed along
> the following steps:

Ops, it seems I forgot one intermediate version in my
instructions. Sorry about that.

So (for the benefit of other readers) the for updating from S3QL 1.16
(or any newer 1.x version) is:

1. Upgrade to 2.9
2. Upgrade to 2.12
3. Upgrade to 2.13

Switching to the most recent version (2.14) does not require another
update.

> 2.12 runs smoothly, but warns:
> It is strongly recommended to run the s3ql_verify command with the
> --data option as soon as possible. This is necessary to ensure that the
> upgrade to the next (2.11) S3QL release will run smoothly.
>
> That's a totally rediculous statement, since 2.11 was before 2.12?


Yes. That message was added in release 2.10 in the expectation that 2.11
would introduce some changes that required running s3ql_verify. However,
I did not get around to implement this until 2.13, so the warning
persists in 2.11 and 2.11 (because these versions did not introduce file
system changes, the upgrade procedure is identical for 2.10, 2.11 and
2.12).

For people who follow every S3QL version, this never became obvious
(which is probably the reason no one reported it) because for them it
looks e.g. like this:

1. Update to S3QL 2.8, file system upgrade required
1. Update to S3QL 2.9, no fs upgrade required
2. Update to S3QL 2.10, fs upgrade required, message to run
s3ql_verify.
3. Update to S3QL 2.11, no fs upgrade required
4. Update to S3QL 2.12, no fs upgrade required
5. Update to S3QL 2.13, fs upgrade required
Reply all
Reply to author
Forward
0 new messages