After a successful upgrade, some or all backgrounders on some or all nodes will not start and persistently remain in a bad state even after restarts/reboots.
The post-upgrade restart job times out with a message similar to the following in tabadmincontroller_node1-0.log:
2021-06-29 19:39:27.423 -0500 pool-21-thread-1 : INFO com.tableausoftware.tabadmin.webapp.impl.status.ServiceStatusWatcher - 30 services have reached their expected state 2021-06-29 19:39:27.423 -0500 pool-21-thread-1 : INFO com.tableausoftware.tabadmin.webapp.impl.status.ServiceStatusWatcher - node1 has 1 service that isn't running: backgrounder_0.20212.21.0610.0336 (deployment state: ENABLED, process status: DOWN) 2021-06-29 19:39:28.665 -0500 pool-22-thread-1 : ERROR com.tableausoftware.tabadmin.webapp.asyncjobs.AsyncJobService - Timed out after 1800 seconds running job 84 of type StartServerJob java.util.concurrent.TimeoutException: null
Around that same time in tabadminagent_node1-0.log we see:
2021-06-29 19:37:28.469 -0500 StatusRequestDispatcher-1-request : WARN com.tableausoftware.service.status.BackgrounderStatusFactory - Unexpected HTTP error response (404): 2021-06-29 19:37:28.469 -0500 StatusRequestDispatcher-1 : INFO com.tableausoftware.tabadmin.agent.status.ServiceStatusRequestRunner - Posting status update for backgrounder_0: DOWN, detail message: Unexpected HTTP error response (404):
The backgrounder_node1-0.log file, meanwhile, is a steady stream of this class path resource cannot be opened because it does not exist error:
2021-06-29 19:28:14.221 -0500 (,,,,,,) main : ERROR org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.tableausoftware.backgrounder.config.AppConfig]; nested exception is java.io.FileNotFoundException: class path resource [com/tableau/messagebus/config/IConfiguration.class] cannot be opened because it does not exist
02-Jul-2021 02:12:12.441 SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.tableausoftware.backgrounder.config.AppConfig]; nested exception is java.io.FileNotFoundException: class path resource [com/tableau/messagebus/config/IConfiguration.class] cannot be opened because it does not exist
001474376

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.