From 66dfaac3cbc01f0edb17a10cc72b620bac5f45ab Mon Sep 17 00:00:00 2001 From: Finley Lau Date: Tue, 4 Nov 2025 15:27:17 -0600 Subject: [PATCH] SERVER-113382 Reserve location codes for extension errors and logs (#43533) GitOrigin-RevId: d3e28a680d3859f938280edaf54dc861f220ca91 --- buildscripts/errorcodes.py | 13 ++++++++++++- src/mongo/base/error_codes.yml | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/buildscripts/errorcodes.py b/buildscripts/errorcodes.py index 6d76048a73d..4b8850c5e49 100755 --- a/buildscripts/errorcodes.py +++ b/buildscripts/errorcodes.py @@ -24,6 +24,8 @@ except ImportError: import re # type: ignore MAXIMUM_CODE = 99999999 # JIRA Ticket + XX +MIN_EXTENSION_RESERVED_CODE = 65000 +MAX_EXTENSION_RESERVED_CODE = 71000 codes = [] # type: ignore @@ -162,6 +164,7 @@ def read_error_codes(src_root="src/mongo"): dups = defaultdict(list) skips = [] malformed = [] # type: ignore + reserved = [] # define validation callbacks def check_dups(assert_loc): @@ -181,11 +184,14 @@ def read_error_codes(src_root="src/mongo"): errors.append(assert_loc) def validate_code(assert_loc): - """Check for malformed codes.""" + """Check for malformed codes or pre-reserved codes.""" code = int(assert_loc.code) if code > MAXIMUM_CODE: malformed.append(assert_loc) errors.append(assert_loc) + elif code >= MIN_EXTENSION_RESERVED_CODE and code < MAX_EXTENSION_RESERVED_CODE: + reserved.append(assert_loc) + errors.append(assert_loc) def callback(assert_loc): validate_code(assert_loc) @@ -217,6 +223,11 @@ def read_error_codes(src_root="src/mongo"): print("MALFORMED ID: %s" % loc.code) print(" %s:%d:%d:%s" % (loc.sourceFile, line, col, loc.lines)) + for loc in reserved: + line, col = get_line_and_column_for_position(loc) + print("USE OF ALREADY RESERVED ID: %s" % loc.code) + print(" %s:%d:%d:%s" % (loc.sourceFile, line, col, loc.lines)) + return (codes, errors, seen) diff --git a/src/mongo/base/error_codes.yml b/src/mongo/base/error_codes.yml index 44453cbca30..7e7575a5118 100644 --- a/src/mongo/base/error_codes.yml +++ b/src/mongo/base/error_codes.yml @@ -1053,6 +1053,7 @@ error_codes: } - {code: 56846, name: ConfigServerUnreachable} - {code: 57986, name: RetryableInternalTransactionNotSupported} + # Codes 65000-70999 are reserved for extension-developed logs and errors. Do not use these unless they are used for writing an extension. - {code: 640570, name: IllegalChangeToExpectedShardVersion} - {code: 640571, name: IllegalChangeToExpectedDatabaseVersion} - {