Mirror node does not appear synchronized in the Bitbucket UI, although the log shows it as synchronized

Platform Notice: Data Center Only - This article only applies to Atlassian apps on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

This article covers how to resolve the issue of the mirror node not showing as "synchronized" in the Bitbucket UI.

Diagnosis

After upgrading a Bitbucket Data Center mirror farm, one mirror node appears as “still synchronising” in the Bitbucket UI (Mirror nodes page).

  • The mirror’s logs show that initial synchronisation completed successfully and the node was marked SYNCHRONIZED.

    2025-10-16 21:38:35,979 INFO [initial-sync-thread-pool:thread-2] c.a.b.i.m.m.f.s.InitialSyncHelper Initial Synchronization for repository with ID (12362) complete 2025-10-16 21:38:35,980 INFO [initial-sync-thread-pool:thread-2] c.a.b.i.m.m.f.s.InitialSyncHelper Repository synchronization complete. Running farm vet 2025-10-16 21:38:38,065 INFO [initial-sync-thread-pool:thread-2] c.a.b.i.m.m.f.s.InitialSyncHelper Farm vet on initial sync complete marking node SYNCHRONIZED 2025-10-16 21:38:38,072 INFO [initial-sync-thread-pool:thread-2] c.a.s.i.hazelcast.DefaultMirrorFarm Transitioned synchronizationState from METADATA_SYNCHRONIZED to SYNCHRONIZED
  • The /status REST endpoint also reports "state": "SYNCHRONIZED" with 0 synced repos GET http://<bitbucket-baseurl>/status

    {"state" : "SYNCHRONIZED", "memberCount": "3", "discovering": false, "syncedRepos": 0, "totalRepos": 0}
  • The/progress REST endpoint (as seen in the UI and HAR) reports 0 Synced repos:

    "discovering": false, "syncedRepos": 0, "totalRepos": 0

Cause

When a Bitbucket mirror starts up, it performs an initial sync. Once this initial sync completes successfully, the mirror’s database is updated with the initial sync date for each of the projects.

Example

sql> select * from AO_8E6075_MIRRORED_PROJECT; EXTERNAL_ID | ID | UPSTREAM_SETTINGS_ID | INITIAL_SYNC 23 | 1 | 0ad90136-22b0-376d-9631-9b737cc2d162 | 2025-10-21 02:16:10.697

Sometimes it may happen that this INITIAL_SYNC date may not have been set (i.e., it is NULL) when the first sync ran. Which results in mirror showing Not Synchronised in the UI.

Solution

Check the H2 database on the mirror

  1. Follow the official documentation to access the embedded database: Access Bitbucket Data Center's H2 embedded database | Bitbucket Data Center | Atlassian Support

  2. Once connected to the mirror’s database, run:

    SELECT * FROM AO_8E6075_MIRRORED_PROJECT;

  3. Review the output, focusing on the INITIAL_SYNC column. We are specifically looking for any projects in the table that have a NULL value in the INITIAL_SYNC column. If we find such entries, the recommended resolution is to remove those projects from the mirror and then re-add them to the sync list. This should trigger a fresh initial sync and resolve the issue. Alternatively, we can manually update the DB entry and set the sync date to the current date.

Manually modifying the Bitbucket database is strongly discouraged and can lead to data corruption or an unsupported state. Do not apply any database changes unless they have been reviewed and approved by Atlassian Support, and always ensure you have a full backup before making changes.

Updated on December 2, 2025

Still need help?

The Atlassian Community is here for you.