Uploaded image for project: 'FishEye'
  1. FishEye
  2. FE-7330

Change command used to test connection against Mercurial repositories

    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

      Issue Summary

      It would be nice to change the command used to test connection against Mercurial repositories to prevent a (false-positive) timeout during the repository set up. Fisheye is currently cloning the first changeset 0 in the Mercurial repository to a temporary folder in order to validate/ test the connection:

      hg --config ui.verbose=false clone -r 0 -e "/atlassian/apps/fisheye/bin/fe-ssh.sh" --noupdate ssh://your-mercurial-server/repository /atlassian/data/fisheye/var/tmp/hg_test_clone_1605702252133
      

      This works fine most part of the time unless the first changeset in the repository is big and takes over 60 seconds to clone. There's 60-second timeout imposed by Fisheye in the test connection process.

      Steps to Reproduce

      1. Connect to a Mercurial repository with a relatively big changeset # 0 (e.g. 10000 files added).
      2. Configure a Mercurial repository inside Fisheye and attempt a connection test.

      Expected Results

      Connection is successful because you are able to connect to the repository.

      Actual Results

      Test connection fails with the following errors:

      2020-11-18 12:24:12,145 DEBUG [qtp2073640037-375 xxx] fisheye DvcsProcessMonitor-onBeforeStart - Starting process: hg --config ui.verbose=false clone -r 0 -e "/atlassian/apps/fisheye/bin/fe-ssh.sh" --noupdate ssh://... /atlassian/data/fisheye/var/tmp/hg_test_clone_1605702252133
      2020-11-18 12:25:12,254 DEBUG [qtp2073640037-375 xxx] fisheye DvcsProcessMonitor-onAfterFinished - Finished process: hg --config ui.verbose=false clone -r 0 -e "/atlassian/apps/fisheye/bin/fe-ssh.sh" --noupdate ssh://... /atlassian/data/fisheye/var/tmp/hg_test_clone_1605702252133 took 60109ms
      ...
      2020-11-18 12:25:14,927 WARN  [qtp2073640037-375 xxx] fisheye IOHelper-recursiveDeleteImpl - problem deleting directory /atlassian/data/fisheye/var/tmp/hg_test_clone_1605702252133/.hg/store/data/...
      ...
      2020-11-18 12:25:14,966 ERROR [qtp2073640037-375 xxx] fisheye RepositoryAdminRpcServiceImpl-testRepositoryConnection - Error testing connection.
      
      com.atlassian.fisheye.spi.admin.services.RepositoryConfigException: com.cenqua.fisheye.config.ConfigException: Error talking to repository:
      
              at com.atlassian.fisheye.spi.admin.impl.DefaultRepositoryAdminService.testConnectionFor(DefaultRepositoryAdminService.java:966) [fisheye.jar:?]
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [?:1.8.0_265]
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [?:1.8.0_265]
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.8.0_265]
              at java.lang.reflect.Method.invoke(Method.java:498) [?:1.8.0_265]
              at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) [spring-aop-4.0.9.RELEASE.jar:4.0.9.RELEASE]
              at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) [spring-aop-4.0.9.RELEASE.jar:4.0.9.RELEASE]
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.0.9.RELEASE.jar:4.0.9.RELEASE]
              at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85) [spring-aop-4.0.9.RELEASE.jar:4.0.9.RELEASE]
              at com.cenqua.crucible.hibernate.WithSessionAspect.doCloseSession(WithSessionAspect.java:56) [fisheye.jar:?]
              at sun.reflect.GeneratedMethodAccessor146.invoke(Unknown Source) [?:?]
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.8.0_265]
              at java.lang.reflect.Method.invoke(Method.java:498) [?:1.8.0_265]
              ...
      Caused by: com.cenqua.fisheye.config.ConfigException: Error talking to repository:
      
      
              at com.atlassian.fisheye.hg.HgScmConfig.testConnection(HgScmConfig.java:131) [fisheye.jar:?]
              at com.cenqua.fisheye.RepositoryConfig.testConnection(RepositoryConfig.java:390) [fisheye.jar:?]
              at com.atlassian.fisheye.spi.admin.impl.DefaultRepositoryAdminService.testConnectionFor(DefaultRepositoryAdminService.java:964) [fisheye.jar:?]
              ... 186 more
      Caused by: com.atlassian.utils.process.ProcessException: While executing: "hg --config ui.verbose=false clone -r 0 -e "/atlassian/apps/fisheye/bin/fe-ssh.sh" --noupdate ssh://... /atlassian/data/fisheye/var/tmp/hg_test_clone_1605702252133"
              at com.atlassian.fisheye.dvcs.DvcsScmConfig.executeCommand(DvcsScmConfig.java:142) [fisheye.jar:?]
              at com.atlassian.fisheye.hg.HgScmConfig.testConnection(HgScmConfig.java:125) [fisheye.jar:?]
              ... 188 more
      Caused by: com.atlassian.utils.process.ProcessTimeoutException: process timed out
              at com.atlassian.utils.process.ExternalProcessImpl.wrapUpProcess(ExternalProcessImpl.java:506) [atlassian-processutils-1.5.14.jar:?]
              at com.atlassian.utils.process.ExternalProcessImpl.finish(ExternalProcessImpl.java:423) [atlassian-processutils-1.5.14.jar:?]
              at com.atlassian.utils.process.ExternalProcessImpl.execute(ExternalProcessImpl.java:378) [atlassian-processutils-1.5.14.jar:?]
              at com.atlassian.fisheye.dvcs.DvcsScmConfig.executeCommand(DvcsScmConfig.java:139) [fisheye.jar:?]
              ... 189 more
      2020-11-18 12:25:15,004 ERROR [qtp2073640037-375 xxx] fisheye RepositoryAdminRpcServiceImpl-testRepositoryConnection - Connection failed.
      

      Notes

      This does not affect the indexing process for Mercurial repositories i.e. despite the connect test failure you should be able to add your Mercurial repository to Fisheye and start indexing. The 60-second timeout is only imposed for connection testing.

      Repository indexing is a different process and has a 60-minute timeout (default) as opposed to 60 seconds. Besides if the indexing process times out after 60 minutes (1 hour) it is possible to increase the timeout limits inside the repository configuration > SCM Details > Mercurial Options.

      Suggestion

      I'd suggest changing the command we use to test connection to a Mercurial repository to something lighter and less error prone to avoid this problem. We could use hg identify -r 0 instead of hg clone -r 0. The identify command will connect to the repository and get the commit number for the first changeset. This should be enough to test connection and make sure the user is able to access the repository without having to perform a test clone.

            [FE-7330] Change command used to test connection against Mercurial repositories

            Atlassian Update – 8 July 2024

            Hi everyone,

            We have recently reviewed this issue and the overall interest in the problem. As the issue hasn't collect votes, watchers, comments, or support cases from many customers during its lifetime, it's very low on our priority list, and will not be fixed in the foreseeable future. That's why we've decided to resolve it as Not Being Considered.

            Although we're aware the issue is still important to those of you who were involved in the conversations around it, we want to be clear in managing your expectations. The Fisheye&Crucible team is focusing on issues that have broad impact and high value, reflected by the number of comments, votes, support cases, and customers interested. Please consult the Implementation of New Features Policy for more details.

            We understand how disappointing this decision may be, but we hope you'll appreciate our transparent approach and communication. Atlassian will continue to watch this issue for further updates, so please feel free to share your thoughts in the comments.

            Kind regards
            Marek Parfianowicz
            Principal Engineer

            Marek Parfianowicz added a comment - Atlassian Update – 8 July 2024 Hi everyone, We have recently reviewed this issue and the overall interest in the problem. As the issue hasn't collect votes, watchers, comments, or support cases from many customers during its lifetime, it's very low on our priority list, and will not be fixed in the foreseeable future. That's why we've decided to resolve it as Not Being Considered . Although we're aware the issue is still important to those of you who were involved in the conversations around it, we want to be clear in managing your expectations. The Fisheye&Crucible team is focusing on issues that have broad impact and high value, reflected by the number of comments, votes, support cases, and customers interested. Please consult the Implementation of New Features Policy for more details. We understand how disappointing this decision may be, but we hope you'll appreciate our transparent approach and communication. Atlassian will continue to watch this issue for further updates, so please feel free to share your thoughts in the comments. Kind regards Marek Parfianowicz Principal Engineer

            An alternative solution

            Make connection test timeout configurable, e.g. via JVM property.

            Marek Parfianowicz added a comment - An alternative solution Make connection test timeout configurable, e.g. via JVM property .

              Unassigned Unassigned
              brosa Bruno Rosa
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: