Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-64566

Mantis importer unnecessarily requires InnoDB on source MySQL server

XMLWordPrintable

    • 2
    • We collect Jira feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

      NOTE: This suggestion is for JIRA Server. Using JIRA Cloud? See the corresponding suggestion.

      Summary

      The JIRA Importer enforces a connection to a MySQL Database that uses the InnoDB Engine. This can not be configured from the "Advanced" JDBC Settings.

      Steps to Reproduce

      Error occurs When attempting to connect to Mantis when using the JIRA Importer tool:

      1. Log into JIRA and goto the External System Import page.
      2. Select: Import from Mantis
      3. Attempt to connect to a MyISAM database
      4. Observe in the atlassian-jira.log the following exception:
        com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        	at java.lang.reflect.Constructor.newInstance(Unknown Source)
        	at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
        	at com.mysql.jdbc.Util.getInstance(Util.java:372)
        	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:958)
        	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
        	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
        	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
        	at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2149)
        	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2074)
        	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
        	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)  <+3>
        	at java.lang.reflect.Constructor.newInstance(Unknown Source)
        	at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
        	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
        	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
        	at com.atlassian.jira.plugins.importer.web.JdbcConnection.getConnection(JdbcConnection.java:91)
        	at com.atlassian.jira.plugins.importer.web.JdbcConnection.validateConnection(JdbcConnection.java:235)
        	at com.atlassian.jira.plugins.importer.web.AbstractDatabaseImporterController.createImportProcessBean(AbstractDatabaseImporterController.java:54)
        	at com.atlassian.jira.plugins.importer.web.ImporterSetupPage.doExecute(ImporterSetupPage.java:104)  <+1> (ActionSupport.java:165)
        	at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:88)
        	at com.atlassian.jira.plugins.importer.web.ImporterProcessSupport.execute(ImporterProcessSupport.java:153)  <+7> (DefaultInterceptorChain.java:39) (NestedInterceptorChain.java:31) (ChainedInterceptor.java:16) (DefaultInterceptorChain.java:35) (GenericDispatcher.java:225) (GenericDispatcher.java:154) (JiraWebworkActionDispatcher.java:152)
        	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)  <+2> (ApplicationFilterChain.java:303) (ApplicationFilterChain.java:208)
        	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)  <+14> (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (XContentTypeOptionsNoSniffFilter.java:22) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (HeaderSanitisingFilter.java:44) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70)
        	at com.atlassian.jira.tzdetect.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:39)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.jira.baseurl.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:38)  <+8> (AbstractHttpFilter.java:31) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) (ContextFilter.java:25) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.servicedesk.internal.web.RedirectExternalCustomerToPortalFilter.doFilter(RedirectExternalCustomerToPortalFilter.scala:18)  <+4> (AbstractHttpFilter.java:31) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36)  <+23> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AccessLogFilter.java:103) (AccessLogFilter.java:87) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (XsrfTokenAdditionRequestFilter.java:54) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (SiteMeshFilter.java:181) (SiteMeshFilter.java:85) (SitemeshPageFilter.java:124) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70)
        	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)  <+22> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (SecurityFilter.java:239) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (TrustedApplicationsFilter.java:100) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (BaseLoginFilter.java:172) (JiraLoginFilter.java:70) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70) (OAuthFilter.java:79) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)  <+13> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ProfilingFilter.java:99) (JIRAProfilingFilter.java:19) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractJohnsonFilter.java:71) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208)
        	at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
        	at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
        	at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)  <+10> (UrlRewriteFilter.java:394) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (GzipFilter.java:82) (GzipFilter.java:59) (JiraGzipFilter.java:55) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70)
        	at com.atlassian.analytics.client.filter.JiraAnalyticsFilter.doFilter(JiraAnalyticsFilter.java:40)
        	at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
        	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)  <+40> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractCachingFilter.java:33) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractEncodingFilter.java:41) (AbstractHttpFilter.java:31) (PathMatchingEncodingFilter.java:49) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (JiraStartupChecklistFilter.java:79) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (MultipartBoundaryCheckFilter.java:41) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (JiraFirstFilter.java:60) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (StandardWrapperValve.java:220) (StandardContextValve.java:122) (AuthenticatorBase.java:501) (StandardHostValve.java:171) (ErrorReportValve.java:103) (StandardEngineValve.java:116) (AccessLogValve.java:950) (CoyoteAdapter.java:408) (AbstractHttp11Processor.java:1070) (AbstractProtocol.java:611) (JIoEndpoint.java:314)
        	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        	at java.lang.Thread.run(Unknown Source)
        Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown storage engine 'InnoDB'
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        	at java.lang.reflect.Constructor.newInstance(Unknown Source)
        	at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
        	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)
        	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835)
        	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771)
        	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)
        	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
        	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2531)
        	at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1618)
        	at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)
        	at com.mysql.jdbc.ConnectionImpl.setSessionVariables(ConnectionImpl.java:5070)
        	at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3246)
        	at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2112)
        	... 204 more
        	

      Expected Results

      There should be a way to set the Engine type to MyISAM when importing issues. While it is important for JIRA to enforce the InnoDB Engine, this should not be the case when importing information from an External System.

      Actual Results

      When connecting to the Mantis Server the atlassian-jira.log shows the connection string being used:

      2015-01-01 01:01:01,001 http-bio-8080-exec-1 INFO admin 100x8908x1 idjmdi 192.168.0.2 /secure/admin/ImporterSetupPage.jspa [plugins.importer.web.JdbcConnection] Connecting to JDBC using connection string: jdbc:mysql://localhost:3306/mantistest?useUnicode=true&characterEncoding=UTF8&sessionVariables=storage_engine=InnoDB&autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=convertToNull&useCursorFetch=true&defaultFetchSize=100
      

      Workaround

      The Importer will not able to work until the InnoDB engine is enabled the MySQL server. Therefore, enable the InnoDB Engine as per database vendor instructions.

              Unassigned Unassigned
              Anonymous Anonymous
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: