You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Uwe Schindler (JIRA)" <ji...@apache.org> on 2016/05/30 10:12:12 UTC

[jira] [Reopened] (LUCENE-7300) Add directory wrapper that optionally uses hardlinks in copyFrom

     [ https://issues.apache.org/jira/browse/LUCENE-7300?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Uwe Schindler reopened LUCENE-7300:
-----------------------------------

I have seen the following test failure:

Build: http://jenkins.thetaphi.de/job/Lucene-Solr-6.x-Linux/775/
Java: 64bit/jdk-9-ea+120 -XX:+UseCompressedOops -XX:+UseSerialGC

1 tests failed.
FAILED:  org.apache.lucene.store.TestHardLinkCopyDirectoryWrapper.testCopyHardLinks

{noformat}
Error Message:
/home/jenkins/workspace/Lucene-Solr-6.x-Linux/lucene/build/misc/test/J2/temp/lucene.store.TestHardLinkCopyDirectoryWrapper_97CB7FCC9FBCBDC6-001/tempDir-001/test -> /home/jenkins/workspace/Lucene-Solr-6.x-Linux/lucene/build/misc/test/J2/temp/lucene.store.TestHardLinkCopyDirectoryWrapper_97CB7FCC9FBCBDC6-001/tempDir-001/dir_1/foo.bar

Stack Trace:
java.nio.file.NoSuchFileException: /home/jenkins/workspace/Lucene-Solr-6.x-Linux/lucene/build/misc/test/J2/temp/lucene.store.TestHardLinkCopyDirectoryWrapper_97CB7FCC9FBCBDC6-001/tempDir-001/test -> /home/jenkins/workspace/Lucene-Solr-6.x-Linux/lucene/build/misc/test/J2/temp/lucene.store.TestHardLinkCopyDirectoryWrapper_97CB7FCC9FBCBDC6-001/tempDir-001/dir_1/foo.bar
	at __randomizedtesting.SeedInfo.seed([97CB7FCC9FBCBDC6:769E35B963DCF416]:0)
	at sun.nio.fs.UnixException.translateToIOException(java.base@9-ea/UnixException.java:92)
	at sun.nio.fs.UnixException.rethrowAsIOException(java.base@9-ea/UnixException.java:111)
	at sun.nio.fs.UnixFileSystemProvider.createLink(java.base@9-ea/UnixFileSystemProvider.java:477)
	at org.apache.lucene.mockfile.FilterFileSystemProvider.createLink(FilterFileSystemProvider.java:233)
	at org.apache.lucene.mockfile.FilterFileSystemProvider.createLink(FilterFileSystemProvider.java:233)
	at org.apache.lucene.mockfile.FilterFileSystemProvider.createLink(FilterFileSystemProvider.java:233)
	at org.apache.lucene.mockfile.FilterFileSystemProvider.createLink(FilterFileSystemProvider.java:233)
	at org.apache.lucene.mockfile.FilterFileSystemProvider.createLink(FilterFileSystemProvider.java:233)
	at java.nio.file.Files.createLink(java.base@9-ea/Files.java:1089)
	at org.apache.lucene.store.TestHardLinkCopyDirectoryWrapper.testCopyHardLinks(TestHardLinkCopyDirectoryWrapper.java:55)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-ea/Native Method)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-ea/NativeMethodAccessorImpl.java:62)
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-ea/DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(java.base@9-ea/Method.java:531)
	at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1764)
	at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:871)
	at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:907)
	at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:921)
	at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
	at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
	at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
	at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
	at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
	at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
	at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:809)
	at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:460)
	at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:880)
	at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:781)
	at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:816)
	at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:827)
	at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
	at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
	at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
	at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
	at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
	at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
	at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
	at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
	at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
	at java.lang.Thread.run(java.base@9-ea/Thread.java:843)
{noformat}

> Add directory wrapper that optionally uses hardlinks in copyFrom
> ----------------------------------------------------------------
>
>                 Key: LUCENE-7300
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7300
>             Project: Lucene - Core
>          Issue Type: Improvement
>    Affects Versions: 6.1
>            Reporter: Simon Willnauer
>            Assignee: Simon Willnauer
>             Fix For: 6.1, master (7.0)
>
>         Attachments: LUCENE-7300.patch, LUCENE-7300.patch
>
>
> Today we always do byte-by-byte copy in Directory#copyFrom. While this is reliable and should be the default, certain situations can be improved by using hardlinks if possible to get constant time copy on OS / FS that support such an operation. Something like this could reside in misc if it's contained enough since it requires LinkPermissions to be set and needs to detect if both directories are subclasses of FSDirectory etc.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org