- Concept
- Version ยท 6.0
- Manage
Troubleshoot operation reporting
Last updated: September 29, 2026
Common Liquibase Server issues and solutions.
Debug mode
When troubleshooting, enable debug mode to print detailed [LB-PLATFORM-DEBUG] output to the console:
Debug output includes HTTP request details, payload sizes, response codes, and any errors the extension encounters. Disable it after troubleshooting by unsetting the variable or setting it to false.
Extension not loading
The extension uses Java's ServiceLoader mechanism to register itself with Liquibase at startup. If the extension is not loading, no data will be captured and no [LB-PLATFORM] output will appear.
JAR not present. Requires Liquibase Secure 6.0 or later. Confirm the extension is present:
loadingMultiple conflicting JARs. Remove any older versions of the extension JAR from the
internal/extensionsdirectory.ServiceLoader registration missing. If you built the JAR yourself, ensure it includes the
META-INF/services/liquibase.logging.mdc.MdcManagerregistration file.Extension disabled. Verify
LIQUIBASE_PLATFORM_ENABLEDis not set tofalse:echo $LIQUIBASE_PLATFORM_ENABLEDUnknown load failure. Enable debug mode to see detailed startup output:
loading
Connection errors
No data in the platform
the server reports success, but operations do not appear in the dashboard.
Connection identifier mismatch. Verify
LIQUIBASE_PLATFORM_CONNECTION_IDENTIFIERexactly matches the Identifier field of a registered connection in the dashboard.Wrong workspace. Verify the auth token belongs to the correct workspace.
Stale view. Refresh the dashboard. Operations typically appear within seconds of the command completing.
Filtered view hiding results. Check the All Operations dashboard instead of a filtered view.
Connection refused
Connection refused errors occur when the server tries to send data.
Incorrect or unreachable API URL. Verify the API URL is correct and reachable:
curl http://your-platform-host:3000/api/healthFirewall blocking traffic. Check firewall rules allow traffic from the CLI machine to the API.
Docker network misconfiguration. If running in Docker, ensure containers are on the same network.
Timeout errors
Timeout errors occur, especially with large operations.
Slow network response. Enable debug mode to see detailed timing:
loadingHigh network latency. Check network latency between the CLI machine and the API.
Report errors
A renamed or relocated report does not appear
A report generated under a custom name or written outside the default directory is still uploaded. The extension reads the report name and path Liquibase resolved for the command rather than assuming the defaults, and it looks for the exact file name instead of matching the default timestamp pattern.
If a report is still missing, check these in order:
Confirm report capture is on. It is enabled by default, and
liquibase.platform.captureReportsturns it off.Check whether
liquibase.platform.reportsPathis set. It overrides the path Liquibase resolved, so a stale value sends the extension to the wrong directory.Run with
liquibase.platform.debugenabled and read the[LB-PLATFORM-DEBUG]line reporting which directory was searched.
Note: In Liquibase Secure 6.0.0, the extension cannot read a report stored in Amazon S3 or Azure Storage. When the report path starts with s3:// or az://, the debug line shows the path with the scheme collapsed, for example s3:/bucket/reports, and no report is uploaded. Point the report path at a local directory instead.
Note: Setting liquibase.platform.reportsPath to match --report-path is no longer necessary. Earlier releases required both, and the duplicate value is now only an override.
Authentication errors
401 Unauthorized
401 Unauthorized responses indicate the API cannot verify the authentication token.
Token not set. Verify your token is set:
echo $LIQUIBASE_PLATFORM_API_KEYExpired or revoked token. Regenerate the token in the server web dashboard.
Malformed token value. Ensure there are no extra whitespace or newline characters in the token value.
API root errors
The liquibase.platform.apiUrl setting is the address of your server with /api on the end. Liquibase builds each URL it needs from there, so your value never ends in a resource path such as /operations/ingest.
Telling a configuration problem from a connection problem
Liquibase reports these as four different failures, so the message tells you which one you have before you start debugging the network.
A configuration problem. The message names
liquibase.platform.apiUrland every channel you can set it through, and the run stops before the command does any work.An authorization problem. A 401 or 403 response, covered under Authentication errors above. The root reached the server and the server refused the credentials.
A connectivity problem. A transport failure names the host it could not reach. The root is well formed and nothing answered.
A not-found problem. A 404 that shows the exact URL that was called. This is usually the root rather than the network, so check the two 404 entries below before looking at firewalls.
No API root is configured
When reporting is enabled and no root is set, Liquibase names the setting and every way you can set it, then stops before running the command.
Set it in one of these three places. A flag beats a system property, which beats an environment variable, which beats the properties file.
liquibase.platform.apiUrlin yourliquibase.propertiesfile.LIQUIBASE_PLATFORM_API_URLas an environment variable.--platform-api-urlon the command line.
The API root is not a usable URL
A value with no scheme, an unsupported scheme, or one that cannot be parsed is rejected while Liquibase validates your configuration, before the command begins. The message quotes the value as you set it, with any embedded credentials removed.
Include the scheme. liquibase.example.com/api is rejected, and https://liquibase.example.com/api is accepted. A trailing slash makes no difference either way.
The API root carries a query string or fragment
A root containing ? or # is rejected at configuration time. Liquibase composes an endpoint by adding the resource path to the end of your root, so a query string would swallow that path and a fragment would drop it.
Remove everything from the ? or # onward. Liquibase rejects the value rather than repairing it, because silently rearranging what you configured is the behavior this setting exists to avoid.
A 404 when the root is missing its API prefix
Liquibase cannot catch this one when it reads your configuration. A root with no API prefix is a perfectly well-formed URL, and behind a reverse proxy it might even be the correct one, so it is only wrong when the server answers.
The 404 names the setting and shows the exact URL that was called. If that URL is missing the prefix your deployment serves the API on, add it to your root. On a standard install the prefix is /api, so the root is https://liquibase.example.com/api rather than https://liquibase.example.com.
A 404 when the root still includes a resource path
This is the same 404 with the opposite cause. If your root already ends in a resource path, Liquibase adds its own on top and asks the server for a path that does not exist.
Look at the URL in the message. A doubled ending such as /api/operations/ingest/operations/ingest means the configured root still carries a resource path. Remove everything after the API prefix, so that https://liquibase.example.com/api/operations/ingest becomes https://liquibase.example.com/api.