incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Desimpel, Ignace" <Ignace.Desim...@nuance.com>
Subject FW: Migration LCS from 1.2.X to 2.0.x exception
Date Wed, 25 Sep 2013 11:13:03 GMT
Same is true if started from 1.2.9 version to 2.0.x
Seems like Cassandra-5383 is the related issue.

The code in the function mutateLevel  (from 1.2.5 to 1.2.9 and later ) is indirectly using
the java file::renameTo function. And that will not work on Windows if the file already exists.
Don't know about Linux, but even the java function description is already telling that the
behavior of the function can be machine dependent. So even on linux based systems, and even
if that functions returns with success, still does not confirm that actually the old file
name/content was removed and the new file name/content is used as replacement.


From: Marcus Eriksson [mailto:krummas@gmail.com]
Sent: woensdag 25 september 2013 10:02
To: user@cassandra.apache.org
Subject: Re: Migration LCS from 1.2.X to 2.0.x exception

this is the issue:
https://issues.apache.org/jira/browse/CASSANDRA-5383

guess it fell between chairs, will poke around

On Tue, Sep 24, 2013 at 4:26 PM, Nate McCall <nate@thelastpickle.com<mailto:nate@thelastpickle.com>>
wrote:
What version of 1.2.x?

Unfortunately, you must go through 1.2.9 first. See https://github.com/apache/cassandra/blob/cassandra-2.0.0/NEWS.txt#L19-L24

On Tue, Sep 24, 2013 at 8:57 AM, Desimpel, Ignace <Ignace.Desimpel@nuance.com<mailto:Ignace.Desimpel@nuance.com>>
wrote:
Tested on WINDOWS : On startup of the 2.0.0 version from 1.2.x files I get an error as listed
below.

This is due to the code in LeveledManifest:: mutateLevel. The method already has a comment
saying that it is scary ...
On windows, one cannot use the File::rename if the target file name already exists.
Also, even on Linux, I'm not sure if a rename would actually 'overwrite/implicit-delete' the
content of the target file.

Anyway, adding code (below) before the FileUtils.renameWithConfirm should work in both cases
(maybe even rename the fromFile to be able to recover...)
File oTo = new File(filename);
                if ( oTo.exists() ) oTo.delete();


java.lang.RuntimeException: Failed to rename .....xxx\Function-ic-10-Statistics.db-tmp to
.....xxx\Function-ic-10-Statistics.db
                at org.apache.cassandra.io.util.FileUtils.renameWithConfirm(FileUtils.java:136)
~[main/:na]
                at org.apache.cassandra.io.util.FileUtils.renameWithConfirm(FileUtils.java:125)
~[main/:na]
                at org.apache.cassandra.db.compaction.LeveledManifest.mutateLevel(LeveledManifest.java:601)
~[main/:na]
                at org.apache.cassandra.db.compaction.LegacyLeveledManifest.migrateManifests(LegacyLeveledManifest.java:103)
~[main/:na]
                at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:247)
~[main/:na]
                at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:443)
~[main/:na]

Regards,

Ignace Desimpel



Mime
View raw message