Empty warning 'The form contains the following error' when saving wiki page in one repository

We have a repository with a fairly large wiki (83MB, 84 directories, 1925 files). When saving a specific page in this wiki, we get the following warning message:

Regardless of the warning, the page does save.

If we copy the contents of the wiki page to a different wiki page, then save works without any warnings. We would expect saving this page should also save without any warnings.

Also, empty the content from the page, and saving with just a single line:

# Meetings

produces the same warning. Adding this to show it is not the content that might be causing the issue.

Our installation is self hosted and we are on version 15.10.8 (Ubuntu 20.04.6 LTS). We have had this issue at least since v15.4.

There is no entry in the exceptions log for this issue, nor any error in other logs that we can find. Subsequently clicking on ‘Save Changes’ gives the same error.

Often in the past we get the odd oddity after an update when we have forgotten to add a config line to config/gitlab.yml, or we forget to add a new config file. After double checking, this doesn’t appear to be the case, but we are human after all ¯_(ツ)_/¯

Any thoughts on how to debug or get rid of this warning message?

Can you reproduce the problem and check the following logs for any relevant errors or traces?

I’d expect you’d see some additional information that can help identify and troubleshoot this problem further in one of those logs.

This is part of what is making this so difficult to diagnose, there are no entries in exceptions_json.log related to this issue. And those in production_json.log are just healthy log entries. Here is one the entries from production_json (anonymized):

{
    "method": "PUT",
    "path": "/group/project/-/wikis/vulkan-meetings",
    "format": "html",
    "controller": "Projects::WikisController",
    "action": "update",
    "status": 200,
    "time": "2023-06-27T15:53:51.166Z",
    "params": [
        {
            "key": "authenticity_token",
            "value": "[FILTERED]"
        },
        {
            "key": "_method",
            "value": "put"
        },
        {
            "key": "wiki",
            "value": {
                "last_commit_sha": "<removed>",
                "title": "[FILTERED]",
                "format": "markdown",
                "content": "[FILTERED]",
                "message": "Update vulkan meetings"
            }
        },
        {
            "key": "namespace_id",
            "value": "vulkan"
        },
        {
            "key": "project_id",
            "value": "vulkan"
        },
        {
            "key": "id",
            "value": "vulkan-meetings"
        }
    ],
    "correlation_id": "<correlation-id>",
    "meta.caller_id": "Projects::WikisController#update",
    "meta.remote_ip": "<removeIP>",
    "meta.feature_category": "wiki",
    "meta.user": "<username>",
    "meta.user_id": /<id>,
    "meta.project": "group/project",
    "meta.root_namespace": "project",
    "meta.client_id": "user/<id>",
    "remote_ip": "<remoteIP>",
    "user_id": /<id>,
    "username": "<username>",
    "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15",
    "request_urgency": "low",
    "target_duration_s": 5,
    "gitaly_calls": 6,
    "gitaly_duration_s": 0.024834,
    "redis_calls": 29,
    "redis_allowed_cross_slot_calls": 2,
    "redis_duration_s": 0.0052309999999999995,
    "redis_read_bytes": 4502,
    "redis_write_bytes": 2589,
    "redis_cache_calls": 16,
    "redis_cache_allowed_cross_slot_calls": 1,
    "redis_cache_duration_s": 0.003156,
    "redis_cache_read_bytes": 3648,
    "redis_cache_write_bytes": 1046,
    "redis_repository_cache_calls": 6,
    "redis_repository_cache_duration_s": 0.000789,
    "redis_repository_cache_read_bytes": 666,
    "redis_repository_cache_write_bytes": 283,
    "redis_sessions_calls": 4,
    "redis_sessions_allowed_cross_slot_calls": 1,
    "redis_sessions_duration_s": 0.000729,
    "redis_sessions_read_bytes": 183,
    "redis_sessions_write_bytes": 1146,
    "redis_shared_state_calls": 3,
    "redis_shared_state_duration_s": 0.000557,
    "redis_shared_state_read_bytes": 5,
    "redis_shared_state_write_bytes": 114,
    "db_count": 24,
    "db_write_count": 0,
    "db_cached_count": 3,
    "db_replica_count": 0,
    "db_primary_count": 24,
    "db_main_count": 24,
    "db_main_replica_count": 0,
    "db_replica_cached_count": 0,
    "db_primary_cached_count": 3,
    "db_main_cached_count": 3,
    "db_main_replica_cached_count": 0,
    "db_replica_wal_count": 0,
    "db_primary_wal_count": 0,
    "db_main_wal_count": 0,
    "db_main_replica_wal_count": 0,
    "db_replica_wal_cached_count": 0,
    "db_primary_wal_cached_count": 0,
    "db_main_wal_cached_count": 0,
    "db_main_replica_wal_cached_count": 0,
    "db_replica_duration_s": 0.0,
    "db_primary_duration_s": 0.013,
    "db_main_duration_s": 0.013,
    "db_main_replica_duration_s": 0.0,
    "cpu_s": 0.223763,
    "pid": 1672052,
    "worker_id": "puma_2",
    "rate_limiting_gates": [],
    "db_duration_s": 0.01293,
    "view_duration_s": 0.1699,
    "duration_s": 0.23958
}

GitLab has resolved this issue in v 16.x. Not sure the exact version, but all good now!