Giter VIP home page Giter VIP logo

Comments (15)

l3002 avatar l3002 commented on July 4, 2024 1

@rohanKanojia: Hi, Yeah, I checked it yesterday. The solution worked like a charm. I changed the Dockerfile location to baseDirectory.

I'll send in a commit in a few minutes.

I still have some suspicions about the exclusion statement because it wasn't actually working for the any even though it was supposed to. I'll check that some other time though. If I'll find there's any change might be required for that. I'll create a issue for that but for now I guess we can resolve this issue.

from jkube.

l3002 avatar l3002 commented on July 4, 2024 1

Thanks for help again.

from jkube.

l3002 avatar l3002 commented on July 4, 2024

@rohanKanojia / @manusa, Please look into this issue and if it seems a genuine issue, then assign it to me.

from jkube.

manusa avatar manusa commented on July 4, 2024

Hi @l3002

I'm sorry, but I'm failing to see the issue at hand.
The "Error in windows:" screenshot shows a truncated stacktrace precisely where the most critical part is, could you please attach that line using (backtic/code blocks)

    ```
    $theStackTraceLine
    ```

Why is the path wrong in *nix-compatible file systems?

Would the issue be fixed for Windows in case the / character was changed to \ in the following line:
https://github.com/eclipse/jkube/blob/5da6068d7756784aef9569568ee80f98da97e296/jkube-kit/build/api/src/main/java/org/eclipse/jkube/kit/build/api/assembly/AssemblyManager.java#L456

from jkube.

l3002 avatar l3002 commented on July 4, 2024

Hi @manusa, Sorry for the messy description, There was a lot to cover. The issue persists with both Windows and Linux.

In Windows:


	at org.eclipse.jkube.kit.config.service.openshift.OpenshiftBuildService.buildSingleImage(OpenshiftBuildService.java:170)
	at org.eclipse.jkube.kit.config.service.AbstractImageBuildService.processImage(AbstractImageBuildService.java:57)
	at org.eclipse.jkube.kit.config.service.AbstractImageBuildService.build(AbstractImageBuildService.java:36)
	at org.eclipse.jkube.kit.config.service.openshift.OpenshiftBuildServiceIntegrationTest.build_withDockerfileModeAndAssembly_shouldSucceed(OpenshiftBuildServiceIntegrationTest.java:254)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.util.regex.PatternSyntaxException: Stack overflow during pattern compilation near index 12
^target(?:(?:\\.*)|(?:))$
            ^
	at java.base/java.util.regex.Pattern.error(Pattern.java:2028)
	at java.base/java.util.regex.Pattern.<init>(Pattern.java:1432)
	at java.base/java.util.regex.Pattern.compile(Pattern.java:1095)
	at java.base/sun.nio.fs.WindowsFileSystem.getPathMatcher(WindowsFileSystem.java:282)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.lambda$excludePathMatchers$5(AssemblyFileSetUtils.java:198)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Collections$2.tryAdvance(Collections.java:4853)
	at java.base/java.util.Collections$2.forEachRemaining(Collections.java:4861)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.excludePathMatchers(AssemblyFileSetUtils.java:199)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.isNotExcluded(AssemblyFileSetUtils.java:190)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:166)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
	at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)

This is occurring due to two reasons, one them is the relativized path for the source, which should return the path in target/<directory-name> form but returns <directory name>

The source code relativization of path is given below sourceDirectory.relativize(path).normalize()

image

This should return target/<directory-name> because the glob pattern created at AssemblyManager.createDockerExcludesList() is target{/**,} which would remove any files in target, which leads to our 2nd issue.

image

The second issue is that, we are not supposed to exclude all files in target but just the destination subdirectory from it or any directories specified by the user. but due to the above glob glob:target{/**,} all the files are being excluded when we change the relativized path to the correct form.

When all the files are being excluded nothing happens and it never enters the copy() block of the code.

The same issue was encountered with Linux but it doesn't return a StackOverflow rather it returns:

 File name too long
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixCopyFile.copyFile(UnixCopyFile.java:246)
        at java.base/sun.nio.fs.UnixCopyFile.copy(UnixCopyFile.java:603)
        at java.base/sun.nio.fs.UnixFileSystemProvider.copy(UnixFileSystemProvider.java:257)
        at java.base/java.nio.file.Files.copy(Files.java:1305)
        at org.eclipse.jkube.kit.common.util.FileUtil.copy(FileUtil.java:205)
        at org.eclipse.jkube.kit.common.util.FileUtil.copy(FileUtil.java:201)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:173)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)
        at org.eclipse.jkube.kit.common.archive.AssemblyFileSetUtils.copy(AssemblyFileSetUtils.java:170)

This issue is occurring due to the same reasons mentioned above but here Unix's System call returns error for File Name Too Long.

from jkube.

rohanKanojia avatar rohanKanojia commented on July 4, 2024

@l3002 : Hello, Could you please share steps to reproduce this problem?

from jkube.

l3002 avatar l3002 commented on July 4, 2024

@rohanKanojia: Sure, Just change outputDirectory in jKubeServiceHub.Configuration to target.getName() in OpenshiftBuildServiceIntegrationTest

image

image

and run mvn clean install for the project.

from jkube.

l3002 avatar l3002 commented on July 4, 2024

@manusa / @rohanKanojia: Were you guys able to reproduce the Issue?

from jkube.

rohanKanojia avatar rohanKanojia commented on July 4, 2024

@l3002 : I could reproduce the issue after making the abovementioned changes. However, I haven't checked what's causing this. I would like to find answers to these questions

Why is the test working when the absolute path is used in JKubeConfiguration?

.outputDirectory(target.getAbsolutePath())

What's the difference in behavior of isNotExcluded filter when outputDirectory is changed to target.getName()?

from jkube.

l3002 avatar l3002 commented on July 4, 2024

@rohanKanojia: I have been working on that and have made some progress with it.

The issue is occurring with target.getName() because it creates the Destination Directory as the sub directory of itself. Whereas the Destination Directory for target.getAbsolutePath() is a directory created outside the target directory. Due to which it never needs to enter the exclusion part.

For target.getAbsolutePath():

image

NOTE: Here, the target is the destination directory.

It actually creates the destination directory in the parent directory of target which is openshift-build-service.

Now, For target.getName():

The exclusion statement should exclude the output sub directory (for example, target/myapp) but it isn't therefore when it enters the if block it checks that it is a directory and force creates it and invokes copy on the all the subdirectory which again invokes the if block and force creates that new directory. Thus, creating an infinite recursion.

Something like this:
image
image

and so on.

from jkube.

rohanKanojia avatar rohanKanojia commented on July 4, 2024

@l3002 : Do you mean this issue is happening due to wrong expectation set in tests? Just because output directory name is target ?

In Mojos, this value is set to target/docker
https://github.com/eclipse/jkube/blob/8caae1af25655622875bf537b32814fd3648c189/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java#L172-L173

What happens if you change value of target variable to match this value?

target = Files.createDirectories(baseDirectory.toPath().resolve("target").resolve("docker")).toFile();

from jkube.

l3002 avatar l3002 commented on July 4, 2024

@rohanKanojia : I don't think that would solve the problem, Because the issue occurring, here,

https://github.com/eclipse/jkube/blob/8caae1af25655622875bf537b32814fd3648c189/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/archive/AssemblyFileSetUtils.java#L168

In the copy(), it creates the destination file once it resolves that the file source is a directory. This must have been implemented for the openshift-build-service/target itself which is our initial source directory, because after that when it recursively calls itself, it does that for the files contained in it.

https://github.com/eclipse/jkube/blob/8caae1af25655622875bf537b32814fd3648c189/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/archive/AssemblyFileSetUtils.java#L169-L171

But as the destination directory target/myapp/build/maven is also present there it needs an exclusion statement for it so that it doesn't enter the the if block.

https://github.com/eclipse/jkube/blob/8caae1af25655622875bf537b32814fd3648c189/jkube-kit/build/api/src/main/java/org/eclipse/jkube/kit/build/api/assembly/AssemblyManager.java#L453-L465

Here, we needs to add the destination sub directory so that when it actually calls the exclude list and checks if isNotExcluded then for destination this becomes false and it never enters the if block.

from jkube.

rohanKanojia avatar rohanKanojia commented on July 4, 2024

The more I look at the test build_withDockerfileModeAndAssembly_shouldSucceed, the more I feel it's not set up correctly:

We're providing Dockerfile inside target directory (which looks a bit strange).
https://github.com/eclipse/jkube/blob/b64915ec6090dcb0171e45b6372052278210e6f3/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildServiceIntegrationTest.java#L224-L224

We don't provide any context directory, which means context directory would be Dockerfile's parent directory. Dockerfile's context directory is added to AssemblyFileSet:
https://github.com/eclipse/jkube/blob/8caae1af25655622875bf537b32814fd3648c189/jkube-kit/build/api/src/main/java/org/eclipse/jkube/kit/build/api/assembly/AssemblyManager.java#L432-L435

You can fix it by either changing Dockerfile location to be under base directory:

final File dockerFile = new File(baseDirectory, "Dockerfile");

Or change the output directory to be different from build directory like I advised in my previous comment.

from jkube.

l3002 avatar l3002 commented on July 4, 2024

@rohanKanojia: Sorry, I missed your last comment yesterday. I'll see if the changing the Dockerfile's location to baseDirectory works.

I believe changing the output directory to be different from the build directory could work and has a strong chance of working. I'll test this in my local environment and let you know.

from jkube.

rohanKanojia avatar rohanKanojia commented on July 4, 2024

@l3002 : Hello, Did you get time to try it out? Is it working?

from jkube.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.