mirror of
https://github.com/Alfresco/SearchServices.git
synced 2025-09-24 14:31:29 +00:00
[SEARCH-1994]
fix tmp files moves
This commit is contained in:
@@ -236,9 +236,11 @@ public final class SolrContentStore implements Closeable, AccessMode
|
|||||||
@Override
|
@Override
|
||||||
public long getLastCommittedVersion()
|
public long getLastCommittedVersion()
|
||||||
{
|
{
|
||||||
try(Stream<String> fileStream = Files.lines(Paths.get(root, ".version")) )
|
try
|
||||||
{
|
{
|
||||||
return fileStream.map(Long::parseLong)
|
return Files.readAllLines(Paths.get(root, ".version"))
|
||||||
|
.stream()
|
||||||
|
.map(Long::parseLong)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(NO_VERSION_AVAILABLE);
|
.orElse(NO_VERSION_AVAILABLE);
|
||||||
}
|
}
|
||||||
@@ -251,20 +253,29 @@ public final class SolrContentStore implements Closeable, AccessMode
|
|||||||
@Override
|
@Override
|
||||||
public void setLastCommittedVersion(long version)
|
public void setLastCommittedVersion(long version)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
File tmpFile = new File(root, ".version-" + new SimpleDateFormat(SnapShooter.DATE_FMT, Locale.ROOT).format(new Date()));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File tmpFile = new File(root, ".version-" + new SimpleDateFormat(SnapShooter.DATE_FMT, Locale.ROOT).format(new Date()));
|
|
||||||
FileWriter wr = new FileWriter(tmpFile);
|
FileWriter wr = new FileWriter(tmpFile);
|
||||||
wr.write(Long.toString(version));
|
wr.write(Long.toString(version));
|
||||||
wr.close();
|
wr.close();
|
||||||
|
|
||||||
// file.renameTo(..) does not work on windows. Use Files.move instead.
|
// file.renameTo(..) does not work on windows. Use Files.move instead.
|
||||||
Files.move(tmpFile.toPath(), new File(root, ".version").toPath(), StandardCopyOption.REPLACE_EXISTING);
|
Files.move(tmpFile.toPath(), new File(root, ".version").toPath(), StandardCopyOption.ATOMIC_MOVE);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (IOException exception)
|
catch (IOException exception)
|
||||||
{
|
{
|
||||||
logger.error("Unable to persist the last committed content store version {}. See the stacktrace below for furtger details.", version, exception);
|
logger.error("Unable to persist the last committed content store version {}. See the stacktrace below for furtger details.", version, exception);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Files.delete(tmpFile.toPath());
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
logger.error("Unable to delete tmp contentstore version file {}.", version);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1714,7 +1714,7 @@ class AlfrescoIndexFetcher
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
Files.createDirectories(Paths.get(csFile.getParent()));
|
Files.createDirectories(Paths.get(csFile.getParent()));
|
||||||
Files.copy(tmpFile.toPath(), csFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
Files.move(tmpFile.toPath(), csFile.toPath(), StandardCopyOption.ATOMIC_MOVE);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user