Skip to content

#YTDB-165#563

Draft
logart wants to merge 97 commits intodevelopfrom
ytdb-165-hash-map-cas-array-read-cache-replacement
Draft

#YTDB-165#563
logart wants to merge 97 commits intodevelopfrom
ytdb-165-hash-map-cas-array-read-cache-replacement

Conversation

@logart
Copy link
Collaborator

@logart logart commented Oct 15, 2025

User description

THIS IS WIP, PLEASE DO NOT MERGE.

Replace interfaces to use FileHandler instead of fileId to see which part of the code is affected. Try to do high level algorithm modifications to move from CHM to CASObjectArray in read cache.

What does this PR do?
A brief description of the change being made with this pull request.


PR Type

Enhancement


Description

  • Replace ConcurrentHashMap<PageKey, CacheEntry> with ConcurrentHashMap<Long, FileHandler> in read cache

  • Introduce FileHandler record containing fileId and CASObjectArray for page entries

  • Update cache interfaces to use FileHandler instead of raw fileId parameters

  • Modify page lookup logic to search within CASObjectArray per file


Diagram Walkthrough

flowchart LR
  A["PageKey-based CHM"] --> B["FileHandler-based CHM"]
  B --> C["CASObjectArray per file"]
  D["loadForRead/Write methods"] --> E["Updated with FileHandler param"]
  E --> C
Loading

File Walkthrough

Relevant files
Enhancement
10 files
FileHandler.java
Add new FileHandler record with fileId and casArray           
+5/-0     
ReadCache.java
Update interface methods to accept FileHandler parameter 
+5/-3     
LockFreeReadCache.java
Replace PageKey-based CHM with FileHandler-based CHM implementation
+96/-62 
WTinyLFUPolicy.java
Update policy to use FileHandler-based data structure       
+29/-25 
DiskStorage.java
Load FileHandler before calling cache read methods             
+4/-2     
AbstractStorage.java
Update to load FileHandler before cache operations             
+2/-1     
AtomicOperation.java
Add loadFileHandler method and update signatures with FileHandler
+8/-3     
AtomicOperationBinaryTracking.java
Implement loadFileHandler and update page loading with FileHandler
+24/-11 
DurableComponent.java
Update page loading methods to use FileHandler                     
+10/-6   
DirectMemoryOnlyDiskCache.java
Implement loadFileHandler and update load methods with FileHandler
+17/-9   

dependabot bot and others added 4 commits October 13, 2025 18:10
Bumps [org.apache.maven.plugins:maven-pmd-plugin](https://github.com/apache/maven-pmd-plugin) from 3.27.0 to 3.28.0.
- [Release notes](https://github.com/apache/maven-pmd-plugin/releases)
- [Commits](apache/maven-pmd-plugin@maven-pmd-plugin-3.27.0...maven-pmd-plugin-3.28.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-pmd-plugin
  dependency-version: 3.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [org.codehaus.mojo:animal-sniffer-maven-plugin](https://github.com/mojohaus/animal-sniffer) from 1.24 to 1.26.
- [Release notes](https://github.com/mojohaus/animal-sniffer/releases)
- [Commits](mojohaus/animal-sniffer@animal-sniffer-1.24...animal-sniffer-1.26)

---
updated-dependencies:
- dependency-name: org.codehaus.mojo:animal-sniffer-maven-plugin
  dependency-version: '1.26'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
THIS IS WIP, PLEASE DO NOT MERGE.

Replace interfaces to use FileHandler instead of fileId to see which part of the code is affected.
Try to do high level algorithm modifications to move from CHM to CASObjectArray in read cache.
@qodo-code-review
Copy link

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
- [ ] Create ticket/issue <!-- /create_ticket --create_ticket=true -->

</details></td></tr>
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
No custom compliance provided

Follow the guide to enable custom compliance check.

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
Re-evaluate the core data structure change

The suggestion highlights a major performance issue with the proposed data
structure change. Shifting to a CASObjectArray for pages within a file handler
results in a linear search (O(N)) for page lookups, a significant degradation
from the previous near-constant time (O(1)) lookup.

Examples:

core/src/main/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/LockFreeReadCache.java [53-225]
  private final ConcurrentHashMap<Long/*fileId*/, FileHandler> data; // todo replace with primitive concurrent hash map
  private final Lock evictionLock = new ReentrantLock();

  private final WTinyLFUPolicy policy;

  private final Buffer readBuffer = new BoundedBuffer();
  private final MPSCLinkedQueue<CacheEntry> writeBuffer = new MPSCLinkedQueue<>();
  private final AtomicInteger cacheSize = new AtomicInteger();
  private final int maxCacheSize;


 ... (clipped 163 lines)

Solution Walkthrough:

Before:

// In LockFreeReadCache.java
private final ConcurrentHashMap<PageKey, CacheEntry> data;

private CacheEntry doLoad(long fileId, int pageIndex, ...) {
    final var pageKey = new PageKey(fileId, pageIndex);
    
    // O(1) average time lookup
    CacheEntry cacheEntry = data.get(pageKey);
    
    if (cacheEntry == null) {
        // logic to load and compute entry
    }
    ...
    return cacheEntry;
}

After:

// In LockFreeReadCache.java
private final ConcurrentHashMap<Long, FileHandler> data;

private CacheEntry doLoad(FileHandler fileHandler, int pageIndex, ...) {
    // O(1) to get the file handler
    final var storedFileHandler = data.get(fileHandler.fileId());
    final var casArray = (CASObjectArray<CacheEntry>) storedFileHandler.casArray();

    // O(N) to find the page, where N is number of pages for the file
    CacheEntry cacheEntry = null; 
    // search for page in an array
    for (entry in casArray) {
        if (entry.getPageIndex() == pageIndex) {
            cacheEntry = entry;
            break;
        }
    }
    ...
    return cacheEntry;
}
Suggestion importance[1-10]: 10

__

Why: The suggestion correctly identifies a critical performance regression from O(1) to O(N) for page lookups by changing the core data structure of the ReadCache, which is a fundamental design flaw.

High
Possible issue
Fix a definite NullPointerException

Fix a NullPointerException by implementing the missing logic to look up the
CacheEntry from the FileHandler. The cacheEntry variable is currently
initialized to null and then dereferenced.

core/src/main/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/LockFreeReadCache.java [189-203]

 // todo look up in new file handler
-//        if (cacheEntry == null) {
-//          cacheEntry = updatedEntry[0];
-//        }
+        final var currentFileHandler = data.get(fileId);
+        if (currentFileHandler == null) {
+          return null;
+        }
 
-//        if (cacheEntry == null) {
-//          return null;
-//        }
+        @SuppressWarnings("unchecked")
+        final var casArray = (CASObjectArray<CacheEntry>) currentFileHandler.casArray();
+        CacheEntry cacheEntry = null;
+        if (casArray != null) {
+          // This assumes a simple linear scan. A more efficient lookup might be needed.
+          for (int i = 0; i < casArray.size(); i++) {
+            final var entry = casArray.get(i);
+            if (entry != null && entry.getPageIndex() == pageIndex) {
+              cacheEntry = entry;
+              break;
+            }
+          }
+        }
+
+        if (cacheEntry == null) {
+          return null;
+        }
       }
-      CacheEntry cacheEntry = null;
       if (cacheEntry.acquireEntry()) {
         return cacheEntry;
       }
     }
   }
  • Apply / Chat
Suggestion importance[1-10]: 10

__

Why: The suggestion correctly identifies a definite NullPointerException where cacheEntry is initialized to null and immediately dereferenced. This is a critical bug in the newly added code.

High
Prevent a potential NullPointerException

Prevent a potential NullPointerException by adding a null check for
storedFileHandler before calling .casArray() on it.

core/src/main/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/LockFreeReadCache.java [222-225]

 final var storedFileHandler = data.get(fileHandler.fileId());
-@SuppressWarnings("unchecked") final var casArray = (CASObjectArray<CacheEntry>) storedFileHandler.casArray();
-//search for page in an array
-cacheEntry = null; // entry would be found in an array
+CacheEntry cacheEntry = null;
+if (storedFileHandler != null) {
+    @SuppressWarnings("unchecked") final var casArray = (CASObjectArray<CacheEntry>) storedFileHandler.casArray();
+    if (casArray != null) {
+        //search for page in an array
+        // This assumes a simple linear scan. A more efficient lookup might be needed.
+        for (int i = 0; i < casArray.size(); i++) {
+            final var entry = casArray.get(i);
+            if (entry != null && entry.getPageIndex() == pageIndex) {
+                cacheEntry = entry;
+                break;
+            }
+        }
+    }
+}
  • Apply / Chat
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies a potential NullPointerException if storedFileHandler is null. This is a valid and important error handling concern in the new logic.

Medium
General
Avoid unnecessary object allocations

Avoid creating a new FileHandler on each call to loadForWrite inside
commitChanges. Instead, retrieve the existing handler from the readCache to
prevent unnecessary object allocations and improve performance.

core/src/main/java/com/jetbrains/youtrackdb/internal/core/storage/impl/local/paginated/atomicoperations/AtomicOperationBinaryTracking.java [555-559]

+var fileHandler = readCache.loadFileHandler(fileId);
+if (fileHandler == null) {
+    // Potentially create a new one if that's the expected behavior,
+    // but reusing is preferred. This might indicate a logic issue if it's ever null here.
+    fileHandler = new FileHandler(fileId, null);
+}
 var cacheEntry =
     readCache.loadForWrite(
-        // todo update interface to avoid allocation?
-        new FileHandler(fileId, null), pageIndex, writeCache,
+        fileHandler, pageIndex, writeCache,
         filePageChanges.verifyCheckSum, startLSN);
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly points out a performance issue due to unnecessary object allocation of FileHandler inside commitChanges, which is a performance-sensitive area. The proposed fix is valid and improves efficiency.

Medium
  • More

@qodo-code-review
Copy link

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: Analyze (java-kotlin)

Failed stage: Autobuild [❌]

Failed test name: ""

Failure summary:

The CodeQL action failed because the Maven build (autobuild) for module youtrackdb-core failed
during test compilation with Java type errors:
- Compilation errors in
core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java
at lines 218:36, 258:54, 294:55, 330:54 — "incompatible types: int cannot be converted to
com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler".
- Multiple compilation errors in
core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java
(e.g., lines 33:39, 129:39, 170:39, 211:39, 260:39, 309:39, 367:39, 425:39, 470:39, 530:39, 569:39,
621:39) — "ConcurrentHashMap<PageKey, CacheEntry> cannot be converted to ConcurrentHashMap<Long,
FileHandler>".
As a result, maven-compiler-plugin:testCompile failed, causing the autobuild script
to exit with code 1 and the CodeQL job to fail.

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

220:  {
221:  "extractor_root" : "/opt/hostedtoolcache/CodeQL/2.23.2/x64/codeql/xml"
222:  }
223:  ],
224:  "python" : [
225:  {
226:  "extractor_root" : "/opt/hostedtoolcache/CodeQL/2.23.2/x64/codeql/python",
227:  "extractor_options" : {
228:  "logging" : {
229:  "title" : "Options pertaining to logging.",
230:  "description" : "Options pertaining to logging.",
231:  "type" : "object",
232:  "properties" : {
233:  "verbosity" : {
234:  "title" : "Python extractor logging verbosity level.",
235:  "description" : "Controls the level of verbosity of the CodeQL Python extractor.\nThe supported levels are (in order of increasing verbosity):\n\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
236:  "type" : "string",
237:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
238:  }
...

324:  "description" : "Comma-separated list of features to turn on. By default all features are enabled. If any features are specified, then only those features are enabled. The `default` feature must be explicitly specified if only default features are desired. Can be repeated.\n",
325:  "type" : "array"
326:  },
327:  "cargo_cfg_overrides" : {
328:  "title" : "Cargo cfg overrides",
329:  "description" : "Comma-separated list of cfg settings to enable, or disable if prefixed with `-`. Can be repeated.\n",
330:  "type" : "array"
331:  },
332:  "logging" : {
333:  "title" : "Options pertaining to logging.",
334:  "description" : "Options pertaining to logging.",
335:  "type" : "object",
336:  "properties" : {
337:  "verbosity" : {
338:  "title" : "Extractor logging verbosity level.",
339:  "description" : "Controls the level of verbosity of the extractor. The supported levels are (in order of increasing verbosity):\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
340:  "type" : "string",
341:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
342:  },
...

530:  }
531:  },
532:  "buildless" : {
533:  "title" : "DEPRECATED - Whether to use buildless (standalone) extraction.",
534:  "description" : "DEPRECATED: Use `--build-mode none` instead.\nA value indicating, which type of extraction the autobuilder should perform. If 'true', then the standalone extractor will be used, otherwise tracing extraction will be performed. The default is 'false'. Note that buildless extraction will generally yield less accurate analysis results, and should only be used in cases where it is not possible to build the code (for example if it uses inaccessible dependencies).\n",
535:  "type" : "string",
536:  "pattern" : "^(false|true)$"
537:  },
538:  "logging" : {
539:  "title" : "Options pertaining to logging.",
540:  "description" : "Options pertaining to logging.",
541:  "type" : "object",
542:  "properties" : {
543:  "verbosity" : {
544:  "title" : "Extractor logging verbosity level.",
545:  "description" : "Controls the level of verbosity of the extractor. The supported levels are (in order of increasing verbosity):\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
546:  "type" : "string",
547:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
548:  }
...

618:  {
619:  "extractor_root" : "/opt/hostedtoolcache/CodeQL/2.23.2/x64/codeql/xml"
620:  }
621:  ],
622:  "python" : [
623:  {
624:  "extractor_root" : "/opt/hostedtoolcache/CodeQL/2.23.2/x64/codeql/python",
625:  "extractor_options" : {
626:  "logging" : {
627:  "title" : "Options pertaining to logging.",
628:  "description" : "Options pertaining to logging.",
629:  "type" : "object",
630:  "properties" : {
631:  "verbosity" : {
632:  "title" : "Python extractor logging verbosity level.",
633:  "description" : "Controls the level of verbosity of the CodeQL Python extractor.\nThe supported levels are (in order of increasing verbosity):\n\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
634:  "type" : "string",
635:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
636:  }
...

722:  "description" : "Comma-separated list of features to turn on. By default all features are enabled. If any features are specified, then only those features are enabled. The `default` feature must be explicitly specified if only default features are desired. Can be repeated.\n",
723:  "type" : "array"
724:  },
725:  "cargo_cfg_overrides" : {
726:  "title" : "Cargo cfg overrides",
727:  "description" : "Comma-separated list of cfg settings to enable, or disable if prefixed with `-`. Can be repeated.\n",
728:  "type" : "array"
729:  },
730:  "logging" : {
731:  "title" : "Options pertaining to logging.",
732:  "description" : "Options pertaining to logging.",
733:  "type" : "object",
734:  "properties" : {
735:  "verbosity" : {
736:  "title" : "Extractor logging verbosity level.",
737:  "description" : "Controls the level of verbosity of the extractor. The supported levels are (in order of increasing verbosity):\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
738:  "type" : "string",
739:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
740:  },
...

928:  }
929:  },
930:  "buildless" : {
931:  "title" : "DEPRECATED - Whether to use buildless (standalone) extraction.",
932:  "description" : "DEPRECATED: Use `--build-mode none` instead.\nA value indicating, which type of extraction the autobuilder should perform. If 'true', then the standalone extractor will be used, otherwise tracing extraction will be performed. The default is 'false'. Note that buildless extraction will generally yield less accurate analysis results, and should only be used in cases where it is not possible to build the code (for example if it uses inaccessible dependencies).\n",
933:  "type" : "string",
934:  "pattern" : "^(false|true)$"
935:  },
936:  "logging" : {
937:  "title" : "Options pertaining to logging.",
938:  "description" : "Options pertaining to logging.",
939:  "type" : "object",
940:  "properties" : {
941:  "verbosity" : {
942:  "title" : "Extractor logging verbosity level.",
943:  "description" : "Controls the level of verbosity of the extractor. The supported levels are (in order of increasing verbosity):\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
944:  "type" : "string",
945:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
946:  }
...

1014:  {
1015:  "extractor_root" : "/opt/hostedtoolcache/CodeQL/2.23.2/x64/codeql/xml"
1016:  }
1017:  ],
1018:  "python" : [
1019:  {
1020:  "extractor_root" : "/opt/hostedtoolcache/CodeQL/2.23.2/x64/codeql/python",
1021:  "extractor_options" : {
1022:  "logging" : {
1023:  "title" : "Options pertaining to logging.",
1024:  "description" : "Options pertaining to logging.",
1025:  "type" : "object",
1026:  "properties" : {
1027:  "verbosity" : {
1028:  "title" : "Python extractor logging verbosity level.",
1029:  "description" : "Controls the level of verbosity of the CodeQL Python extractor.\nThe supported levels are (in order of increasing verbosity):\n\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
1030:  "type" : "string",
1031:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
1032:  }
...

1118:  "description" : "Comma-separated list of features to turn on. By default all features are enabled. If any features are specified, then only those features are enabled. The `default` feature must be explicitly specified if only default features are desired. Can be repeated.\n",
1119:  "type" : "array"
1120:  },
1121:  "cargo_cfg_overrides" : {
1122:  "title" : "Cargo cfg overrides",
1123:  "description" : "Comma-separated list of cfg settings to enable, or disable if prefixed with `-`. Can be repeated.\n",
1124:  "type" : "array"
1125:  },
1126:  "logging" : {
1127:  "title" : "Options pertaining to logging.",
1128:  "description" : "Options pertaining to logging.",
1129:  "type" : "object",
1130:  "properties" : {
1131:  "verbosity" : {
1132:  "title" : "Extractor logging verbosity level.",
1133:  "description" : "Controls the level of verbosity of the extractor. The supported levels are (in order of increasing verbosity):\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
1134:  "type" : "string",
1135:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
1136:  },
...

1324:  }
1325:  },
1326:  "buildless" : {
1327:  "title" : "DEPRECATED - Whether to use buildless (standalone) extraction.",
1328:  "description" : "DEPRECATED: Use `--build-mode none` instead.\nA value indicating, which type of extraction the autobuilder should perform. If 'true', then the standalone extractor will be used, otherwise tracing extraction will be performed. The default is 'false'. Note that buildless extraction will generally yield less accurate analysis results, and should only be used in cases where it is not possible to build the code (for example if it uses inaccessible dependencies).\n",
1329:  "type" : "string",
1330:  "pattern" : "^(false|true)$"
1331:  },
1332:  "logging" : {
1333:  "title" : "Options pertaining to logging.",
1334:  "description" : "Options pertaining to logging.",
1335:  "type" : "object",
1336:  "properties" : {
1337:  "verbosity" : {
1338:  "title" : "Extractor logging verbosity level.",
1339:  "description" : "Controls the level of verbosity of the extractor. The supported levels are (in order of increasing verbosity):\n  - off\n  - errors\n  - warnings\n  - info or progress\n  - debug or progress+\n  - trace or progress++\n  - progress+++\n",
1340:  "type" : "string",
1341:  "pattern" : "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
1342:  }
...

1459:  Picked up JAVA_TOOL_OPTIONS:  -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
1460:  [command]/opt/hostedtoolcache/CodeQL/2.23.2/x64/codeql/java/tools/autobuild.sh 
1461:  Picked up JAVA_TOOL_OPTIONS:  -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
1462:  [2025-10-15 09:35:58] Build directory is .
1463:  [2025-10-15 09:35:58] Discovered Java toolchain for version 21.0.0 at /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9/x64 in /home/runner/.m2/toolchains.xml
1464:  [2025-10-15 09:35:58] Setting Java version to 21.0.0 (toolchains.xml)
1465:  [2025-10-15 09:35:58] Setting JAVA_HOME to /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9/x64
1466:  [2025-10-15 09:35:58] Adding /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9/x64/bin to PATH
1467:  [2025-10-15 09:35:58] [autobuild] > /home/runner/work/youtrackdb/youtrackdb/./mvnw clean package -f pom.xml -B -V -e -Dfindbugs.skip -Dcheckstyle.skip -Dpmd.skip=true -Dspotbugs.skip -Denforcer.skip -Dmaven.javadoc.skip -DskipTests -Dmaven.test.skip.exec -Dlicense.skip=true -Drat.skip=true -Dspotless.check.skip=true -s /home/runner/.m2/settings.xml -t /home/runner/.m2/toolchains.xml
1468:  [2025-10-15 09:35:59] [autobuild] Picked up JAVA_TOOL_OPTIONS:  -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
1469:  [2025-10-15 09:36:04] [autobuild] Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
1470:  [2025-10-15 09:36:04] [autobuild] Maven home: /home/runner/.m2/wrapper/dists/apache-maven-3.9.6-bin/2m80446i9qms68mcuofb7q76k7/apache-maven-3.9.6
1471:  [2025-10-15 09:36:04] [autobuild] Java version: 21.0.8, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm/temurin-21-jdk-amd64
1472:  [2025-10-15 09:36:04] [autobuild] Default locale: en, platform encoding: UTF-8
1473:  [2025-10-15 09:36:04] [autobuild] OS name: "linux", version: "6.11.0-1018-azure", arch: "amd64", family: "unix"
1474:  [2025-10-15 09:36:06] [autobuild] [INFO] Error stacktraces are turned on.
1475:  [2025-10-15 09:36:06] [autobuild] [INFO] Scanning for projects...
...

1489:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/32.1.0-jre/guava-parent-32.1.0-jre.pom (22 kB at 772 kB/s)
1490:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
1491:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom (2.4 kB at 93 kB/s)
1492:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/26.0-android/guava-parent-26.0-android.pom
1493:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/26.0-android/guava-parent-26.0-android.pom (10 kB at 407 kB/s)
1494:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
1495:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom (6.6 kB at 212 kB/s)
1496:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom
1497:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom (2.3 kB at 76 kB/s)
1498:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom
1499:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom (4.3 kB at 165 kB/s)
1500:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
1501:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom (4.8 kB at 193 kB/s)
1502:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.pom
1503:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.pom (2.1 kB at 66 kB/s)
1504:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.pom
1505:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.pom (2.2 kB at 80 kB/s)
1506:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.18.0/error_prone_parent-2.18.0.pom
1507:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.18.0/error_prone_parent-2.18.0.pom (11 kB at 396 kB/s)
1508:  [2025-10-15 09:36:07] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.pom
...

1559:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.pom (2.7 kB at 102 kB/s)
1560:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.36/slf4j-parent-1.7.36.pom
1561:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.36/slf4j-parent-1.7.36.pom (14 kB at 564 kB/s)
1562:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/central/central-publishing-maven-plugin/0.9.0/central-publishing-maven-plugin-0.9.0.jar
1563:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/central/central-publishing-maven-plugin/0.9.0/central-publishing-maven-plugin-0.9.0.jar (112 kB at 3.2 MB/s)
1564:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar
1565:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/github/package-url/packageurl-java/1.4.1/packageurl-java-1.4.1.jar
1566:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/32.1.0-jre/guava-32.1.0-jre.jar
1567:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
1568:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
1569:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar (4.6 kB at 115 kB/s)
1570:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
1571:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar (2.2 kB at 50 kB/s)
1572:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar
1573:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar (269 kB at 5.0 MB/s)
1574:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar
1575:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/github/package-url/packageurl-java/1.4.1/packageurl-java-1.4.1.jar (16 kB at 226 kB/s)
1576:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar
1577:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar (20 kB at 269 kB/s)
1578:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar
1579:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar (224 kB at 2.8 MB/s)
1580:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.18.0/commons-lang3-3.18.0.jar
1581:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar (16 kB at 195 kB/s)
1582:  [2025-10-15 09:36:08] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar
...

1866:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.pom (3.0 kB at 102 kB/s)
1867:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/12/spice-parent-12.pom
1868:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/12/spice-parent-12.pom (6.8 kB at 261 kB/s)
1869:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/4/forge-parent-4.pom
1870:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/4/forge-parent-4.pom (8.4 kB at 300 kB/s)
1871:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom
1872:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom (5.1 kB at 184 kB/s)
1873:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
1874:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom (9.0 kB at 374 kB/s)
1875:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom
1876:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom (2.1 kB at 76 kB/s)
1877:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.11.0/gson-2.11.0.pom
1878:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.11.0/gson-2.11.0.pom (12 kB at 422 kB/s)
1879:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.11.0/gson-parent-2.11.0.pom
1880:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.11.0/gson-parent-2.11.0.pom (26 kB at 867 kB/s)
1881:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.pom
1882:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.pom (4.3 kB at 164 kB/s)
1883:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.0/error_prone_parent-2.27.0.pom
1884:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.0/error_prone_parent-2.27.0.pom (13 kB at 505 kB/s)
1885:  [2025-10-15 09:36:12] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/scm/maven-scm-api/2.1.0/maven-scm-api-2.1.0.jar
...

1936:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.core/0.0.9/jsch.agentproxy.core-0.0.9.jar (9.6 kB at 67 kB/s)
1937:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.pageant/0.0.9/jsch.agentproxy.pageant-0.0.9.jar
1938:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.connector-factory/0.0.9/jsch.agentproxy.connector-factory-0.0.9.jar (12 kB at 84 kB/s)
1939:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.svnkit-trilead-ssh2/0.0.9/jsch.agentproxy.svnkit-trilead-ssh2-0.0.9.jar
1940:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.usocket-jna/0.0.9/jsch.agentproxy.usocket-jna-0.0.9.jar (6.6 kB at 44 kB/s)
1941:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/lz4/lz4-java/1.4.1/lz4-java-1.4.1.jar
1942:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.usocket-nc/0.0.9/jsch.agentproxy.usocket-nc-0.0.9.jar (5.3 kB at 34 kB/s)
1943:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/4.0.1/plexus-utils-4.0.1.jar
1944:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.pageant/0.0.9/jsch.agentproxy.pageant-0.0.9.jar (7.8 kB at 47 kB/s)
1945:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar
1946:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.svnkit-trilead-ssh2/0.0.9/jsch.agentproxy.svnkit-trilead-ssh2-0.0.9.jar (3.8 kB at 23 kB/s)
1947:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
1948:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/jcraft/jsch.agentproxy.sshagent/0.0.9/jsch.agentproxy.sshagent-0.0.9.jar (4.3 kB at 26 kB/s)
1949:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.11.0/gson-2.11.0.jar
1950:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/lz4/lz4-java/1.4.1/lz4-java-1.4.1.jar (370 kB at 2.0 MB/s)
1951:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.jar
1952:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/4.0.1/plexus-utils-4.0.1.jar (193 kB at 1.1 MB/s)
1953:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar (28 kB at 147 kB/s)
1954:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar (13 kB at 71 kB/s)
1955:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.jar (19 kB at 92 kB/s)
1956:  [2025-10-15 09:36:13] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.11.0/gson-2.11.0.jar (298 kB at 1.3 MB/s)
1957:  [2025-10-15 09:36:13] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
1958:  [2025-10-15 09:36:13] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb
1959:  [2025-10-15 09:36:13] [autobuild] [INFO] Storing buildNumber: c3f96e215d4e6444d61fb64a6ab6e9ec4aaa9cd6 at timestamp: 1760520973314
1960:  [2025-10-15 09:36:13] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb' && 'git' 'symbolic-ref' 'HEAD'
1961:  [2025-10-15 09:36:13] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb
1962:  [2025-10-15 09:36:13] [autobuild] [WARNING] Cannot get the branch information from the git repository: 
1963:  [2025-10-15 09:36:13] [autobuild] Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref
1964:  [2025-10-15 09:36:13] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
...

2094:  [2025-10-15 09:36:15] [autobuild] [INFO] 
2095:  [2025-10-15 09:36:15] [autobuild] [INFO] --- clean:3.5.0:clean (default-clean) @ youtrackdb-test-commons ---
2096:  [2025-10-15 09:36:15] [autobuild] [INFO] 
2097:  [2025-10-15 09:36:15] [autobuild] [INFO] --- flatten:1.7.3:clean (flatten.clean) @ youtrackdb-test-commons ---
2098:  [2025-10-15 09:36:15] [autobuild] [INFO] 
2099:  [2025-10-15 09:36:15] [autobuild] [INFO] --- toolchains:3.2.0:select-jdk-toolchain (default) @ youtrackdb-test-commons ---
2100:  [2025-10-15 09:36:15] [autobuild] [INFO] Not using an external toolchain as the current JDK matches the requirements.
2101:  [2025-10-15 09:36:15] [autobuild] [INFO] 
2102:  [2025-10-15 09:36:15] [autobuild] [INFO] --- buildnumber:3.2.1:create (default) @ youtrackdb-test-commons ---
2103:  [2025-10-15 09:36:15] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/test-commons' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
2104:  [2025-10-15 09:36:15] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb/test-commons
2105:  [2025-10-15 09:36:15] [autobuild] [INFO] Storing buildNumber: c3f96e215d4e6444d61fb64a6ab6e9ec4aaa9cd6 at timestamp: 1760520975120
2106:  [2025-10-15 09:36:15] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/test-commons' && 'git' 'symbolic-ref' 'HEAD'
2107:  [2025-10-15 09:36:15] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb/test-commons
2108:  [2025-10-15 09:36:15] [autobuild] [WARNING] Cannot get the branch information from the git repository: 
2109:  [2025-10-15 09:36:15] [autobuild] Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref
2110:  [2025-10-15 09:36:15] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/test-commons' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
...

2388:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/testing/compile/compile-testing/0.23.0/compile-testing-0.23.0.pom (9.2 kB at 353 kB/s)
2389:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.5/truth-1.4.5.pom
2390:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.5/truth-1.4.5.pom (10 kB at 534 kB/s)
2391:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.5/truth-parent-1.4.5.pom
2392:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.5/truth-parent-1.4.5.pom (14 kB at 681 kB/s)
2393:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/33.5.0-jre/guava-33.5.0-jre.pom
2394:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/33.5.0-jre/guava-33.5.0-jre.pom (9.6 kB at 458 kB/s)
2395:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.5.0-jre/guava-parent-33.5.0-jre.pom
2396:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.5.0-jre/guava-parent-33.5.0-jre.pom (24 kB at 1.1 MB/s)
2397:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.3/failureaccess-1.0.3.pom
2398:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.3/failureaccess-1.0.3.pom (5.6 kB at 222 kB/s)
2399:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.4.0-android/guava-parent-33.4.0-android.pom
2400:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.4.0-android/guava-parent-33.4.0-android.pom (22 kB at 978 kB/s)
2401:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.pom
2402:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.pom (1.5 kB at 66 kB/s)
2403:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.41.0/error_prone_annotations-2.41.0.pom
2404:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.41.0/error_prone_annotations-2.41.0.pom (4.3 kB at 236 kB/s)
2405:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.41.0/error_prone_parent-2.41.0.pom
2406:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.41.0/error_prone_parent-2.41.0.pom (16 kB at 724 kB/s)
2407:  [2025-10-15 09:36:27] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/3.1/j2objc-annotations-3.1.pom
...

2442:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar (588 kB at 12 MB/s)
2443:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/testing/compile/compile-testing/0.23.0/compile-testing-0.23.0.jar
2444:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar (106 kB at 1.8 MB/s)
2445:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.5/truth-1.4.5.jar
2446:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/carrotsearch/hppc/0.7.1/hppc-0.7.1.jar (1.1 MB at 18 MB/s)
2447:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.11.0/auto-value-annotations-1.11.0.jar
2448:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/net/objecthunter/exp4j/0.4.8/exp4j-0.4.8.jar (47 kB at 757 kB/s)
2449:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/auto/auto-common/1.2.2/auto-common-1.2.2.jar
2450:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/palantir/javapoet/javapoet/0.7.0/javapoet-0.7.0.jar (109 kB at 1.6 MB/s)
2451:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.jar
2452:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/testing/compile/compile-testing/0.23.0/compile-testing-0.23.0.jar (139 kB at 1.9 MB/s)
2453:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/33.5.0-jre/guava-33.5.0-jre.jar
2454:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.5/truth-1.4.5.jar (278 kB at 3.3 MB/s)
2455:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.3/failureaccess-1.0.3.jar
2456:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/auto/auto-common/1.2.2/auto-common-1.2.2.jar (112 kB at 1.3 MB/s)
2457:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.41.0/error_prone_annotations-2.41.0.jar
2458:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.11.0/auto-value-annotations-1.11.0.jar (7.5 kB at 84 kB/s)
2459:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/3.1/j2objc-annotations-3.1.jar
2460:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.jar (3.8 kB at 42 kB/s)
2461:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.41.0/error_prone_annotations-2.41.0.jar (20 kB at 194 kB/s)
2462:  [2025-10-15 09:36:28] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.3/failureaccess-1.0.3.jar (11 kB at 103 kB/s)
...

2465:  [2025-10-15 09:36:28] [autobuild] [INFO] 
2466:  [2025-10-15 09:36:28] [autobuild] [INFO] --- clean:3.5.0:clean (default-clean) @ youtrackdb-gremlin-annotations ---
2467:  [2025-10-15 09:36:28] [autobuild] [INFO] 
2468:  [2025-10-15 09:36:28] [autobuild] [INFO] --- flatten:1.7.3:clean (flatten.clean) @ youtrackdb-gremlin-annotations ---
2469:  [2025-10-15 09:36:28] [autobuild] [INFO] 
2470:  [2025-10-15 09:36:28] [autobuild] [INFO] --- toolchains:3.2.0:select-jdk-toolchain (default) @ youtrackdb-gremlin-annotations ---
2471:  [2025-10-15 09:36:28] [autobuild] [INFO] Not using an external toolchain as the current JDK matches the requirements.
2472:  [2025-10-15 09:36:28] [autobuild] [INFO] 
2473:  [2025-10-15 09:36:28] [autobuild] [INFO] --- buildnumber:3.2.1:create (default) @ youtrackdb-gremlin-annotations ---
2474:  [2025-10-15 09:36:28] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/gremlin-annotations' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
2475:  [2025-10-15 09:36:28] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb/gremlin-annotations
2476:  [2025-10-15 09:36:28] [autobuild] [INFO] Storing buildNumber: c3f96e215d4e6444d61fb64a6ab6e9ec4aaa9cd6 at timestamp: 1760520988697
2477:  [2025-10-15 09:36:28] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/gremlin-annotations' && 'git' 'symbolic-ref' 'HEAD'
2478:  [2025-10-15 09:36:28] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb/gremlin-annotations
2479:  [2025-10-15 09:36:28] [autobuild] [WARNING] Cannot get the branch information from the git repository: 
2480:  [2025-10-15 09:36:28] [autobuild] Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref
2481:  [2025-10-15 09:36:28] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/gremlin-annotations' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
...

3044:  [2025-10-15 09:36:42] [autobuild] [INFO] 
3045:  [2025-10-15 09:36:42] [autobuild] [INFO] --- clean:3.5.0:clean (default-clean) @ youtrackdb-core ---
3046:  [2025-10-15 09:36:42] [autobuild] [INFO] 
3047:  [2025-10-15 09:36:42] [autobuild] [INFO] --- flatten:1.7.3:clean (flatten.clean) @ youtrackdb-core ---
3048:  [2025-10-15 09:36:42] [autobuild] [INFO] 
3049:  [2025-10-15 09:36:42] [autobuild] [INFO] --- toolchains:3.2.0:select-jdk-toolchain (default) @ youtrackdb-core ---
3050:  [2025-10-15 09:36:42] [autobuild] [INFO] Not using an external toolchain as the current JDK matches the requirements.
3051:  [2025-10-15 09:36:42] [autobuild] [INFO] 
3052:  [2025-10-15 09:36:42] [autobuild] [INFO] --- buildnumber:3.2.1:create (default) @ youtrackdb-core ---
3053:  [2025-10-15 09:36:42] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/core' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
3054:  [2025-10-15 09:36:42] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb/core
3055:  [2025-10-15 09:36:42] [autobuild] [INFO] Storing buildNumber: c3f96e215d4e6444d61fb64a6ab6e9ec4aaa9cd6 at timestamp: 1760521002867
3056:  [2025-10-15 09:36:42] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/core' && 'git' 'symbolic-ref' 'HEAD'
3057:  [2025-10-15 09:36:42] [autobuild] [INFO] Working directory: /home/runner/work/youtrackdb/youtrackdb/core
3058:  [2025-10-15 09:36:42] [autobuild] [WARNING] Cannot get the branch information from the git repository: 
3059:  [2025-10-15 09:36:42] [autobuild] Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref
3060:  [2025-10-15 09:36:42] [autobuild] [INFO] Executing: /bin/sh -c cd '/home/runner/work/youtrackdb/youtrackdb/core' && 'git' 'log' '-1' '--no-merges' '--format=format:%H %aI %aE %aN'
...

3592:  [2025-10-15 09:37:54] [autobuild] [INFO] Recompiling the module because of changed dependency.
3593:  [2025-10-15 09:37:54] [autobuild] [INFO] Compiling 468 source files with javac [debug release 21] to target/test-classes
3594:  [2025-10-15 09:37:57] [autobuild] [INFO] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/common/collection/MultiCollectionIteratorTest.java: Some input files use or override a deprecated API.
3595:  [2025-10-15 09:37:57] [autobuild] [INFO] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/common/collection/MultiCollectionIteratorTest.java: Recompile with -Xlint:deprecation for details.
3596:  [2025-10-15 09:37:57] [autobuild] [INFO] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/common/collection/closabledictionary/ClosableLRUListTest.java: Some input files use unchecked or unsafe operations.
3597:  [2025-10-15 09:37:57] [autobuild] [INFO] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/common/collection/closabledictionary/ClosableLRUListTest.java: Recompile with -Xlint:unchecked for details.
3598:  [2025-10-15 09:37:57] [autobuild] [INFO] Some messages have been simplified; recompile with -Xdiags:verbose to get full output
3599:  [2025-10-15 09:37:57] [autobuild] [INFO] -------------------------------------------------------------
3600:  [2025-10-15 09:37:57] [autobuild] [WARNING] COMPILATION WARNING : 
3601:  [2025-10-15 09:37:57] [autobuild] [INFO] -------------------------------------------------------------
3602:  [2025-10-15 09:37:57] [autobuild] [WARNING] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/common/test/SpeedTestData.java:[84,25] runFinalization() in java.lang.Runtime has been deprecated and marked for removal
3603:  [2025-10-15 09:37:57] [autobuild] [WARNING] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/common/test/SpeedTestData.java:[116,25] runFinalization() in java.lang.Runtime has been deprecated and marked for removal
3604:  [2025-10-15 09:37:57] [autobuild] [INFO] 2 warnings 
3605:  [2025-10-15 09:37:57] [autobuild] [INFO] -------------------------------------------------------------
3606:  [2025-10-15 09:37:57] [autobuild] [INFO] -------------------------------------------------------------
3607:  [2025-10-15 09:37:57] [autobuild] [ERROR] COMPILATION ERROR : 
3608:  [2025-10-15 09:37:57] [autobuild] [INFO] -------------------------------------------------------------
3609:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[218,36] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3610:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[258,54] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3611:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[294,55] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3612:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[330,54] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3613:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[33,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3614:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[129,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3615:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[170,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3616:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[211,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3617:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[260,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3618:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[309,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3619:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[367,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3620:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[425,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3621:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[470,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3622:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[530,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3623:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[569,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3624:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[621,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3625:  [2025-10-15 09:37:57] [autobuild] [INFO] 16 errors 
3626:  [2025-10-15 09:37:57] [autobuild] [INFO] -------------------------------------------------------------
3627:  [2025-10-15 09:37:57] [autobuild] [INFO] ------------------------------------------------------------------------
3628:  [2025-10-15 09:37:57] [autobuild] [INFO] Reactor Summary for YouTrackDB 0.5.0-SNAPSHOT:
3629:  [2025-10-15 09:37:57] [autobuild] [INFO] 
3630:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB ......................................... SUCCESS [  5.276 s]
3631:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Test Commons ............................ SUCCESS [ 10.228 s]
3632:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Gremlin Annotations Plugin .............. SUCCESS [ 11.322 s]
3633:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Core .................................... FAILURE [01:22 min]
3634:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Client .................................. SKIPPED
3635:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Tools ................................... SKIPPED
3636:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Gremlin Driver .......................... SKIPPED
3637:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Server .................................. SKIPPED
3638:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Security Plugin ......................... SKIPPED
3639:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Tests ................................... SKIPPED
3640:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Lucene full text index .................. SKIPPED
3641:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Community Distribution .................. SKIPPED
3642:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Console Distribution .................... SKIPPED
3643:  [2025-10-15 09:37:57] [autobuild] [INFO] YouTrackDB Gremlin Console ......................... SKIPPED
3644:  [2025-10-15 09:37:57] [autobuild] [INFO] ------------------------------------------------------------------------
3645:  [2025-10-15 09:37:57] [autobuild] [INFO] BUILD FAILURE
3646:  [2025-10-15 09:37:57] [autobuild] [INFO] ------------------------------------------------------------------------
3647:  [2025-10-15 09:37:57] [autobuild] [INFO] Total time:  01:51 min
3648:  [2025-10-15 09:37:57] [autobuild] [INFO] Finished at: [2025-10-15 09:37:57] [autobuild] [INFO] ------------------------------------------------------------------------
3649:  [2025-10-15 09:37:57] [autobuild] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.1:testCompile (default-testCompile) on project youtrackdb-core: Compilation failure: Compilation failure: 
3650:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[218,36] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3651:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[258,54] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3652:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[294,55] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3653:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/AsyncReadCacheTestIT.java:[330,54] incompatible types: int cannot be converted to com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler
3654:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[33,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3655:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[129,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3656:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[170,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3657:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[211,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3658:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[260,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3659:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[309,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3660:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[367,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3661:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[425,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3662:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[470,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3663:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[530,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted to java.util.concurrent.ConcurrentHashMap<java.lang.Long,com.jetbrains.youtrackdb.internal.core.storage.cache.FileHandler>
3664:  [2025-10-15 09:37:57] [autobuild] [ERROR] /home/runner/work/youtrackdb/youtrackdb/core/src/test/java/com/jetbrains/youtrackdb/internal/core/storage/cache/chm/WTinyLFUPolicyTest.java:[569,39] incompatible types: java.util.concurrent.ConcurrentHashMap<com.jetbrains.youtrackdb.internal.core.storage.cache.chm.PageKey,com.jetbrains.youtrackdb.internal.core.storage.cache.CacheEntry> cannot be converted ...

@andrii0lomakin
Copy link
Collaborator

@logart, can you mark it as a draft so it does not trigger reviews and builds? Alos your comment will be unnecessary in such case.

@logart logart marked this pull request as draft October 17, 2025 07:02
@logart
Copy link
Collaborator Author

logart commented Oct 17, 2025

@logart, can you mark it as a draft so it does not trigger reviews and builds? Alos your comment will be unnecessary in such case.

Sorry, I am new to this 🙂

lpld and others added 11 commits October 17, 2025 12:01
### **User description**
Previous implementation of `RecordIteratorCollection` had a flaw: it
could return records that were created after the iteration has started.
This can seem like a minor and tolerable problem, but because of it we
had issues with the following simple Gremlin query:
```java
g.V().addVertex("XXX");
```

The `V()` step started iteration over a bunch of collections, and for
each returned vertex it created a new one. The amount of created
vertices for this query must be equal to the total amount of vertices
that existed before the query was run. But because of the problem
described above, such queries could create more vertices than they were
expected to.

This change addresses this issue and improves some of the internals of
the collection iteration logic inside the database core. More
specifically:
1. `RecordIteratorCollection` was completely re-written. Now it uses the
storage-level `browseCollection` method, also loading new records from
the active transaction. The crucial moment here is that now it is
initialized as early as possible and remembers the lower negative record
id from the current transaction (that corresponds to the latest of the
newly created records). This allows the iterator to ignore all records
that were created in the current transaction after the iteration has
already started.
2. Some obsolete methods (related to collection iteration) were removed
from `DatabaseSession` and `FrontendTransaction`.
3. `Storage#browseCollection` was extended to support backward
iteration.
4. Some duplicating code was removed from `CollectionPositionMapV2`.
(See `ceilingPositionsImpl` and `floorPositionsImpl`)
5. Some changes were also made to the SQL engine: 1)
`FetchFromClassExecutionStep` is refactored to work directly with
`RecordIteratorCollections` instead of creating child
`FetchFromCollectionExecutionStep`s; 2) Obsolete
`FetchTemporaryFromTxStep` was removed.
6. New unit tests were added

___

### **PR Type**
Bug fix, Enhancement

___

### **Description**
- Fixed `RecordIteratorCollection` to ignore records created after
iteration starts

- Refactored collection iteration to use storage-level
`browseCollection` with backward support

- Removed obsolete transaction methods for fetching
first/last/next/previous RIDs

- Simplified SQL execution steps by removing `FetchTemporaryFromTxStep`
and refactoring `FetchFromClassExecutionStep`

___

### Diagram Walkthrough

```mermaid
flowchart LR
  A["RecordIteratorCollection"] -- "uses" --> B["Storage.browseCollection"]
  A -- "tracks" --> C["minTxPosition"]
  C -- "filters" --> D["new records"]
  E["FetchFromClassExecutionStep"] -- "directly uses" --> A
  F["FrontendTransaction"] -- "updated" --> G["getNextRidInCollection"]
  F -- "updated" --> H["getPreviousRidInCollection"]
```

<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>15
files</summary><table>
<tr>
<td><strong>RecordIteratorCollection.java</strong><dd><code>Complete
rewrite to use storage browsing and track transaction
</code><br><code>boundaries</code></dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-c249449ff5cb66291fe5f6523f2c355acf0e718dc0cb9f33c256ea783b783609">+141/-98</a></td>

</tr>

<tr>
<td><strong>DatabaseSessionEmbedded.java</strong><dd><code>Removed
obsolete RID fetching methods and simplified record
loading</code></dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-3c777f924fbf985c3359b6e5cdc1fc1bc4a7c60c2ee1aa40b5db3d7994fd4858">+72/-360</a></td>

</tr>

<tr>
<td><strong>CollectionPositionMapV2.java</strong><dd><code>Refactored
position lookup methods to eliminate code duplication</code></dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-9d9e057f3e9bebdbf7caf0878676aa01f6ff1a66501edb805ca6f5195ef5a902">+202/-99</a></td>

</tr>

<tr>
<td><strong>FrontendTransactionImpl.java</strong><dd><code>Updated RID
navigation methods with boundary parameters</code>&nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-26b69080948d95b696417d1d7100a2b8e293b4695ccc1951fddedc9419df6e41">+23/-62</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>AbstractStorage.java</strong><dd><code>Added
forward/backward support to `browseCollection` method</code></dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-c7fcdc04e6cb32a418540581105e7020a1cd6ae785f3b47b9c3bd5fe0ab5bc9e">+20/-39</a>&nbsp;
</td>

</tr>

<tr>

<td><strong>FetchFromClassExecutionStep.java</strong><dd><code>Refactored
to use `RecordIteratorCollections` directly</code>&nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-b017f278f620509cade0460171fdb622565cd3114f9dbc5640d151812c582c26">+20/-112</a></td>

</tr>

<tr>
<td><strong>FrontendTransaction.java</strong><dd><code>Updated interface
signatures for RID navigation methods</code>&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-f1d198cf5719404f27b035b65404f5218d9f38767f8988cf111d6ecd4b1ecb08">+3/-11</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>DatabaseSessionInternal.java</strong><dd><code>Simplified
`executeReadRecord` method signature</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-540333e93601bc669e56faeb7819373a513328e2a0f4b54e46307da9d628a8e3">+18/-19</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>Storage.java</strong><dd><code>Simplified `readRecord`
method signature</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-f978f656279d1bd3352f31f714947b375f6e53c2abab808e226b6776756181e4">+1/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>CollectionBrowsePage.java</strong><dd><code>Removed
redundant `lastPosition` constructor parameter</code>&nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-05e4359a87c0374482835a21bd64e5ca5dd6aee15172f4aae6bec6f548733a78">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>PaginatedCollectionV2.java</strong><dd><code>Updated
`nextPage` to support forward and backward iteration</code></dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-bb58f10c8b88e48843a6889b425ac0ecaf52983bcbc374cad6a39008ee945f49">+11/-7</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>RecordIteratorCollections.java</strong><dd><code>Added early
initialization of collection iterators</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-9c79047c861faebe3c45cdca937e49e84b1888250151ae5ece8e1c8d29f4ad86">+13/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>

<td><strong>FetchFromCollectionExecutionStep.java</strong><dd><code>Simplified
iterator creation logic</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-c352b5e42083baaa60cc40902ba6dda09b757ceecd454cc9229710f103532c42">+5/-11</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>FrontendTransactionNoTx.java</strong><dd><code>Updated
method signatures to match interface changes</code>&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-d304e5ac893894f3e20089414af694f9090b3cab227e97c588d435f81e34acd4">+7/-16</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>StorageCollection.java</strong><dd><code>Added `forward`
parameter to `nextPage` method</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-3627d11ffaaf00acb14c0eb8c2ddecf448adca3445f917f7e2e9054e9bf51fb3">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>5
files</summary><table>
<tr>
<td><strong>RecordIteratorCollectionTest.java</strong><dd><code>Added
comprehensive tests for forward and backward iteration</code></dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-657f94d32895a7bb21b5f41d78aa29833a2e495e2dcbaf8f87852ff59fcf5be1">+78/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>DatabaseDocumentTxTest.java</strong><dd><code>Added tests
for vertex creation during iteration</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-d15f01a0845a931b370f9c1b85539e65821837be4958891dd8b3697b559fb583">+88/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>CommandExecutorSQLSelectTest.java</strong><dd><code>Updated
tests for RID ordering validation</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-fe252fc37570376782f4c70affe8d00534896653b1b7793de2eb53f49fa6a059">+34/-29</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>BrowseCollectionTest.java</strong><dd><code>Added tests for
forward and backward collection browsing</code>&nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-f1cb5aeb39e39b36cbc1d827993f9fb814804f18e7075cf01bb6a1bfe521f1d9">+30/-8</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>YTDBAddVertexProcessTest.java</strong><dd><code>Added
Gremlin tests for vertex creation during iteration</code>&nbsp;
</dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-3f37ed8e04cc55aaee3c20c2151a5b2708cf9cbe8555b0c068a73b781a0e4ef7">+51/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>9 files</summary><table>
<tr>
  <td><strong>StorageCollectionRemote.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-f47141e663060c2d2df25860dcb8d555efffe6e95c10d132785466aec92e0ed9">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>LoadRecordResult.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-9dc46689b14a30118ec14f0d5e3090ac9ba6405bb9624227c3337461b6ee5bb0">+0/-10</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>DatabaseCompare.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-b34116bc928c48e90529a00bf92020cca60deac2521a20428e46f2ab3b4fbd5e">+2/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>RecordIteratorClass.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-10c73ade981e71e68af32ed0aec306c269ffa8eff4f19c207e5c9a53b655b81d">+8/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>FetchTemporaryFromTxStep.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-eed0349122c08e64c33a3a17dc3ad14869913341071f2e04165c5054a1c8e00d">+0/-147</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ReadRecordResult.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-8041922ef2b14f1a78901328a0e23ea3470c4656ba18ae505056723995e6ab42">+0/-11</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>DiskStorage.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-b6bb9d3c7d6cb1157cf88d919fce9e2e9bc11fe9e31cedac858e685e222f7f04">+3/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>PostponedEngineStartTest.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-dea20a170e093adcd0b17982acc1346f731168605cdb782e29688593e3fade72">+2/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>YTDBGremlinProcessTests.java</strong></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/564/files#diff-2769b2267e07f41ec36bb8a3718bc50d048baf68913a2a73c7f092bb5643056b">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
### **User description**
This change enables and fixes the standard TinkerPop gherkin tests for
embedded mode: `YTDBGraphFeatureTest`. Also, there is a disabled gherkin
tests suite for remote mode that is failing at the moment:
`YTDBRemoteGraphFeatureTest`. Those tests will be addressed as a
separate task.

Details of the change:
1. A `data` folder has been added to the `core` module with data for
TinkerPop `io` tests.
2. Several fixed has been provided to make all tests work, namely:
   - null check in `YTDBGraphImplAbstract`
- special handling of `P.eq(null)` and `P.neq(null)` predicates in
`YTDBGraphQueryBuilder`
- `YTDBGraphStepStrategy` has been extended to handle cases when string
IDs are being used in `ReferenceVertex` and `ReferenceEdge`
3. A new cucumber suite `YTDBGraphFeatureTest` for running the standard
TinkerPop gherkin features has been added. It is discovered
automatically by `maven-surefire-plugin`.
4. There is an issue with the logs from cucumber tests: when run via
maven, the tests don't produce any output, unless they fail - in this
case it can be seen which test has failed and what exception has
occurred. Gemini suggested that the problem might be related to the
surefire's specifics of working with system output. Setting surefire's
config option `redirectTestOutputToFile` to false seems to resolve the
problem partially, the logs start to appear, but they are quite useless:
there is no information about what scenarios are being executed. I
haven't spent much on this issue, @andrii0lomakin WDYT? At the moment
those logs don't seem to be much needed.

___

### **PR Type**
Enhancement, Tests

___

### **Description**
- Enable TinkerPop Gherkin tests for embedded mode with
`YTDBGraphFeatureTest`

- Fix null handling in element queries and `P.eq(null)`/`P.neq(null)`
predicates

- Handle string IDs in `ReferenceVertex` and `ReferenceEdge` via side
effects rebuilding

- Add remote mode Gherkin tests suite (currently disabled) and test data
files

___

### Diagram Walkthrough

```mermaid
flowchart LR
  A["TinkerPop Gherkin Tests"] --> B["YTDBGraphFeatureTest<br/>Embedded Mode"]
  A --> C["YTDBRemoteGraphFeatureTest<br/>Remote Mode Disabled"]
  D["Null Handling Fixes"] --> E["YTDBGraphImplAbstract<br/>Filter null IDs"]
  D --> F["YTDBGraphQueryBuilder<br/>Handle P.eq/neq null"]
  G["Side Effects Fixes"] --> H["YTDBGraphStepStrategy<br/>Convert String IDs to RID"]
  B --> I["Test Data Files<br/>JSON/XML/Kryo"]
```

<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><details><summary>3 files</summary><table>
<tr>
<td><strong>YTDBGraphImplAbstract.java</strong><dd><code>Add null
filtering for element IDs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-e6c162ecde29684f797970119d4cd26d11edacdc7475410ae6dba4a109bb2d91">+3/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>YTDBGraphQueryBuilder.java</strong><dd><code>Handle null
predicates and improve condition building</code>&nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-65d542f511015af37b9f347a9d8c09aee1988d0919dc5b34ceb2d8b55d558c96">+54/-20</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>YTDBGraphStepStrategy.java</strong><dd><code>Convert string
IDs to RID in side effects</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-2510599dea7fac4847bd60eca0557c8598619ea99b06738eabdbae1ee1161153">+49/-1</a>&nbsp;
&nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>8
files</summary><table>
<tr>
<td><strong>YTDBGraphFeatureTest.java</strong><dd><code>Add embedded
mode Gherkin test suite</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-cb14eba39a600bb65a33398b464ca198e5c5476e77d437f8384987a5a0e2ac1f">+173/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>YTDBGraphInitUtil.java</strong><dd><code>Extract shared
graph initialization configuration</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-66275bdb11ae675911ee9caa1144417640eb62faf14624bd430f6a9ea95492b6">+39/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>YTDBGraphProvider.java</strong><dd><code>Refactor to use
shared initialization utility</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-081f5f6a105906ae35a2c104ecbc482df7cdce3d974a00a898040f17b199003c">+1/-26</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>YTDBAbstractRemoteGraphProvider.java</strong><dd><code>Add
connection cleanup method for tests</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-0d4ef68c1fc964095e1879f2382a4e92d90ad8b8f6e264f32c924c6dea9a16ec">+12/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>YTDBRemoteGraphFeatureTest.java</strong><dd><code>Add remote
mode Gherkin test suite disabled</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-165889ccc90cc119fe14ab149b6fd60e9e4ea5d45417807405dfe146cbeac43c">+119/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>tinkerpop-modern.json</strong><dd><code>Add TinkerPop modern
graph test data JSON</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-76775f79500d30caff8f6b5f4056b71f3c351a6f569bb6f10fe71e96ae75d11f">+6/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>tinkerpop-modern.kryo</strong><dd><code>Add TinkerPop modern
graph test data Kryo</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-76a8d4873c3fae6b0c65faa751004f65ec23f312f908aff51e0b5fb2c0f3898c">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>tinkerpop-modern.xml</strong><dd><code>Add TinkerPop modern
graph test data XML</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-f3393d5e41dc65e1dbbc0a2361898ad16fe72afe48e5658406d00a65a0c614a4">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>4 files</summary><table>
<tr>
<td><strong>pom.xml</strong><dd><code>Add Guice dependency and JVM
module exports</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-8d04401f1cc51365fe3e32f019cd720135ba920a1a7da7f19e9c9208478701fc">+21/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>cucumber.properties</strong><dd><code>Configure Cucumber
Guice injector source</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-81af79a206c548caa401c8db2c244b38b234890a06269047e55c5d059f92d20b">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>pom.xml</strong><dd><code>Add Guice dependency and JVM
module exports</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-499f9785514a81b7e7e70d390700ba3314a034a444221a5b83f9c7cd05426340">+24/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>cucumber.properties</strong><dd><code>Configure Cucumber
Guice injector source</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/JetBrains/youtrackdb/pull/565/files#diff-ba47115a7e75b7fbd6ca885486f1e1d8907bfd43544c7807aaa30924c0b73b81">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
THIS IS WIP, PLEASE DO NOT MERGE.

Fix algorithm to work on cas array.
TODO data is never populated. I need to find a place where fileHandlers are created and populate the cache.
This change introduces a new interface `YTDBProperty` that extends the
standard TinkerPop's `Property` with a new `PropertyType type()` method
for obtaining the type of the property. All properties that can be
obtained from YouTrackDB Elements now extends this interface. This
change came with several challenges:
1. Previously YTDB elements returned standard `Property` and
`VertexProperty`. This allowed us to make use of TinkerPop's
`EmptyProperty` and `EmptyVertexProperty`. Now that we must return
`YTDBProperty`, we've added two new "empty" implementations:
`YTDBEmptyProperty` and `YTDBEmptyVertexProperty`.
2. Unfortunately, two of the standard TinkerPop structure tests expect
concrete "empty" types: `EmptyProperty` and `EmptyVertexProperty`. In
order to fix this we had to replace those suites with the new ones that
override those failing scenarios.
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3 to 4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.30.8</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.30.8 - 10 Oct 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.30.8/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.30.7</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.30.7 - 06 Oct 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.30.7/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.30.6</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.30.6 - 02 Oct 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.2. <a
href="https://redirect.github.com/github/codeql-action/pull/3168">#3168</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.30.6/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.30.5</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.30.5 - 26 Sep 2025</h2>
<ul>
<li>We fixed a bug that was introduced in <code>3.30.4</code> with
<code>upload-sarif</code> which resulted in files without a
<code>.sarif</code> extension not getting uploaded. <a
href="https://redirect.github.com/github/codeql-action/pull/3160">#3160</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.30.5/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.30.4</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.30.4 - 25 Sep 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h2>3.29.4 - 23 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.3 - 21 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.2 - 30 Jun 2025</h2>
<ul>
<li>Experimental: When the <code>quality-queries</code> input for the
<code>init</code> action is provided with an argument, separate
<code>.quality.sarif</code> files are produced and uploaded for each
language with the results of the specified queries. Do not use this in
production as it is part of an internal experiment and subject to change
at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2935">#2935</a></li>
</ul>
<h2>3.29.1 - 27 Jun 2025</h2>
<ul>
<li>Fix bug in PR analysis where user-provided <code>include</code>
query filter fails to exclude non-included queries. <a
href="https://redirect.github.com/github/codeql-action/pull/2938">#2938</a></li>
<li>Update default CodeQL bundle version to 2.22.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2950">#2950</a></li>
</ul>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.21 - 28 July 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.20 - 21 July 2025</h2>
<ul>
<li>Remove support for combining SARIF files from a single upload for
GHES 3.18, see <a
href="https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload/">the
changelog post</a>. <a
href="https://redirect.github.com/github/codeql-action/pull/2959">#2959</a></li>
</ul>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/a841c540b73bac7685691a2f930006ba52db3645"><code>a841c54</code></a>
Scratch <code>uploadSpecifiedFiles</code> tests, make
<code>uploadPayload</code> tests instead</li>
<li><a
href="https://github.com/github/codeql-action/commit/aeb12f6eaaa7419b7170f27dc3e2b5710203ff2d"><code>aeb12f6</code></a>
Merge branch 'main' into redsun82/skip-sarif-upload-tests</li>
<li><a
href="https://github.com/github/codeql-action/commit/6fd4ceb7bbb8ec2746fd4d3a64b77787dffd9afc"><code>6fd4ceb</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3189">#3189</a>
from github/henrymercer/download-codeql-rate-limit</li>
<li><a
href="https://github.com/github/codeql-action/commit/196a3e577b477ffb129cb35c7ed3ba72e6e2dbe7"><code>196a3e5</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3188">#3188</a>
from github/mbg/telemetry/partial-config</li>
<li><a
href="https://github.com/github/codeql-action/commit/98abb870dcd6421594724ae220643e13baf90298"><code>98abb87</code></a>
Add configuration error for rate limited CodeQL download</li>
<li><a
href="https://github.com/github/codeql-action/commit/bdd2cdf891a0a89c6680bd54c9ba63c80e440f75"><code>bdd2cdf</code></a>
Also include <code>language</code> in error status report for
<code>start-proxy</code>, if available</li>
<li><a
href="https://github.com/github/codeql-action/commit/fb148789ab863424b005147b4b018fe5691e5ccc"><code>fb14878</code></a>
Include <code>languages</code> in <code>start-proxy</code>
telemetry</li>
<li><a
href="https://github.com/github/codeql-action/commit/2ff418f28a66dd71cd80701e95ec26db12875f15"><code>2ff418f</code></a>
Parse <code>language</code> before calling
<code>getCredentials</code></li>
<li>See full diff in <a
href="https://github.com/github/codeql-action/compare/v3...v4">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3&new-version=4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>
…557)

Bumps
[org.apache.maven.plugins:maven-pmd-plugin](https://github.com/apache/maven-pmd-plugin)
from 3.27.0 to 3.28.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/apache/maven-pmd-plugin/releases">org.apache.maven.plugins:maven-pmd-plugin's
releases</a>.</em></p>
<blockquote>
<h2>3.28.0</h2>
<!-- raw HTML omitted -->
<h2>🚀 New features and improvements</h2>
<ul>
<li>Bump pmdVersion from 7.16.0 to 7.17.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/661">#661</a>)
<a
href="https://github.com/timpeeters"><code>@​timpeeters</code></a></li>
<li>Bump pmdVersion from 7.15.0 to 7.16.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/652">#652</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump pmdVersion from 7.14.0 to 7.15.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/643">#643</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
</ul>
<h2>📝 Documentation updates</h2>
<ul>
<li>Update historical PMD version in docs (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/662">#662</a>)
<a
href="https://github.com/slawekjaranowski"><code>@​slawekjaranowski</code></a></li>
<li>Document that excludes takes priority over includes (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/645">#645</a>)
<a href="https://github.com/elharo"><code>@​elharo</code></a></li>
</ul>
<h2>👻 Maintenance</h2>
<ul>
<li>feat: enable prevent branch protection rules (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/653">#653</a>)
<a href="https://github.com/sparsick"><code>@​sparsick</code></a></li>
<li>Add Apache 2.0 LICENSE file (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/650">#650</a>)
<a
href="https://github.com/Ndacyayisenga-droid"><code>@​Ndacyayisenga-droid</code></a></li>
<li>Prefer JDK built-in methods for string joining (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/646">#646</a>)
<a href="https://github.com/elharo"><code>@​elharo</code></a></li>
<li><a
href="https://issues.apache.org/jira/browse/MPMD-412">[MPMD-412]</a> -
More specific catch blocks (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/642">#642</a>)
<a href="https://github.com/elharo"><code>@​elharo</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li>Bump org.apache.commons:commons-lang3 from 3.8.1 to 3.18.0 in ITs
(<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/648">#648</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump pmdVersion from 7.16.0 to 7.17.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/661">#661</a>)
<a
href="https://github.com/timpeeters"><code>@​timpeeters</code></a></li>
<li>Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/658">#658</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.plexus:plexus-resources from 1.3.0 to 1.3.1 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/654">#654</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.plexus:plexus-i18n from 1.0-beta-10 to 1.0.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/655">#655</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump pmdVersion from 7.15.0 to 7.16.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/652">#652</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump commons-io:commons-io from 2.19.0 to 2.20.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/651">#651</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump mavenVersion from 3.9.10 to 3.9.11 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/649">#649</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/647">#647</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump resolverVersion from 1.9.23 to 1.9.24 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/644">#644</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump pmdVersion from 7.14.0 to 7.15.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/pull/643">#643</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/f152a3a9c284aa53ea9c7ce90553917fd9975358"><code>f152a3a</code></a>
[maven-release-plugin] prepare release maven-pmd-plugin-3.28.0</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/0678fd1745e49d9953f661699683568a9adfd0a1"><code>0678fd1</code></a>
Update historical PMD version in docs</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/41d5069a387acb232cf562b3f7a025b08a268888"><code>41d5069</code></a>
Bump org.apache.commons:commons-lang3 from 3.8.1 to 3.18.0 in ITs (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/issues/648">#648</a>)</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/3ef805b36e7ab454ed4e4fefc7d81ec804b4a9e4"><code>3ef805b</code></a>
Bump pmdVersion from 7.16.0 to 7.17.0</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/592d703ba4df69a9c2c3f6ff35b3eec9cbc0c0f9"><code>592d703</code></a>
Add hacktoberfest label to project</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/ced9373304941f0b171377f52043748513c3b5e9"><code>ced9373</code></a>
Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/issues/658">#658</a>)</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/3cf5bc12c44e548b6a43a49b5c32dd628b7646df"><code>3cf5bc1</code></a>
Bump org.codehaus.plexus:plexus-resources from 1.3.0 to 1.3.1 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/issues/654">#654</a>)</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/9077c3b0386bb04a1895cbd9eaa65518a83f647f"><code>9077c3b</code></a>
Bump org.codehaus.plexus:plexus-i18n from 1.0-beta-10 to 1.0.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/issues/655">#655</a>)</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/12ed57a181da37f2c6c032d24146d5ac026b832b"><code>12ed57a</code></a>
feat: enable prevent branch protection rules (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/issues/653">#653</a>)</li>
<li><a
href="https://github.com/apache/maven-pmd-plugin/commit/fff2b951e79d671a3119ffa8c62a4d24a7faeada"><code>fff2b95</code></a>
Bump pmdVersion from 7.15.0 to 7.16.0 (<a
href="https://redirect.github.com/apache/maven-pmd-plugin/issues/652">#652</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/apache/maven-pmd-plugin/compare/maven-pmd-plugin-3.27.0...maven-pmd-plugin-3.28.0">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-pmd-plugin&package-manager=maven&previous-version=3.27.0&new-version=3.28.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>
…562)

Bumps
[org.codehaus.mojo:animal-sniffer-maven-plugin](https://github.com/mojohaus/animal-sniffer)
from 1.24 to 1.26.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mojohaus/animal-sniffer/releases">org.codehaus.mojo:animal-sniffer-maven-plugin's
releases</a>.</em></p>
<blockquote>
<h2>1.26</h2>
<!-- raw HTML omitted -->
<h2>📦 Dependency updates</h2>
<ul>
<li>Bump org.apache.maven.enforcer:enforcer-api from 3.6.1 to 3.6.2 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/308">#308</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.ow2.asm:asm from 9.8 to 9.9 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/310">#310</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 93 to 94 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/309">#309</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.maven.plugins:maven-shade-plugin from 3.6.0 to 3.6.1
(<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/306">#306</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/307">#307</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 92 to 93 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/305">#305</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.maven.enforcer:enforcer-api from 3.5.0 to 3.6.1 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/304">#304</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 in
/animal-sniffer-maven-plugin (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/303">#303</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 91 to 92 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/300">#300</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 87 to 91 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/299">#299</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.ow2.asm:asm from 9.7.1 to 9.8 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/296">#296</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump release-drafter/release-drafter from 6.0.0 to 6.1.0 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/294">#294</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 86 to 87 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/295">#295</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 85 to 86 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/291">#291</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.ow2.asm:asm from 9.7 to 9.7.1 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/293">#293</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.plexus:plexus-utils from 4.0.1 to 4.0.2 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/292">#292</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.ant:ant from 1.10.14 to 1.10.15 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/290">#290</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.commons:commons-lang3 from 3.16.0 to 3.17.0 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/289">#289</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 84 to 85 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/288">#288</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.commons:commons-lang3 from 3.15.0 to 3.16.0 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/287">#287</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.15.0 (<a
href="https://redirect.github.com/mojohaus/animal-sniffer/pull/286">#286</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/a2d9596a701cc8c7a4b1741d5f09e8c16316d442"><code>a2d9596</code></a>
[maven-release-plugin] prepare release animal-sniffer-1.26</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/8ddba10891aacc752764ba1e650a11f0f7924c70"><code>8ddba10</code></a>
Bump org.apache.maven.enforcer:enforcer-api from 3.6.1 to 3.6.2</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/9769fedb3e9fe0848da50dff0e69e042092bbb76"><code>9769fed</code></a>
Bump org.ow2.asm:asm from 9.8 to 9.9</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/9068888c1cfcbac9555e9355563ef1183d701aec"><code>9068888</code></a>
Bump org.codehaus.mojo:mojo-parent from 93 to 94</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/e5511564882de3ef5cc6a2b0a301259520a256dd"><code>e551156</code></a>
Bump org.apache.maven.plugins:maven-shade-plugin from 3.6.0 to
3.6.1</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/ae8fee6139ec7c59fe1c2e2ae8f142ff3ddc3bcd"><code>ae8fee6</code></a>
Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/7077f45bf291b1cc524c5142c30a652cd74c3513"><code>7077f45</code></a>
Bump org.codehaus.mojo:mojo-parent from 92 to 93</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/7e996d83dfaa30bf8678f9ea21c1ad75e81ee5d3"><code>7e996d8</code></a>
Bump org.apache.maven.enforcer:enforcer-api from 3.5.0 to 3.6.1</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/3a1de2d92177553de6c253700634b27f112940ca"><code>3a1de2d</code></a>
Bump org.apache.commons:commons-lang3 in
/animal-sniffer-maven-plugin</li>
<li><a
href="https://github.com/mojohaus/animal-sniffer/commit/9f6d51f0f0efd8a96b92f55a14778fc156f121c2"><code>9f6d51f</code></a>
Bump org.codehaus.mojo:mojo-parent from 91 to 92</li>
<li>Additional commits viewable in <a
href="https://github.com/mojohaus/animal-sniffer/compare/animal-sniffer-1.24...animal-sniffer-1.26">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.codehaus.mojo:animal-sniffer-maven-plugin&package-manager=maven&previous-version=1.24&new-version=1.26)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>
artem.loginov and others added 30 commits January 6, 2026 07:09
Fix NPE and default values(mostly null) introduced while refactoring.
)

Public API:

This PR adds a public API to work with databases on the server using
`YouTracks#instance(host, port, user, password)` method to connect to
the server.

After that, the user can add server-level users to the server using the
YouTrackDB#createSystemUser method. The following PRs will add more
methods to handle server user methods.

Internal implementation:
1. `YTDBGremlinSaslAuthenticationHandler` was added to send dbName to
the server as authorizationId. That will allow future PRs to perform
user queries to the server, not on behalf of server-wide (system users),
but on behalf of a user registered in a single database.
2. `YTDBDriverRemoteConnection` and `YTDBDriverRemoteTraversal` are now
tracking the changes of RIDs of new records instead of
`YTDBGremlinResponseHandler` that in new implementation only passes this
mapping to the respective classes. That allows us to update RIDs of
committed vertices not only at the level of a single query but on the
level of several queries that are executed inside a single transaction.
3. Tests for handling of TX on the server level were added, though we
need to have more tests for TX tracking in the future.
4. YTDB-specific OpProcessors were added. They are, in a nutshell, a
reflection of the original implementation with two important
differences:
- We use only ANTL for parsing of Gremlin-Script, so no Groovy anymore,
as it is a big security hole.
- We work with only a single database on a single traversal level, which
allows us to integrate Gremlin Server lifecycle with our own lifecycle
seamlessly.
Fixing  IT tests failing on CI.

The following bugs were fixed:
1. Storage close was not robust enough to correctly close the database
after the file system crash.
2. FreeSpaceMapTestIT did not calculate the expected free space
correctly.
3. Tests used the GlobalConfiguration (JVM-wide) parameter for
encryption of data instead of test-local.
4. DefaultCollectionTest uses an incorrect path to the file system.
It is no longer possible to access YTDB by Graph instance using the
public API.
That is done to ensure that there is only one data source that works
uniformly over all deployments, both remote and embedded.

As a result:
1.  YourTracks methods for fetching the Graph instance were removed.
2. Console README.md example was redeveloped.
3. An example of the usage of an embedded database was added as a
standalone project module.
4. Scripts that are used to start the console were restored as they were
removed by previous changes.
5. YTDBGraph interface was moved to internal API packages.
It is a POC to check the timing of execution of this pipeline on GitHub
actions and understand if it is feasible for us or not.
RatioTest.asyncRatio seemed to collect the data for a short interval of
100 milliseconds, which appeared to be too low for a precise ratio
calculation with current metrics collection mechanism. This PR increases
that value to 1000 milliseconds which improves metrics accuracy and
hopefully will stop the sporadic RatioTest failures on our TeamCity
build.
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to
6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li>
</ul>
<h2>⚠️ Minimum Compatible Runner Version</h2>
<p><strong>v2.327.1</strong><br />
<a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<p>Make sure your runner is updated to this version or newer to use this
release.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p>
<h2>v4.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v4.3.1">https://github.com/actions/checkout/compare/v4...v4.3.1</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>v5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>v5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>v4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>v4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/08c6903cd8c0fde910a37f88322edcfb5dd907a8"><code>08c6903</code></a>
Prepare v5.0.0 release (<a
href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/9f265659d3bb64ab1440b03b12f4d47a24320917"><code>9f26565</code></a>
Update actions checkout to use node 24 (<a
href="https://redirect.github.com/actions/checkout/issues/2226">#2226</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/v4...v6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
`YTDBGraphManager` was deleted in commit 32662da, but the
`server/config/gremlin-server.yaml` still referenced it, causing
`ClassNotFoundException` at server startup. The test config was updated
but the prod config was missed.
  
Changes:
- Fix runtime `ClassNotFoundException` caused by reference to removed
`YTDBGraphManager` class in gremlin config
- Add test to catch similar issues at build time
The first workflow runs every time a PR is created, added to the merge
queue, or merged into the develop branch.
When running this workflow in the develop branch, build artifacts are
deployed to Maven Central, both as SNAPSHOT versions and as SNAPSHOT
versions with a short commit SHA suffix.
That allows users to work with a fixed SNAPSHOT version.
The first workflow utilizes disk-backed storage for Ubuntu x86 builds
and memory-backed storage for ARM and Windows builds.
The second workflow runs periodically, once a day, in case new changes
are submitted after the last successful run of this workflow.
The second workflow uses the disk-backed storage for all types of
databases. In all workflows, failures are reported to Zulip chat. In all
workflows, tests run on Windows, Ubuntu x86, and Ubuntu ARM nodes on JDK
21 and JDK 25 in parallel.

---------

Co-authored-by: Vladislav <39089602+lesley29@users.noreply.github.com>
…eference of GitHub action. (#592)

The reference to build server was removed, as we now use GitHub Actions.
There are also minor fixes to job naming,
Bumps [com.github.jnr:jnr-posix](https://github.com/jnr/jnr-posix) from
3.1.20 to 3.1.21.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jnr/jnr-posix/commit/612485cad530c6d712783de46c578b5c5ef9f2ef"><code>612485c</code></a>
Updates for central publishing</li>
<li><a
href="https://github.com/jnr/jnr-posix/commit/c57c8c0e46031c5a6bdb2e90e70fcd130ef59377"><code>c57c8c0</code></a>
Update version and jnr-ffi for release</li>
<li><a
href="https://github.com/jnr/jnr-posix/commit/7941d66eaf7d3d7db2cc437b298441e98b2ab61c"><code>7941d66</code></a>
Switch to Sonatype central plugin</li>
<li><a
href="https://github.com/jnr/jnr-posix/commit/dabcf397af2e4bf3ef21091843787b58aeb523e0"><code>dabcf39</code></a>
[maven-release-plugin] prepare for next development iteration</li>
<li>See full diff in <a
href="https://github.com/jnr/jnr-posix/compare/jnr-posix-3.1.20...jnr-posix-3.1.21">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.github.jnr:jnr-posix&package-manager=maven&previous-version=3.1.20&new-version=3.1.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrii Lomakin <andrii0lomakin@gmail.com>
**Implementation of Docker distribution for our YTDB server.**

This distribution defines the mapped volumes for:
1. Configuration -> `/opt/ytdb-server/conf`
2. Logs -> `/opt/ytdb-server/log`
3. Databases -> `/opt/ytdb-server/databases`
4. Directory to map root password during server start ->
`/opt/ytdb-server/secrets/root_password`
5. Memory dumps in case of out of memory exceptions ->
`/opt/ytdb-server/memory-dumps`

The following parameters can be passed as environment variables:
1. `YOUTRACKDB_OPTS_MEMORY` -> typical JVM memory settings for min and
max heap memory.

Server configuration can be overwritten using a YAML settings file that
is an extension of the Gremlin Settings YAML file.
The following extension properties were added:
1. users : (name, password, resources) -> list of server users with a
list of resources that they can access.
2. properties: (key, value) -> YTDB configuration for the server that
overrides the default values set in
`com.jetbrains.youtrackdb.api.config.GlobalConfiguration` enum.

The server is listening on port 8182 by default.

**Implementation details**

A new module to test Docker containers, `docker-tests`, has been added.
It contains TP feature tests for server distribution and Groovy scripts
for the REPL console that are excerpts from our console readme. Though
they need the `docker-images` profile to be activated, as I do not want
users to be forced to have Docker during normal builds.

Containers inside those tests can be started in debug mode.
Console uses port 6006, and server uses port 5005.

Additionally, our GitHub workflow now runs with `docker-images` profile
enabled and deploys both ARM and x64 versions on Docker Hub for both
console and server.

The separate community-distribution project was removed as it was deemed
unnecessary.

The names of directories for both console and server were unified to
support a consistent naming pattern.

Gremlin server was directly integrated into our server instead of using
it as a plugin.
Functionality of server plugins was removed, as it relies on a private
API that we should not expose and it is not safe by desing for server
stability.
There are plans to replace it with WASM-based services and lifecycle.

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Because of the recent issue with Maven builds on GitHub workflows when
Maven had issues with downloading artifacts from the Maven Central
repository, all workflows use the YTDB mirror for the Maven Central.
Deployment of Docker artifacts is failing on GitHub actions because
Maven tasks also try to publish artifacts to the Maven repository.
That is not needed as those artefacts are published in the previous
`deploy` task and contradict the separation of concerns principle.

To fix this issue:
1. Deployment of Maven artifacts to the Sonatype repository is disabled
during the publishing of Docker artifacts.
2. console, docker-tests, examples, test-commons, and tests artefacts
are not published at all.
`docker-deploy` job in GitHub actions used incorrect credentials for the
Maven mirror repository. They were changed to the correct ones.
… new secrets for mirror authentication. (#605)

`deploy-docker` job in GitHub actions used credentials from the wrong
Maven repository. It was fixed by providing credentials that related to
the YTDB Maven mirror.
As we have several repositories under our control, we need a script that
will synchronize settings between them.
Proposed action synchronizes both rule sets and PR settings between the
YTDB repository and secondary repositories.
#### Motivation:

Our requirements for PRs have become stricter, but this is not reflected
in the PR template. The structuring of the PR template will enable all
developers to follow a consistent structure, simplifying the writing of
the PR description.

#### Changes:
`Motivation` and `Changes` sections with corresponding descriptions were
added to the PR template.

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
)

Bumps
[org.codehaus.mojo:versions-maven-plugin](https://github.com/mojohaus/versions)
from 2.19.1 to 2.20.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mojohaus/versions/releases">org.codehaus.mojo:versions-maven-plugin's
releases</a>.</em></p>
<blockquote>
<h2>2.20.1</h2>
<!-- raw HTML omitted -->
<h2>🐛 Bug Fixes</h2>
<ul>
<li>Fixed <a
href="https://redirect.github.com/mojohaus/versions/issues/1313">#1313</a>:
Do not show existing version as update (<a
href="https://redirect.github.com/mojohaus/versions/pull/1315">#1315</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
</ul>
<h2>2.20.0</h2>
<!-- raw HTML omitted -->
<h2>🚀 New features and improvements</h2>
<ul>
<li>Allow filtering out pre releases in use-latest-versions (<a
href="https://redirect.github.com/mojohaus/versions/pull/1283">#1283</a>)
<a href="https://github.com/Artur"><code>@​Artur</code></a>-</li>
<li><a
href="https://redirect.github.com/mojohaus/versions/issues/979">#979</a>:
Output file is not overwritten by default (<a
href="https://redirect.github.com/mojohaus/versions/pull/1279">#1279</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>Fixed a problem with dependency management filtering in the logged
results (<a
href="https://redirect.github.com/mojohaus/versions/pull/1298">#1298</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Fixes <a
href="https://redirect.github.com/mojohaus/versions/issues/1295">#1295</a>:
getAllUpdates(boolean) should respect currentVersionRange (<a
href="https://redirect.github.com/mojohaus/versions/pull/1297">#1297</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Fixed <a
href="https://redirect.github.com/mojohaus/versions/issues/1287">#1287</a>
- Versionless dependencies in dependencyManagement accepted by maven,
but not bij resolve-ranges (<a
href="https://redirect.github.com/mojohaus/versions/pull/1288">#1288</a>)
<a
href="https://github.com/maroschutte"><code>@​maroschutte</code></a></li>
<li>Artifact comparison should use semantic version comparison. (<a
href="https://redirect.github.com/mojohaus/versions/pull/1281">#1281</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Resolves <a
href="https://redirect.github.com/mojohaus/versions/issues/1150">#1150</a>:
Resolve multiple level properties (properties resolving to properties)
(<a
href="https://redirect.github.com/mojohaus/versions/pull/1276">#1276</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
</ul>
<h2>📝 Documentation updates</h2>
<ul>
<li>Add more examples of ignoredVersions config parameter (<a
href="https://redirect.github.com/mojohaus/versions/pull/1296">#1296</a>)
<a href="https://github.com/mikkoi"><code>@​mikkoi</code></a></li>
<li>Fix broken href link in site (<a
href="https://redirect.github.com/mojohaus/versions/pull/1294">#1294</a>)
<a href="https://github.com/mikkoi"><code>@​mikkoi</code></a></li>
<li>Added remaining javadoc comments. (<a
href="https://redirect.github.com/mojohaus/versions/pull/1293">#1293</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Getting rid of javadoc warnings (<a
href="https://redirect.github.com/mojohaus/versions/pull/1292">#1292</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
</ul>
<h2>👻 Maintenance</h2>
<ul>
<li>ResolverAdapter: a thin adapter over Resolver (<a
href="https://redirect.github.com/mojohaus/versions/pull/1301">#1301</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Fixed a problem with dependency management filtering in the logged
results (<a
href="https://redirect.github.com/mojohaus/versions/pull/1298">#1298</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Fix broken href link in site (<a
href="https://redirect.github.com/mojohaus/versions/pull/1294">#1294</a>)
<a href="https://github.com/mikkoi"><code>@​mikkoi</code></a></li>
<li>Added remaining javadoc comments. (<a
href="https://redirect.github.com/mojohaus/versions/pull/1293">#1293</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Getting rid of javadoc warnings (<a
href="https://redirect.github.com/mojohaus/versions/pull/1292">#1292</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
<li>Removed a redundant integration test (<a
href="https://redirect.github.com/mojohaus/versions/pull/1280">#1280</a>)
<a href="https://github.com/andrzejj0"><code>@​andrzejj0</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li>Bump org.apache.commons:commons-lang3 from 3.19.0 to 3.20.0 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1312">#1312</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump byteBuddyVersion from 1.18.0 to 1.18.1 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1311">#1311</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.plexus:plexus-archiver from 4.10.3 to 4.10.4 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1307">#1307</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump byteBuddyVersion from 1.17.7 to 1.18.0 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1309">#1309</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump commons-codec:commons-codec from 1.19.0 to 1.20.0 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1303">#1303</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump commons-io:commons-io from 2.20.0 to 2.21.0 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1305">#1305</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.plexus:plexus-i18n from 1.0.0 to 1.1.0 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1306">#1306</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.plexus:plexus-interactivity-api from 1.4 to 1.5.1
(<a
href="https://redirect.github.com/mojohaus/versions/pull/1308">#1308</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness
from 3.3.0 to 3.4.0 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1302">#1302</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.plexus:plexus-archiver from 4.10.2 to 4.10.3 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1290">#1290</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>Bump org.codehaus.mojo:mojo-parent from 93 to 94 (<a
href="https://redirect.github.com/mojohaus/versions/pull/1285">#1285</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mojohaus/versions/commit/b296a4f7cbc57a787a691ae78439d856d3e657b1"><code>b296a4f</code></a>
[maven-release-plugin] prepare release 2.20.1</li>
<li><a
href="https://github.com/mojohaus/versions/commit/b243939ff413dcbba754f3dc0244e8027e834bdb"><code>b243939</code></a>
Fixed <a
href="https://redirect.github.com/mojohaus/versions/issues/1313">#1313</a>:
Do not show existing version as update (<a
href="https://redirect.github.com/mojohaus/versions/issues/1315">#1315</a>)</li>
<li><a
href="https://github.com/mojohaus/versions/commit/773d0f37d2b78d6fa4d91118079bdabe0c38d5d6"><code>773d0f3</code></a>
[maven-release-plugin] prepare for next development iteration</li>
<li><a
href="https://github.com/mojohaus/versions/commit/2467d99166c6d15bd4e5755f5c500f6ee53ccbaa"><code>2467d99</code></a>
[maven-release-plugin] prepare release 2.20.0</li>
<li><a
href="https://github.com/mojohaus/versions/commit/4c240e7af2fc05d1b0719ee6c9e7e1ccb2618abc"><code>4c240e7</code></a>
Bump org.apache.commons:commons-lang3 from 3.19.0 to 3.20.0</li>
<li><a
href="https://github.com/mojohaus/versions/commit/6d64537083fa7cd7cd6f452dd35a1fb469e82c22"><code>6d64537</code></a>
Bump byteBuddyVersion from 1.18.0 to 1.18.1</li>
<li><a
href="https://github.com/mojohaus/versions/commit/7736ca686c7aefe37c79df1160d863129ae9030d"><code>7736ca6</code></a>
Bump org.codehaus.plexus:plexus-archiver from 4.10.3 to 4.10.4</li>
<li><a
href="https://github.com/mojohaus/versions/commit/37a53308a657eb6cddabe9a19bb9feb9159c3ca6"><code>37a5330</code></a>
Bump byteBuddyVersion from 1.17.7 to 1.18.0</li>
<li><a
href="https://github.com/mojohaus/versions/commit/edeb5e7f01c47ef5d3e2670ecd05601400d82bc8"><code>edeb5e7</code></a>
Bump commons-codec:commons-codec from 1.19.0 to 1.20.0</li>
<li><a
href="https://github.com/mojohaus/versions/commit/88874e07091d4a59005cd5ab66196999383346b6"><code>88874e0</code></a>
Bump commons-io:commons-io from 2.20.0 to 2.21.0</li>
<li>Additional commits viewable in <a
href="https://github.com/mojohaus/versions/compare/2.19.1...2.20.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.codehaus.mojo:versions-maven-plugin&package-manager=maven&previous-version=2.19.1&new-version=2.20.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
#### Motivation:

There were two issues that had to be fixed:

1. IT tests were not running in `Java CI/CD Integration Tests Pipeline`
GitHub action.
2. GitHub action was also failing to start on the latest changes:

#### Changes:

1. Integration tests are actually not running because they are called in
`verify` step.
2. The location of settings.xml was provided incorrectly in the
workflow.
#607)

#### Motivation:
A critical issue was that the workflow did not fail, despite test
failures being fixed.

#### Changes:
The Issue was fixed by adding one more step that analyzes both surefire
and failsafe reports and fails the workflow in case of test failures.

Additionally, Zulip notifications are sent when workflow failures are
fixed. The workflow that synced settings between projects was removed
because it was unreliable
…d so it will work with multimodule project. (#608)

#### Motivation:

Despite the fact that we have a step in GitHub workflows that checks the
test state, it is implemented incorrectly as it uses incorrect locations
of Surefire/Failsafe reports.

#### Changes:

`Publish Test Results` step in GitHub jobs now uses a wildcard pattern
at the beginning of the locations of Surefire/Failsafe reports to fix
the given issue.
THIS IS WIP, PLEASE DO NOT MERGE.

Replace interfaces to use FileHandler instead of fileId to see which part of the code is affected.
Try to do high level algorithm modifications to move from CHM to CASObjectArray in read cache.
THIS IS WIP, PLEASE DO NOT MERGE.

Add fileHandler to the interface instead of fileId.
Fix algorithm for read cache.
THIS IS WIP, PLEASE DO NOT MERGE.

Replace interfaces to use FileHandler instead of fileId to see which part of the code is affected.
Try to do high level algorithm modifications to move from CHM to CASObjectArray in read cache.
THIS IS WIP, PLEASE DO NOT MERGE.

Fix algorithm to work on cas array.
TODO data is never populated. I need to find a place where fileHandlers are created and populate the cache.
THIS IS WIP, PLEASE DO NOT MERGE.

Add fileHandler to the interface instead of fileId.
Fix algorithm for read cache.
Fix tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants