[
https://issues.apache.org/jira/browse/BEAM-10080?focusedWorklogId=458136&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-458136
]
ASF GitHub Bot logged work on BEAM-10080:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 13/Jul/20 15:24
Start Date: 13/Jul/20 15:24
Worklog Time Spent: 10m
Work Description: tysonjh commented on a change in pull request #12225:
URL: https://github.com/apache/beam/pull/12225#discussion_r453722990
##########
File path:
sdks/java/core/src/main/java/org/apache/beam/sdk/io/LocalFileSystem.java
##########
@@ -223,12 +229,22 @@ private MatchResult matchOne(String spec) throws
IOException {
// it considers it an invalid file system pattern. We should use
// new File(spec) to avoid such validation.
// See https://bugs.openjdk.java.net/browse/JDK-8197918
- final File file = new File(spec);
+ // However, new File(parent, child) resolves absolute `child` in a
system-dependent
+ // way that is generally incorrect, for example new File($PWD, "/tmp/foo")
resolves
+ // to $PWD/tmp/foo on many systems, unlike
Paths.get($PWD).resolve("/tmp/foo") which
+ // correctly resolves to "/tmp/foo". We add just this one piece of logic
here, without
+ // switching to Paths which could require a rewrite of this module to
support
+ // both Windows and correct file resolution.
+ // The root cause is that globs are not files but we are using file
manipulation libraries
+ // to work with them.
+ final File relativeFile = new File(spec);
Review comment:
Can you change the `relativeFile` name to something else? It may
actually be an absolute file and that would be confusing.
##########
File path:
sdks/java/core/src/main/java/org/apache/beam/sdk/io/LocalFileSystem.java
##########
@@ -90,9 +91,14 @@
@Override
protected List<MatchResult> match(List<String> specs) throws IOException {
+ return match(new File(".").getAbsolutePath(), specs);
+ }
+
+ @VisibleForTesting
+ List<MatchResult> match(String pwd, List<String> specs) throws IOException {
Review comment:
`pwd` is a bit unclear as a parameter name.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 458136)
Time Spent: 2h (was: 1h 50m)
> Java Core Tests failing [Java 11]
> ---------------------------------
>
> Key: BEAM-10080
> URL: https://issues.apache.org/jira/browse/BEAM-10080
> Project: Beam
> Issue Type: Sub-task
> Components: sdk-java-core
> Reporter: Pawel Pasterz
> Assignee: Kenneth Knowles
> Priority: P2
> Time Spent: 2h
> Remaining Estimate: 0h
>
> {{Gradle task :sdks:java:core:test fails during Java 11 precommit job.}}
> Scan with failures: https://gradle.com/s/k5hp5w4gn363k
> {code}
> LocalFileSystemTest. testMatchInDirectory
> LocalFileSystemTest. testMatchRelativeWildcardPath
> PipelineOptionsFactoryTest. testGettersAnnotatedWithInconsistentDefault
> PipelineOptionsFactoryTest. testGettersWithMultipleDefaults
> ReflectHelpersTest. testAnnotationFormatter
> {code}
> Example stacktrace:
> {code:java}
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest >
> testGettersAnnotatedWithInconsistentDefault FAILED
> java.lang.AssertionError:
> Expected: (an instance of java.lang.IllegalArgumentException and
> exception with message a string containing "Property [object] is marked with
> contradictory annotations. Found [[Default.Integer(value=1) on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithDefault#getObject()],
> [Default.String(value=abc) on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithInconsistentDefaultType#getObject()]].")
> but: exception with message a string containing "Property [object]
> is marked with contradictory annotations. Found [[Default.Integer(value=1) on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithDefault#getObject()],
> [Default.String(value=abc) on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithInconsistentDefaultType#getObject()]]."
> message was "Property [object] is marked with contradictory annotations.
> Found [[Default.Integer(value=1) on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithDefault#getObject()],
> [Default.String(value="abc") on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithInconsistentDefaultType#getObject()]]."
> Stacktrace was: java.lang.IllegalArgumentException: Property [object] is
> marked with contradictory annotations. Found [[Default.Integer(value=1) on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithDefault#getObject()],
> [Default.String(value="abc") on
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest$GetterWithInconsistentDefaultType#getObject()]].
> at
> org.apache.beam.sdk.options.PipelineOptionsFactory.validateGettersHaveConsistentAnnotation(PipelineOptionsFactory.java:1089)
> at
> org.apache.beam.sdk.options.PipelineOptionsFactory.validateMethodAnnotations(PipelineOptionsFactory.java:1044)
> at
> org.apache.beam.sdk.options.PipelineOptionsFactory.validateClass(PipelineOptionsFactory.java:973)
> at
> org.apache.beam.sdk.options.PipelineOptionsFactory.access$2200(PipelineOptionsFactory.java:115)
> at
> org.apache.beam.sdk.options.PipelineOptionsFactory$Cache.validateWellFormed(PipelineOptionsFactory.java:1901)
> at
> org.apache.beam.sdk.options.ProxyInvocationHandler.as(ProxyInvocationHandler.java:219)
> at
> org.apache.beam.sdk.options.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:140)
> at com.sun.proxy.$Proxy139.as(Unknown Source)
> at
> org.apache.beam.sdk.options.PipelineOptionsFactoryTest.testGettersAnnotatedWithInconsistentDefault(PipelineOptionsFactoryTest.java:651)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at
> org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:266)
> at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
> at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
> at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:305)
> at
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:365)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
> at org.junit.runners.ParentRunner$4.run(ParentRunner.java:330)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:78)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:328)
> at org.junit.runners.ParentRunner.access$100(ParentRunner.java:65)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:292)
> at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:305)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:412)
> at
> org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
> at
> org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
> at
> org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
> at
> org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
> at
> org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
> at jdk.internal.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at
> org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
> at
> org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
> at
> org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
> at
> org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
> at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
> at
> org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:118)
> at jdk.internal.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at
> org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
> at
> org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
> at
> org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
> at
> org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
> at
> org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
> at
> org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
> at
> org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at
> org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
> at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)