Recommended steps to diagnose and debug Confluence - Errors in logs caused by add-ons

Still need help?

The Atlassian Community is here for you.

Ask the community

This article is recommended for any customer with Atlassian server or data center products as a first step before contacting support. The article describes how to identify error messages found in log files. The example used leads to an issue with an add-on (also referred to as "plugin") that is installed in an Atlassian product, however, this will not apply to all errors (many are not plugin related). If you are well versed in analyzing log files and have confirmed that the errors you are seeing are not related to a plugin please skip this article and contact (www.support.atlassian.com).

Problem

Your Atlassian application is cluttering your logs with errors. You do not know the root cause of the problem or suspect that it may be related to an add-on.

Diagnosis

The cause of the error can likely be narrowed down using the stack trace in the log files.

About Stack Trace

A stack trace is a report of the active stack frames at the time of the error. 

The stack trace can be used to:

  • Identify which calls were made.
  • Examine the application's execution to find the source of the problem.

For example: If you see an error in the web UI, there will likely be a corresponding error stack trace in the application logs. A search for ERROR should help narrow down the entries.

Step 1: Retrieve your log files and stack trace 

If you've retrieve log files before then no explanation needed please skip to step 2. 

If this is your first time retrieving log files then you'll need to check the latest documentation on how to retrieve them. A simple way to retrieve your log files is to create a Support Zip using the Support Tools Plugin. The Support Tools Plugin is a free add-on built by Atlassian that comes preinstalled on JIRA Server, Confluence Server, Fisheye/Crucible, Bamboo Server and Bitbucket Server. For more information on the Support Tools Plugin please read the Atlassian Documentation. You can find other admin plugins on the Atlassian Marketplace (www.marketplace.atlassian.com). 

If you have Atlassian Cloud products such as JIRA Cloud, Confluence Cloud, etc. you will not be able to generate a support zip or access your log files without the assistance of Atlassian Support. Just ask and they should be able to supply you with a support zip file including your logs.

Below is an example of a portion of a log file with an error message which we will use to demonstrate the remainder of the steps to diagnose and debug your Atlassian Application. 

2015-04-09 13:59:50,801 ERROR [http-nio-7990-exec-9] @100LA9Tx839x1476x0 1ohst36 192.168.18.107:55518,0:0:0:0:0:0:0:1 "GET /mvc/error500 HTTP/1.1" c.a.s.i.web.ErrorPageController There was an unhandled exception loading [/plugins/servlet/reminderconfig]
com.atlassian.activeobjects.internal.ActiveObjectsSqlException: There was a SQL exception thrown by the Active Objects library:
Database:
	- name:Microsoft SQL Server
	- version:10.50.6000
	- minor version:50
	- major version:10
Driver:
	- name:Microsoft JDBC Driver 4.0 for SQL Server
	- version:4.0.2206.100

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'true'.
	at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.find(EntityManagedActiveObjects.java:173) ~[na:na]
	at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects.find(TenantAwareActiveObjects.java:329) ~[na:na]
	at com.company.stash.reminder.ProjectEmailServiceImpl.allEnabled(ProjectEmailServiceImpl.java:54) ~[na:na]
	at com.atlassian.activeobjects.tx.TransactionalProxy.invoke(TransactionalProxy.java:79) ~[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:63) ~[na:na]
	at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:25) ~[HostContextTransactionTemplate$1.class:na]
	at com.atlassian.stash.internal.sal.spi.HostContextAccessorImpl.doInTransaction(HostContextAccessorImpl.java:27) ~[HostContextAccessorImpl.class:na]
	at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:21) ~[HostContextTransactionTemplate.class:na]
	at com.atlassian.activeobjects.internal.SalTransactionManager.inTransaction(SalTransactionManager.java:48) ~[na:na]
	at com.atlassian.activeobjects.internal.AbstractLoggingTransactionManager.doInTransaction(AbstractLoggingTransactionManager.java:19) ~[na:na]
	at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.executeInTransaction(EntityManagedActiveObjects.java:276) ~[na:na]
	at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects.executeInTransaction(TenantAwareActiveObjects.java:383) ~[na:na]
	at com.atlassian.activeobjects.tx.TransactionalProxy.executeInTransaction(TransactionalProxy.java:57) ~[na:na]
	at com.atlassian.activeobjects.tx.TransactionalProxy.invokeInTransaction(TransactionalProxy.java:47) ~[na:na]
	at com.atlassian.activeobjects.tx.TransactionalProxy.invoke(TransactionalProxy.java:35) ~[na:na]
	at com.company.stash.reminder.ReminderConfigServlet.doGet(ReminderConfigServlet.java:116) ~[na:na]
	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) ~[na:na]
	at com.atlassian.stash.internal.spring.security.StashAuthenticationFilter.doFilter(StashAuthenticationFilter.java:86) ~[StashAuthenticationFilter.class:na]
	at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doInsideSpringSecurityChain(BeforeLoginPluginAuthenticationFilter.java:111) ~[BeforeLoginPluginAuthenticationFilter.class:na]
	at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:77) ~[BeforeLoginPluginAuthenticationFilter.class:na]
	at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:100) ~[TrustedApplicationsFilter.class:na]
	at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:69) ~[na:na]
	at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:33) ~[na:na]
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) ~[AbstractHttpFilter.class:na]
	at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doBeforeBeforeLoginFilters(BeforeLoginPluginAuthenticationFilter.java:89) ~[BeforeLoginPluginAuthenticationFilter.class:na]
	at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:75) ~[BeforeLoginPluginAuthenticationFilter.class:na]
	at com.atlassian.stash.internal.request.DefaultRequestManager.doAsRequest(DefaultRequestManager.java:84) ~[DefaultRequestManager.class:na]
	at com.hazelcast.web.WebFilter.doFilter(WebFilter.java:450) ~[WebFilter.class:3.3-RC3]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55]
	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55]
	... 287 frames trimmed
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'true'.
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285) ~[sqljdbc-4.0.2206.jar:na]
	at com.jolbox.bonecp.PreparedStatementHandle.executeQuery(PreparedStatementHandle.java:172) ~[PreparedStatementHandle.class:0.7.1.RELEASE]
	at net.java.ao.EntityManager.find(EntityManager.java:765) ~[na:na]
	at net.java.ao.EntityManager.find(EntityManager.java:675) ~[na:na]
	at net.java.ao.EntityManager.find(EntityManager.java:607) ~[na:na]
	at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.find(EntityManagedActiveObjects.java:169) ~[na:na]
	... 31 common frames omitted

Step 2: Search for ERROR 

Using the search features in your log analyzer tool of choice, search for the term "ERROR". You may get a few matches for the term so look for the first time that term shows up in the files. 

In our example, the first line shows the error. 

2015-04-09 13:59:50,801 ERROR [http-nio-7990-exec-9] @100LA9Tx839x1476x0 1ohst36 192.168.0.100:55518,0:0:0:0:0:0:0:1 "GET /mvc/error500 HTTP/1.1" c.a.s.i.web.ErrorPageController There was an unhandled exception loading [/plugins/servlet/reminderconfig]

This example shows that the error occurred on 2015-04-09 (date) at 13:59:50 (timestamp) on the http-nio-7790-exec-9 (thread).  This example also shows that the error was thrown while loading the page at /plugins/servlet/reminderconfig

We now know the when (date and timestamp), the where (thread), and the what (loading the page at /plugins/servlet/reminderconfig) that caused the error. But we still don't know why the error was thrown. 

Step 3: Search for the methods that were called that do not start with "com.atlassian" 

The next step in analyzing this stack trace is to identify methods and classes that were called when the error occurred that do not start with 'com.atlassian'. This search will narrow down if a foreign class or method contributed to the error. Note: Most (not all) of the classes used by Atlassian applications will begin with com.atlassian. 

In our example, here is a shorter list of methods and classes that contributed to the error that did not start with 'com.atlassian'. 

...
	at com.company.stash.reminder.ProjectEmailServiceImpl.allEnabled(ProjectEmailServiceImpl.java:54) ~[na:na]
...
    at com.company.stash.reminder.ReminderConfigServlet.doGet(ReminderConfigServlet.java:116) ~[na:na]
...
    at com.hazelcast.web.WebFilter.doFilter(WebFilter.java:450) ~[WebFilter.class:3.3-RC3]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55]
	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55]
...
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) ~[sqljdbc-4.0.2206.jar:na]
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285) ~[sqljdbc-4.0.2206.jar:na]
	at com.jolbox.bonecp.PreparedStatementHandle.executeQuery(PreparedStatementHandle.java:172) ~[PreparedStatementHandle.class:0.7.1.RELEASE]
	at net.java.ao.EntityManager.find(EntityManager.java:765) ~[na:na]
	at net.java.ao.EntityManager.find(EntityManager.java:675) ~[na:na]
	at net.java.ao.EntityManager.find(EntityManager.java:607) ~[na:na]

This example shows 2 foreign classes that were called by a plugin (com.company.stash.reminder) both of which contain invalid or missing database values (see "~[na:na]" next to the class).

...
	at com.company.stash.reminder.ProjectEmailServiceImpl.allEnabled(ProjectEmailServiceImpl.java:54) ~[na:na]
...
    at com.company.stash.reminder.ReminderConfigServlet.doGet(ReminderConfigServlet.java:116) ~[na:na]

This example also shows that the only other classes called with completely missing values are standard methods and classes bundled from JAVA libraries. 

...
	at net.java.ao.EntityManager.find(EntityManager.java:765) ~[na:na]
	at net.java.ao.EntityManager.find(EntityManager.java:675) ~[na:na]
	at net.java.ao.EntityManager.find(EntityManager.java:607) ~[na:na]

The JAVA classes with invalid or missing database values follow the classes called by the plugin. 

We now have a hypothesis for why the error was thrown. The plugin (com.company.stash.reminder) tried to insert invalid data into the database using JAVA classes. 

Step 4: Test your hypothesis

In our example, we hypothesize that invalid data provided by a plugin is the root cause for the error. The quickest way to confirm whether or not the root cause of the issue is a plugin is to enable the Atlassian application in safe mode and try to reproduce the error. 

Safe mode can be enabled by following the "Disabling or enabling all add-ons (using Safe Mode)" section on Disabling and enabling add-ons. Once you've enabled the Application in Safe Mode try enabling the single add-on that caused the error (in our example com.company.stash.reminder). If the error messages appear in the log files again you've confirmed that the root cause is in fact a 3rd party add-on.  (warning) Safe mode will turn off all additional funcitonality provided by other add-ons. You will want to plan for this test with your users before starting. 

If your hypothesis does not involve a plugin you'll want to raise an issue with Atlassian Support (www.support.atlassian.com) for further testing and debugging. 

Cause

Errors with plugins

Errors for plugins can occur for all different types of reasons. Many common reasons why errors occur for third party plugins include:

  • You may have upgraded your Atlassian Application and the add-on is now incompatible with your current version. 
  • You may have introduced a new add-on that is using common libraries as the add-on that is causing the error (code-clashing). 
  • You may have changed configuration with you Atlassian Application (permissions, workflows, custom fields) that the plugin is calling which no longer exists or has introduced new data which is clashing with the configuration of the add-on. 
  • You may be using the add-on in new way that was not intended nor designed for by the third party developer. 

Date and timestamps will help you identify if the error was caused by one of the above scenarios. 

Resolution

Step 1: Uninstall and re-install the plugin

tip/resting Created with Sketch.

Try this first!

Often, issues with plugins will self resolve if you uninstall and reinstall the plugin. 

In most cases you can uninstall and reinstall plugins using the Universal Plugin Manager. (Read the how-to guide here: Uninstalling apps).

If the Universal Plugin Manager is not working, you can manually remove malfunctioning add-ons using the installed-plugins directory. (Read the how-to guide for manual removal here: How to manually remove malfunctioning add-ons.) 

Plugins versus add-ons

Some of our documentation may refer to plugins as add-ons. Please note these terms are synonymous. 

Step 2: Contact the plugin developer

We recommend that in all cases involving third party add-ons you reach out to the plugin developer for further assistance. To find support details for your add-on search the Atlassian Marketplace (www.marketplace.atlassian.com) for the add-on details page where you will find the Support tab with links to vendor documentation and their support channel (see example Support Details page below). To get assistance from that vendor please click the "Get Support" green button. 

Unsupported plugins do not have the 'Get Support' button

 If the add-on is , that typically means the developer who created and manages the add-on has opt'd not to provide customer support for that add-on. The only alternative we can provide in this scenario is to raise a question on our free online community at (www.answers.atlassian.com). Unfortunately, we cannot guarantee response times or resolution from that free online community.

Important

Atlassian does not provide support for 3rd party add-ons developed by third party vendors. We also cannot guarantee response times or resolution from these 3rd Party Vendors. If you have contact a third party plugin vendor and have not received a response we recommend you leave a review on the marketplace for that specific plugin. 

Last modified on Feb 17, 2022

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.