Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-65383

teamconcert-plugin fails to load files with non-ASCII character in filename

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • teamconcert-plugin
    • None
    • RTC6.0.6 on server
      Jenkins 2.263.4
      Teamconcert plugin 2.2.0
      Job's SCM set to pull from an RTC Stream
      A file in that stream with a non-ASCII character 'á' in the name

      I had a Jenkins job set up to pull its source from a RTC Stream and this worked ok until one of my developers added a file whose filename contains a 'á' character (and this character is a perfectly valid character, both on Windows where the file originated, and on Linux where I encountered this problem).
      I've redacted any company-specific stuff so, for the purposes of this report, that filename is "Redacted á redacted.extension".

      After this checkin, the SCM-checkout phase of the build would fail with a lengthy exception complaining about a file "Redacted ? redacted.extension":

      Using stream configuration.
      Fetching files from repository workspace "HJP_1618332982524".
      RTC Checkout : Deleting fetch destination "/home/jenkins/workspace/RedactedJenkinsJobName" before fetching ...
      RTC Checkout : Fetching files to fetch destination "/home/jenkins/workspace/RedactedJenkinsJobName" ...
      FATAL: RTC : checkout failure: There were 1 errors.  After correcting the problems, it is recommended that components be reloaded.  The reload will be incremental, loading only the missing items.  You can further reduce the reload time by reloading just the projects out of sync.
      There were 1 errors.  After correcting the problems, it is recommended that components be reloaded.  The reload will be incremental, loading only the missing items.  You can further reduce the reload time by reloading just the projects out of sync.
      The following resource name is invalid: "/Some---/redacted--path--here--/RedactedFolderName/Redacted ? redacted.extension".
      
      com.ibm.team.build.internal.scm.SourceControlUtility$2: Status ERROR: com.ibm.team.filesystem.client code=0 There were 1 errors.  After correcting the problems, it is recommended that components be reloaded.  The reload will be incremental, loading only the missing items.  You can further reduce the reload time by reloading just the projects out of sync. null children=[Status ERROR: com.ibm.team.filesystem.client code=0 The following resource name is invalid: "/Some---/redacted--path--here--/RedactedFolderName/Redacted ? redacted.extension". java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: Redacted ? redacted.extension]
      	at com.ibm.team.build.internal.scm.SourceControlUtility.updateFileCopyArea(SourceControlUtility.java:834)
      	at com.ibm.team.build.internal.scm.SourceControlUtility.updateFileCopyArea(SourceControlUtility.java:499)
      	at com.ibm.team.build.internal.hjplugin.rtc.BackwardCompatibilityUtilFor701.invokeUpdateCopyFileArea(BackwardCompatibilityUtilFor701.java:117)
      	at com.ibm.team.build.internal.hjplugin.rtc.RepositoryConnection.load(RepositoryConnection.java:999)
      	at com.ibm.team.build.internal.hjplugin.rtc.RTCFacade.load(RTCFacade.java:565)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.ibm.team.build.internal.hjplugin.RTCFacadeFactory$RTCFacadeWrapper.invoke(RTCFacadeFactory.java:128)
      	at com.ibm.team.build.internal.hjplugin.RTCLoadTask.invoke(RTCLoadTask.java:209)
      	at com.ibm.team.build.internal.hjplugin.RTCLoadTask.invoke(RTCLoadTask.java:37)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3313)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:211)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      	at hudson.remoting.Request$2.run(Request.java:375)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:73)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Contains : 0 The following resource name is invalid: "/Some---/redacted--path--here--/RedactedFolderName/Redacted ? redacted.extension".
      java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: Redacted ? redacted.extension
      	at sun.nio.fs.UnixPath.encode(UnixPath.java:147)
      	at sun.nio.fs.UnixPath.<init>(UnixPath.java:71)
      	at sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:281)
      	at sun.nio.fs.AbstractPath.resolve(AbstractPath.java:53)
      	at com.ibm.team.filesystem.client.internal.load.MergeLoadMutator.isValidResourceName(MergeLoadMutator.java:1227)
      	at com.ibm.team.filesystem.client.internal.load.MergeLoadMutator.load(MergeLoadMutator.java:608)
      	at com.ibm.team.filesystem.client.internal.load.MergeLoadMutator.execute(MergeLoadMutator.java:379)
      	at com.ibm.team.filesystem.client.internal.operations.FileSystemOperation.run(FileSystemOperation.java:99)
      	at com.ibm.team.filesystem.client.internal.operations.LoadOperation.load(LoadOperation.java:1272)
      	at com.ibm.team.filesystem.client.internal.operations.LoadOperation$1.run(LoadOperation.java:717)
      	at com.ibm.team.filesystem.client.internal.SharingManager.runWithinFileSystemLock(SharingManager.java:959)
      	at com.ibm.team.filesystem.client.internal.operations.FileSystemOperation.runWithinFileSystemLock(FileSystemOperation.java:174)
      	at com.ibm.team.filesystem.client.internal.operations.FileSystemOperation.runWithinFileSystemLock(FileSystemOperation.java:154)
      	at com.ibm.team.filesystem.client.internal.operations.LoadOperation.execute(LoadOperation.java:755)
      	at com.ibm.team.filesystem.client.internal.operations.FileSystemOperation.run(FileSystemOperation.java:99)
      	at com.ibm.team.build.internal.scm.SourceControlUtility.updateFileCopyArea(SourceControlUtility.java:827)
      	at com.ibm.team.build.internal.scm.SourceControlUtility.updateFileCopyArea(SourceControlUtility.java:499)
      	at com.ibm.team.build.internal.hjplugin.rtc.BackwardCompatibilityUtilFor701.invokeUpdateCopyFileArea(BackwardCompatibilityUtilFor701.java:117)
      	at com.ibm.team.build.internal.hjplugin.rtc.RepositoryConnection.load(RepositoryConnection.java:999)
      	at com.ibm.team.build.internal.hjplugin.rtc.RTCFacade.load(RTCFacade.java:565)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.ibm.team.build.internal.hjplugin.RTCFacadeFactory$RTCFacadeWrapper.invoke(RTCFacadeFactory.java:128)
      	at com.ibm.team.build.internal.hjplugin.RTCLoadTask.invoke(RTCLoadTask.java:209)
      	at com.ibm.team.build.internal.hjplugin.RTCLoadTask.invoke(RTCLoadTask.java:37)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3313)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:211)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      	at hudson.remoting.Request$2.run(Request.java:375)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:73)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      

      The file is valid, it was checked into RTC without any complaint, and it's possible to scm load a workspace containing the file without a problem using the RTC CLI; it's only the Jenkins teamconcert-plugin that seems to be unable to handle the non-ASCII character.
      e.g. this is a (clipped & redacted) screenshot of a browser using RTC's web-ui to explore the folder that contains the problem file:

      What I would expect is that the file to be loaded without error and arrive with its filename intact.
      Instead, something seems to be turning the "á" into a "?" and then declaring it to be invalid.

            Unassigned Unassigned
            pjdarton pjdarton
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: