In an environment where Tableau Server is configured with an external repository and external file store, attempting to restore a production backup (e.g., to a staging environment) using the "tsm maintenance snapshot-backup restore" command fails.
The process fails at the 55% - Restoring database failed. step, and the following "RuntimeException" is recorded in the "backuprestore_node1-0.log" file:
java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Problem deserializing 'setterless' property 'userConfig': get method returned null at [Source: (File); line: 1, column: 355] (through reference chain: com.tableausoftware.pgsql.PgsqlBackupMetadata["postgresRoles"]->java.util.HashSet[1]->com.tableausoftware.pgsql.external.PostgresRole["userConfig"])
This issue occurs because the source Tableau Server external repository (PostgreSQL) contains a custom role configuration that the Tableau Server backup process cannot interpret correctly.
Specifically, if a custom role created for monitoring purposes (e.g., the "datadog" role) is a MEMBER OF a built-in PostgreSQL role (e.g., the "pg_monitor" role), the metadata file within the backup ("pg_backup_metadata.json") is generated in a format that the restore process cannot handle.
Note: This resolution modifies PostgreSQL role permissions for third-party application users (e.g., datadog) that are not managed by Tableau Server. Please consult your database administrator (DBA) or the relevant third-party application team before making this change, as it may affect their monitoring or integration functionality.
The solution is to revoke the problematic role membership in the production (source) external PostgreSQL database before taking the backup.
REVOKE pg_monitor FROM datadog;
tsm maintenance snapshot-backup prepare --include-pg-backup
tsm maintenance snapshot-backup restore
Additional information:
If a third-party application monitoring user (like "datadog") requires permissions to the Repository(PostgreSQL) database, it is recommended to GRANT the minimum necessary permissions individually (e.g., SELECT ON pg_stat_database) instead of making the role a MEMBER OF a built-in super-role like "pg_monitor". This configuration will not interfere with the Tableau Server backup and restore process.
005132439

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.