Issues fixed in MarkLogic Server 12.1.0
- Last Updated: September 10, 2026
- 10 minute read
- MarkLogic Server
- Documentation
Released: September 10, 2026
The following issues have been addressed in this release:
| Bug ID | Details |
|---|---|
| MLE-347 | xdmp.jsonValidate() can accept invalid JSON without reporting missing required properties when the referenced schema is loaded from the Schemas database, even though inline validation detects the violation. |
| MLE-405 | The Messages and Codes documentation omits numerous XDMP errors that can appear in logs or query results, leaving users without reference information for those messages. |
| MLE-553 | Loading certain serialized lexicon query plans that contain unexpected query-value content can cause MarkLogic Server to crash instead of returning an error. |
| MLE-607 | When several threads raise exceptions at the same time, diagnostic stack output lacks sufficient thread context to correlate messages, making intermittent issues difficult to investigate. |
| MLE-697 | A REST metadata update using JSON cannot add a collection without first determining whether collection metadata already exists, while an equivalent XML request accepts either case. |
| MLE-799 | Before a newly defined path field finishes indexing and becomes available, field value and range queries can silently return an empty sequence instead of reporting that the field or range index is unavailable. |
| MLE-12478 | geo:region-approximate() can return overlapping or distorted geometry when simplifying a complex polygon that contains multiple holes. |
| MLE-14095 | Admin UI status pages sort numeric columns as text, causing values to appear in an incorrect order, such as 100 before 2. |
| MLE-14201 | When a document is posted through a REST transform without an explicit content type, MarkLogic Server can ignore the URI extension and store XML, JSON, or text content as binary. |
| MLE-15511 | Posting JSON to v1/documents without an explicit format can store the document as binary when a REST transform is applied, even when the URI ends in .json. |
| MLE-17163 | When an unresponsive forest mount exceeds the storage failure timeout, the affected host can report a segmentation fault and restart instead of completing a controlled shutdown and failover. |
| MLE-17671 | On large clusters using segment assignment, repeated long-running rebalancer scans can overlap, consume substantial CPU, and cause sawtooth processing with periodic idle intervals and reduced throughput. |
| MLE-18252 | A valid SPARQL shortest-path query that uses xdmp:unnest without an additional constraining filter can fail with XDMP-UNDVAR for a variable bound by the query. |
| MLE-19805 | Certain SPARQL queries with optional or repeating property paths can process millions of unnecessary intermediate results, causing substantially slower execution and increased resource use. |
| MLE-21213 | Calling prof:report on a sufficiently large or deeply nested XQuery can cause a segmentation fault and server restart instead of returning the profiling report. |
| MLE-21878 | On databases with more than ten collections, xdmp:collections() can return only ten collection IDs instead of the complete set. |
| MLE-22742 | For LDAP external-security profiles, the Manage API GET response uses a structure that its POST endpoint rejects, preventing the same configuration from being retrieved and submitted unchanged. |
| MLE-22785 | When multiple element QNames are supplied to cts:element-word-query, results can depend on their order, causing valid matches in listed elements to be omitted. |
| MLE-22844 | ANN top-k queries restricted to a small candidate set can run more slowly than expected, increasing latency for highly selective vector searches. |
| MLE-22918 | In JSON documents, a nested lang property can incorrectly affect later properties outside its containing object, causing word queries and stemming to miss matching content. |
| MLE-23171 | On the Admin UI Database Status page, cache-status tables display empty rows for replica forests, making forest listings appear incomplete and inconsistent with the reported item counts. |
| MLE-23205 | Attempting to restart a host from the Admin UI returns a 404 Not Found error, preventing the restart from being initiated through the interface. |
| MLE-23357 | The Admin UI can display negative or inconsistent reindexing progress percentages and fragment counts in high-availability configurations, making it difficult to assess reindexing progress. |
| MLE-23471 | MarkLogic Server reports GLIBC 2.28 as its minimum requirement instead of GLIBC 2.27, incorrectly excluding supported Linux environments that provide GLIBC 2.27. |
| MLE-23710 | Cluster-scoped support requests omit Dynamic E-node information, leaving diagnostic data incomplete for clusters that use Dynamic E-nodes. |
| MLE-23713 | The Admin UI Task Server/Host Status table for a group displays hosts from other groups, making the reported group status inaccurate. |
| MLE-23878 | The Server-Side JavaScript function cts.geospatialAttributePairReference() returns TypeError: cts.geospatialAttributePairReference is not a function, preventing JavaScript applications from creating geospatial attribute-pair references. |
| MLE-23939 | Optic queries that use op.xpath with namespace mappings are not distributed as expected, reducing query scalability. |
| MLE-24383 | Optic queries that combine unnestLeftOuter, bind, and left outer joins can incorrectly return a missing-column error, preventing otherwise valid queries from running. |
| MLE-24486 | During sustained JavaScript workloads, the V8 engine can encounter an out-of-memory condition followed by a segmentation fault and MarkLogic Server restart, interrupting active requests. |
| MLE-24503 | Restoring a database from Amazon S3 can hang and trigger a segmentation fault that restarts MarkLogic Server, interrupting the restore operation. |
| MLE-24566 | The Admin UI incorrectly rejects valid filesystem paths in the Database Backup/Restore Path field, preventing backup or restore configurations from being created. |
| MLE-24579 | An Optic query can restart MarkLogic Server when inference is enabled, the query plan is prepared, and the query returns no rows, interrupting the request and other server activity. |
| MLE-24628 | Optic diagnostic plans can report incorrect or zero row counts and incomplete request metrics for joins and projections, making query performance analysis unreliable. |
| MLE-24756 | Virtual TDE queries over large documents can exhaust the Expanded Tree Cache and return XDMP-EXPNTREECACHEFULL before completing, preventing results from being returned. |
| MLE-24816 | On a Dynamic E-node, admin:host-get-* functions can return ADMIN-NOSUCHHOST and xdmp:host-exists() can incorrectly return false for the current host, preventing applications from retrieving host information. |
| MLE-24900 | SPARQL shortest-path queries that use xdmp:pattern with a parameterized FILTER can trigger a segmentation fault, preventing the query from completing. |
| MLE-24967 | Optic queries executed from an amped context do not honor the AMP privileges when retrieving protected content, causing results to omit data that the same amped request can access through CTS. |
| MLE-24980 | In Server-Side JavaScript, amp privileges can be lost when an amped function calls code in another script or module, causing operations that should run with the amp's roles to fail with insufficient privileges. |
| MLE-25650 | Counting results from Optic or SPARQL plans with many repeated BIND or projection operators can take substantially longer in MarkLogic Server 12 than in MarkLogic Server 11, increasing query latency on large result sets. |
| MLE-25651 | Optic or SPARQL queries containing many DISTINCT operations can run significantly slower in MarkLogic Server 12 than in MarkLogic Server 11, increasing query latency for large result sets. |
| MLE-25864 | Very large Optic or SPARQL plans containing many union, join, and one-or-more operators can take significantly longer to evaluate in MarkLogic Server 12 than in MarkLogic Server 11, even against an empty database. |
| MLE-26365 | During an upgrade to MarkLogic Server 12, some forests can fail to start with SVC-MAPINI and EVP_DecryptFinal 'bad decrypt' errors, preventing affected databases from coming online. |
| MLE-26375 | In Optic queries, op:is-defined() can incorrectly treat a column bound to a JavaScript null or XQuery empty sequence as defined, returning rows that should be filtered out. |
| MLE-26560 | A geospatial region path index created with the four-argument admin:database-geospatial-region-path-index() function can omit the default <units>miles</units> setting until another database configuration change occurs, resulting in inconsistent configuration output. |
| MLE-26898 | Under sustained workloads, MarkLogic Server can terminate with a segmentation fault while aging cached XQuery modules or programs, interrupting in-flight operations and causing the server process to restart. |
| MLE-26900 | Under sustained JavaScript workloads, MarkLogic Server can terminate with a segmentation fault in the JavaScript engine, interrupting in-flight operations and causing the server process to restart. |
| MLE-26931 | Under heavy load, the V8 JavaScript engine can report out-of-memory errors and MarkLogic Server can terminate with segmentation faults, interrupting application requests and causing the server process to restart. |
| MLE-26934 | When Server-Side JavaScript imports XQuery modules, MarkLogic Server can terminate with a segmentation fault, interrupting requests and causing the server process to restart. |
| MLE-26992 | OAuth-based single sign-on can fail with a 'Claim Not Found' error when a JWKS payload does not include an x5c field, preventing JWT validation from completing. |
| MLE-27003 | HTML serialization can incorrectly add closing tags to HTML5 void elements including <track>, <embed>, <source>, and <wbr>, producing output that does not conform to HTML5 serialization rules. |
| MLE-27025 | Creating a query partition through the Management REST API can fail with HTTP 404 and ADMIN-NOSUCHFOREST when the request omits the hosts field, preventing the partition from being created. |
| MLE-27168 | Retrieving certificate-template properties through the Management REST API can fail with HTTP 400 XDMP-VALIDATEUNEXPECTED for the generate-temp-certificate field, preventing deployment and administration tools from reading the template configuration. |
| MLE-27248 | Strict validation of Meters database documents against meters.xsd can fail with XDMP-VALIDATEUNEXPECTED for generated metrics such as schema-cache counters, preventing schema validation of the collected meters data. |
| MLE-27254 | In the XQuery Optic API, quoted string values in SPARQL expressions are escaped incorrectly in op:where(), op:bind(), joins, and dynamic views, which can cause expressions containing quotes to be evaluated incorrectly. |
| MLE-27281 | Optic op.geo.distance() can fail with a "missing context item" error when its arguments use delayed column expressions, preventing distance calculations in queries such as op.fromDocs() with op.xpath(). |
| MLE-27441 | Optic op:from-search-docs() with cts:locks-fragment-query() can return both a content document and its lock document for the same URI, producing duplicate-URI results that differ from typical cts:search() behavior. |
| MLE-27489 | Database backups can terminate MarkLogic Server with a segmentation fault when additional files are present in the server data directory, causing the backup to fail and the server process to restart. |
| MLE-27502 | When a cts:query is passed directly to op:where(), MarkLogic Server silently restricts it to document fragments, which can exclude matches from other fragment types and produce incomplete Optic query results. |
| MLE-27864 | When JavaScript functions use imported modules, MarkLogic Server may terminate unexpectedly and restart, interrupting active requests. |
| MLE-27867 | After processing JavaScript requests, MarkLogic Server may terminate unexpectedly and restart, interrupting active requests. |
| MLE-28065 | When an application request encounters an error after query processing, MarkLogic Server may terminate unexpectedly and restart, interrupting active requests. |
| MLE-28079 | During JavaScript function evaluation, MarkLogic Server may terminate unexpectedly and restart, interrupting active requests. |
| MLE-28120 | MarkLogic Server may terminate unexpectedly while evaluating the return value of a JavaScript function, causing an unplanned restart and interrupting active requests. |
| MLE-28121 | MarkLogic Server may terminate unexpectedly while resolving a named JavaScript function during evaluation, causing an unplanned restart and interrupting active requests. |
| MLE-28123 | The MarkLogic ODBC driver may omit required COLUMN_SIZE and DECIMAL_DIGITS metadata during schema discovery, causing ODBC clients that require this metadata to reject table previews or fail to retrieve data. |
| MLE-28148 | During high-availability failover with active traffic, update transactions may remain blocked for an extended period while connections to unavailable D-nodes close, causing request times to rise and application traffic to stall. |
| MLE-28187 | MarkLogic Server may terminate unexpectedly while cached XQuery modules or programs are being retired, causing an unplanned restart and interrupting active requests. |
| MLE-28188 | MarkLogic Server may terminate unexpectedly after query execution while output and serialization resources are being released, causing an unplanned restart and interrupting active requests. |
| MLE-28370 | An incremental backup to Amazon S3 may cause MarkLogic Server to terminate unexpectedly, interrupting the backup and restarting the affected server process. |
| MLE-28375 | Under heavy JavaScript module workloads, request timeout handling may trigger V8 aborts that restart MarkLogic Server, interrupting active requests and reducing service availability. |
| MLE-28431 | Under sustained concurrent xdmp.eval workloads in memory-constrained environments, MarkLogic Server may terminate unexpectedly and restart, interrupting active operations and reducing service availability. |
| MLE-28447 | On a Dynamic E-node, admin:host-get-* functions can return ADMIN-NOSUCHHOST for the current host, preventing applications from retrieving live host configuration through the Admin API. |
| MLE-28646 | When obsolete stands remain open, repeated XDMP-OBSOLETESTANDNOTDELETED messages do not provide enough information to identify which operations are retaining the stands, limiting diagnosis of continued disk and memory use. |
| MLE-28717 | With HTTP compression enabled, heavy concurrent requests that return large responses may cause MarkLogic Server to hang, preventing requests from completing and making the service unresponsive. |
| MLE-29122 | TDE indexing may fail with TDE-EVALFAILED and XDMP-CAST when a template column of type vec:vector evaluates to a sequence of numeric nodes, preventing affected documents from being indexed. |
| MLE-29403 | In Admin UI, loading files into a database may return Bad Request after valid load settings are confirmed, preventing the database load from starting. |
| MLE-29431 | On newer Linux releases, a MarkLogic Server crash may be logged without the expected GDB stack trace, leaving insufficient diagnostic information to investigate the crash. |
| MLE-29601 | When a database is unavailable because a data node is offline, the Query Console Databases dropdown can remain empty and take several minutes to respond, leaving most Query Console operations unusable. |
| MLE-29674 | Scheduled backups do not include the kms.exp key-management export that is included in backups started through the Admin UI or API, resulting in incomplete scheduled backup sets. |
| MLE-29715 | When xdmp:javascript-eval uses same-statement isolation, variables supplied in the documented alternating name-and-value sequence are rejected with XDMP-ARG, preventing otherwise valid JavaScript evaluation. |
| MLE-30548 | After SAML authorization is configured for an External Security object, the Admin UI hides the configured SAML attribute name, preventing administrators from viewing or editing it. |
| MLE-30562 | The Admin UI displays only the first 250 protected paths and provides no option to display the remaining paths, preventing administrators from reviewing the complete configuration. |
| MLE-30638 | The Admin UI More Forests button does not open additional forest configuration sections when any existing forest is not attached to a database, blocking the creation of multiple forests from that page. |
| MLE-30651 | One of the Admin UI Upgrade Security buttons returns 405: Method Not Allowed, preventing the security upgrade from being started through that control. |
| MLE-30677 | Updating a DLS-managed document with dls:document-checkout-update-checkin or dls:document-update can take about 60 seconds in a heavily populated database, severely reducing write throughput and application responsiveness. |
| MLE-30691 | When Auto Logout is enabled, inactive Query Console sessions can display a Page Not Found error instead of completing the expected logout flow. |
| MLE-30729 | Backups to S3 can time out, fail with XDMP-BACKUPNOTFOUND, or leave the Admin UI unable to load backup confirmation, preventing scheduled or manually initiated backups from completing. |
| MLE-31226 | Non-administrator Query Console users with permission to update a document can receive SEC-PRIV requiring xdmp-login when saving through Explore, preventing them from editing documents. |
| MLE-31330 | Repeated JavaScript module execution can succeed initially and then fail with XDMP-MODNOTFOUND even though the module exists, disrupting subsequent Query Console and eval API requests. |
| MLE-31405 | Optic queries that use joinDocCols can fail with SEC-PRIV requiring xdmp:invoke when results are returned, preventing users with otherwise sufficient read access from retrieving the results. |
| MLE-31647 | After an upgrade, hadoop:get-splits() can reject previously valid document selectors with HADOOP-BADDOCSELECTOR, blocking affected MLCP jobs. |
| MLE-31730 | When a document is open for editing in Query Console, typing in the code editor can replace the document editor contents with the Query Console code, causing the original content to disappear from the edit pane and preventing safe document editing. |
| MLE-31822 | During a rolling upgrade in a mixed-version cluster, the Admin UI environment banner disappears until all nodes are upgraded, removing the environment identification normally displayed to administrators. |
| MLE-31964 | During a rolling upgrade from MarkLogic 12.0 to 12.1, the Admin UI can display roles that are not yet available in the Security database, and selecting these unusable entries displays "No roles found," disrupting security administration. |
| MLE-32241 | During rolling upgrades involving MarkLogic 12.0.x in a mixed-version cluster, SQL or Optic queries against TDE views can fail with XDMP-CORRUPT, interrupting access to query results. |
| MLE-32277 | In Query Console on MarkLogic 12.0.3, rerunning JavaScript module code can intermittently fail with TypeError: Cannot set properties of undefined (setting 'ignoreAmps'), preventing reliable repeated execution. |