Uploaded image for project: 'Migration Platform'
  1. Migration Platform
  2. MIG-2037

JCMA Preflights: JCMA pre-flight check fails to detect blocked URLs by firewalls

XMLWordPrintable

    • 5
    • Severity 3 - Minor
    • 8

      Issue Summary

      • The JCMA pre-flight check is unable to detect blocked URL  by firewalls on Data Center instances.
      • This can lead to migration failures if users are unaware of the blocked URLs. The workaround is to manually whitelist all required URLs before running JCMA.

      This is reproducible on Data Center:  (yes) / (no) - Yes 

      Steps to Reproduce

      1. Access the server and block https://api-private.atlassian.com which needs to be whitelisted before running JCMA as per the article.

      2. Develop a new migration plan.

      3. Select the new cloud site. / Refresh the token

      OR

      2. Create a new migration plan

      3. select the projects and other fields and select Next

       

      Expected Results

      • Pre-flight check should run the network preflight check and give us the error if the url is blocked

      Actual Results

      The below error is thrown in the atlassian-jira-migration.log file:

      2024-09-26 16:02:55,598 Caesium-2-4 WARN ServiceRunner     [jira.migration.analytics.AnalyticsClient] AnalyticsClient failed to send a request to server com.atlassian.jira.migration.httpclient.exceptions.HttpCommunicationException: An error occurred when requesting against resource https://api-private.atlassian.com/migration/analytics/jiraMigration/event: api-private.atlassian.com     at com.atlassian.jira.migration.httpclient.exceptions.ExceptionsKt.communicationError(Exceptions.kt:15) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.httpclient.AbstractPluginHttpClient.execute(AbstractPluginHttpClient.kt:76) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.httpclient.AbstractPluginHttpClient.execute(AbstractPluginHttpClient.kt:60) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.analytics.AnalyticsClient.execute(AnalyticsClient.kt:82) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.analytics.AnalyticsClient.sendEvents(AnalyticsClient.kt:63) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.analytics.AnalyticsEventDispatcher$sendEventAndClean$3.invoke(AnalyticsEventDispatcher.kt:83) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.analytics.AnalyticsEventDispatcher$sendEventAndClean$3.invoke(AnalyticsEventDispatcher.kt:82) ~[plugin.9378816707056339085.download.jar:?]     at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.analytics.AnalyticsEventDispatcher.sendEventAndClean(AnalyticsEventDispatcher.kt:118) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.analytics.AnalyticsEventDispatcher.sendEventAndClean(AnalyticsEventDispatcher.kt:73) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.jira.migration.analytics.AnalyticsEventDispatcher.runJob(AnalyticsEventDispatcher.kt:60) ~[plugin.9378816707056339085.download.jar:?]     at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:134) ~[?:?]     at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:106) ~[?:?]     at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:90) ~[?:?]     at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:500) ~[?:?]     at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:495) ~[?:?]     at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJobWithRecoveryGuard(CaesiumSchedulerService.java:519) ~[?:?]     at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:415) ~[?:?]     at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:66) ~[?:?]     at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:60) ~[?:?]     at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:35) ~[?:?]     at java.lang.Thread.run(Thread.java:829) ~[?:?] Caused by: java.net.UnknownHostException: api-private.atlassian.com     at java.net.InetAddress$CachedAddresses.get(InetAddress.java:797) ~[?:?]     at java.net.InetAddress.getAllByName0(InetAddress.java:1524) ~[?:?]     at java.net.InetAddress.getAllByName(InetAddress.java:1382) ~[?:?]     at java.net.InetAddress.getAllByName(InetAddress.java:1306) ~[?:?]     at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:112) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.execchain.ServiceUnavailableRetryExec.execute(ServiceUnavailableRetryExec.java:85) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.14.jar:4.5.14]     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.14.jar:4.5.14]     at com.atlassian.jira.migration.httpclient.AbstractPluginHttpClient.execute(AbstractPluginHttpClient.kt:71) ~[plugin.9378816707056339085.download.jar:?]     ... 20 more

      Workaround

      • Currently, the only solution is to follow the article and manually whitelist all required URLs before running JCMA.

      Impact:

      This bug can lead to migration failures if users are unaware of the blocked URLs. It also creates a confusing experience with the pre-flight check not providing accurate feedback.

      Proposed Fix:

      • Modify the JCMA pre-flight check to actively test connectivity with essential URLs or Modify the flow of network check before starting the migration
      • Upon encountering a blocked URL, the pre-flight check should display a clear and actionable error message for the user. This message should explain the issue and suggest whitelisting the blocked URL(s).

              e0f77baac4e2 Hung Gia Dien
              8fd6bdb2c853 Ismail Shaikh
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: