-
Bug
-
Resolution: Fixed
-
Low
-
4.0.4, 4.1.0
-
None
Summary
The HipChat plugin connection fails when using SQL Server database in the following scenarios:
- when upgrading to Bitbucket server 4.1.0 or 4.0.4
- when installing Bitbucket server 4.1.0 or 4.0.4
Environment
The issue only occurs when Bitbucket is connected to a SQL Server database
Steps to Reproduce
- Install/Upgrade Bitbucket server 4.1.0 or 4.0.4
- Connect Bitbucket Server to SQL Server (this only applies for new installations)
- Install and configure the HipChat for Bitbucket Cloud integration (note: this step is valid also for a Bitbucket server installation)
Expected Results
The connection to HipChat is created successfully.
Actual Results
The below exception is thrown in the atlassian-bitbucket.log file:
WARN [http-nio-7990-exec-4] admin @1TDQ37Jx692x78x1 1r97yov 0:0:0:0:0:0:0:1 "POST /rest/hipchat/integration/latest/installation/complete HTTP/1.1" c.a.p.h.rest.HipChatLinkResource null
Notes
In order to confirm, that this is the exact issue you are experiencing, please proceed as follows.
- Enable the HipChat plugin debug log level from Bitbucket server using the REST API (as shown in first command below):
# To set the HipChat plugin to DEBUG $ curl -H "Accept: application/json" -H "Content-Type: application/json" -u admin:admin -X PUT http://localhost:7990/stash/rest/api/latest/logs/logger/com.atlassian.plugins.hipchat/DEBUG # To set the HipChat plugin back to INFO $ curl -H "Accept: application/json" -H "Content-Type: application/json" -u admin:admin -X PUT http://localhost:7990/stash/rest/api/latest/logs/logger/com.atlassian.plugins.hipchat/INFO # To view the current log level: curl -H "Accept: application/json" -H "Content-Type: application/json" -u admin:admin http://localhost:7990/stash/rest/api/latest/logs/logger/com.atlassian.plugins.hipchat
- check the atlassian-bitbucket.log file for the following stacktrace
WARN [http-nio-7990-exec-4] admin @1TDQ37Jx692x78x1 1r97yov 0:0:0:0:0:0:0:1 "POST /rest/hipchat/integration/latest/installation/complete HTTP/1.1" c.a.p.h.rest.HipChatLinkResource null java.lang.reflect.UndeclaredThrowableException: null at com.sun.proxy.$Proxy1382.save(Unknown Source) ~[na:na] at com.atlassian.plugins.hipchat.link.DefaultHipChatAOLinkManager.saveNew(DefaultHipChatAOLinkManager.java:158) ~[base-hipchat-integration-plugin-api-7.0.3_1446198402000.jar:na] at com.atlassian.activeobjects.tx.TransactionalProxy.invoke(TransactionalProxy.java:60) ~[na:na] at com.atlassian.activeobjects.tx.TransactionalProxy.access$000(TransactionalProxy.java:18) ~[na:na] at com.atlassian.activeobjects.tx.TransactionalProxy$1.doInTransaction(TransactionalProxy.java:49) ~[na:na] at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:21) ~[sal-core-3.0.5.jar:na] at com.atlassian.stash.internal.sal.spi.HostContextAccessorImpl.doInTransaction(HostContextAccessorImpl.java:54) ~[bitbucket-platform-4.0.4.jar:na] at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:30) ~[atlassian-plugins-core-4.0.4.jar:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) ~[na:na] at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:18) ~[sal-core-3.0.5.jar:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) ~[na:na] at com.atlassian.activeobjects.internal.SalTransactionManager.inTransaction(SalTransactionManager.java:42) ~[na:na] at com.atlassian.activeobjects.internal.AbstractLoggingTransactionManager.doInTransaction(AbstractLoggingTransactionManager.java:16) ~[na:na] at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.executeInTransaction(EntityManagedActiveObjects.java:198) ~[na:na] at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects.executeInTransaction(TenantAwareActiveObjects.java:331) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) ~[na:na] at com.atlassian.activeobjects.tx.TransactionalProxy.executeInTransaction(TransactionalProxy.java:46) ~[na:na] at com.atlassian.activeobjects.tx.TransactionalProxy.invokeInTransaction(TransactionalProxy.java:39) ~[na:na] at com.atlassian.activeobjects.tx.TransactionalProxy.invoke(TransactionalProxy.java:31) ~[na:na] at com.atlassian.plugins.hipchat.link.CachedHipChatAOLinkManager.saveNew(CachedHipChatAOLinkManager.java:113) ~[base-hipchat-integration-plugin-api-7.0.3_1446198402000.jar:na] at com.atlassian.plugins.hipchat.link.HipChatLinkBuilder.create(HipChatLinkBuilder.java:198) ~[base-hipchat-integration-plugin-api-7.0.3_1446198402000.jar:na] at com.atlassian.plugins.hipchat.link.HipChatLinkBuilder.access$100(HipChatLinkBuilder.java:17) ~[base-hipchat-integration-plugin-api-7.0.3_1446198402000.jar:na] at com.atlassian.plugins.hipchat.link.HipChatLinkBuilder$1.doInTransaction(HipChatLinkBuilder.java:175) ~[base-hipchat-integration-plugin-api-7.0.3_1446198402000.jar:na] at com.atlassian.plugins.hipchat.link.HipChatLinkBuilder$1.doInTransaction(HipChatLinkBuilder.java:172) ~[base-hipchat-integration-plugin-api-7.0.3_1446198402000.jar:na] at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:21) ~[sal-core-3.0.5.jar:na] at com.atlassian.stash.internal.sal.spi.HostContextAccessorImpl.doInTransaction(HostContextAccessorImpl.java:54) ~[bitbucket-platform-4.0.4.jar:na] at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:30) ~[atlassian-plugins-core-4.0.4.jar:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) ~[na:na] at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:18) ~[sal-core-3.0.5.jar:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) ~[na:na] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) ~[na:na] at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) ~[na:na] at com.atlassian.plugins.hipchat.link.HipChatLinkBuilder.buildAndSave(HipChatLinkBuilder.java:172) ~[base-hipchat-integration-plugin-api-7.0.3_1446198402000.jar:na] at com.atlassian.plugins.hipchat.admin.DefaultInstallationService.install(DefaultInstallationService.java:204) ~[base-hipchat-integration-plugin-7.0.3_1446198402000.jar:na] at com.atlassian.plugins.hipchat.rest.HipChatLinkResource.completeInstallation(HipChatLinkResource.java:97) ~[base-hipchat-integration-plugin-7.0.3_1446198402000.jar:na] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) [applinks-plugin-5.0.1_1446198402000.jar:na] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) [applinks-plugin-5.0.1_1446198402000.jar:na] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) [applinks-plugin-5.0.1_1446198402000.jar:na] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) [applinks-plugin-5.0.1_1446198402000.jar:na] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) [applinks-plugin-5.0.1_1446198402000.jar:na] at com.atlassian.stash.internal.spring.security.StashAuthenticationFilter.doFilter(StashAuthenticationFilter.java:88) [StashAuthenticationFilter.class:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doInsideSpringSecurityChain(BeforeLoginPluginAuthenticationFilter.java:109) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:75) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:94) [atlassian-trusted-apps-core-4.2.0.jar:na] at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:67) [atlassian-oauth-service-provider-plugin-2.0.3_1446198404000.jar:na] at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:36) [analytics-client-4.2.6_1446198404000.jar:na] at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) [analytics-client-4.2.6_1446198404000.jar:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doBeforeBeforeLoginFilters(BeforeLoginPluginAuthenticationFilter.java:87) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:73) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.stash.internal.request.DefaultRequestManager.doAsRequest(DefaultRequestManager.java:85) [bitbucket-service-impl-4.0.4.jar:na] at com.atlassian.stash.internal.hazelcast.ConfigurableWebFilter.doFilter(ConfigurableWebFilter.java:38) [ConfigurableWebFilter.class:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40] ... 331 frames trimmed Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ','. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191) ~[sqljdbc-4.2.6420.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerParameterMetaData.<init>(SQLServerParameterMetaData.java:423) ~[sqljdbc-4.2.6420.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getParameterMetaData(SQLServerPreparedStatement.java:1659) ~[sqljdbc-4.2.6420.jar:na] at com.zaxxer.hikari.proxy.HikariPreparedStatementProxy.getParameterMetaData(HikariPreparedStatementProxy.java) ~[HikariCP-2.4.1.jar:na] at net.java.ao.DatabaseProvider.putNull(DatabaseProvider.java:1953) ~[na:na] at net.java.ao.EntityProxy.save(EntityProxy.java:560) ~[na:na] at net.java.ao.EntityProxy.invoke(EntityProxy.java:115) ~[na:na] ... 71 common frames omitted
Workaround
No workaround is available for this bug.