Conversation
Summary of ChangesHello @robfrank, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly upgrades ArcadeDB's full-text indexing capabilities, moving beyond basic text search to offer advanced features comparable to dedicated search engines. It introduces granular control over Lucene analyzers, supports complex Lucene query syntax, and enables multi-property indexing. Furthermore, it provides new SQL functions for flexible querying and exposes relevance scores directly within SQL results, empowering users to build more sophisticated search functionalities. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
🧪 CI InsightsHere's what we observed from your CI run for ac30be5. 🟢 All jobs passed!But CI Insights is watching 👀 |
There was a problem hiding this comment.
Code Review
This pull request introduces significant enhancements to ArcadeDB's full-text indexing capabilities, including configurable analyzers, Lucene query syntax support, new search functions (SEARCH_INDEX, SEARCH_FIELDS), multi-property index support, and score exposure ($score). The changes are extensive and well-structured, following a detailed design and implementation plan. I've identified a critical issue in the boolean query logic within the new FullTextQueryExecutor, a high-severity issue related to how TypeIndex handles sharded full-text searches, and a couple of medium-severity maintainability improvements. Overall, this is a great addition, but the identified correctness issues should be addressed before merging.
| } else if (clause.occur() == BooleanClause.Occur.SHOULD) { | ||
| collectMatches(clause.query(), scoreMap, excluded); | ||
| } | ||
| } | ||
|
|
||
| if (mustResults != null) { | ||
| for (final Map.Entry<RID, AtomicInteger> entry : mustResults.entrySet()) { | ||
| scoreMap.computeIfAbsent(entry.getKey(), k -> new AtomicInteger(0)) | ||
| .addAndGet(entry.getValue().get()); | ||
| } | ||
| } |
There was a problem hiding this comment.
The logic for handling boolean queries with both MUST and SHOULD clauses appears to be incorrect. Currently, results from SHOULD clauses are added to scoreMap, and then results from MUST clauses are also added. This effectively performs a UNION between MUST and SHOULD results.
The correct behavior for a query like +term1 term2 (where term1 is MUST and term2 is SHOULD) is that documents must contain term1, and documents that also contain term2 get a higher score. The current implementation would return documents containing just term2, which is incorrect.
To fix this, if mustResults is not null (meaning there were MUST clauses), the scoreMap (containing SHOULD results) should be filtered to retain only the documents present in mustResults before merging the scores.
engine/src/test/java/com/arcadedb/index/fulltext/LSMTreeFullTextIndexTest.java
Outdated
Show resolved
Hide resolved
| if (k.contains(":")) { | ||
| // Field-specific search | ||
| rids = underlyingIndex.get(new String[] { k }); | ||
| } else { | ||
| // Unqualified search - search without prefix | ||
| rids = underlyingIndex.get(new String[] { k }); | ||
| } |
There was a problem hiding this comment.
The logic for get() in this part of the implementation plan appears to have a copy-paste error. Both the if and else branches for k.contains(":") execute the same code: rids = underlyingIndex.get(new String[] { k });. This seems incorrect for handling field-qualified searches versus unqualified searches.
The actual implementation in LSMTreeFullTextIndex.java uses a different, more correct logic by parsing terms into QueryTerm objects. To avoid confusion and ensure the plan accurately reflects the implementation, it would be beneficial to update this section of the plan.
| public void withMetadata(final JSONObject json) { | ||
| final FullTextIndexMetadata meta = (FullTextIndexMetadata) metadata; | ||
|
|
||
| if (json.has("analyzer")) | ||
| meta.setAnalyzerClass(json.getString("analyzer")); | ||
|
|
||
| if (json.has("index_analyzer")) | ||
| meta.setIndexAnalyzerClass(json.getString("index_analyzer")); | ||
|
|
||
| if (json.has("query_analyzer")) | ||
| meta.setQueryAnalyzerClass(json.getString("query_analyzer")); | ||
|
|
||
| if (json.has("allowLeadingWildcard")) | ||
| meta.setAllowLeadingWildcard(json.getBoolean("allowLeadingWildcard")); | ||
|
|
||
| if (json.has("defaultOperator")) | ||
| meta.setDefaultOperator(json.getString("defaultOperator")); | ||
|
|
||
| // Parse per-field analyzers (pattern: *_analyzer) | ||
| final String analyzerSuffix = "_analyzer"; | ||
| for (final String key : json.keySet()) { | ||
| if (key.endsWith(analyzerSuffix) && !key.equals("analyzer") && !key.equals("index_analyzer") && !key.equals("query_analyzer")) { | ||
| final String fieldName = key.substring(0, key.length() - analyzerSuffix.length()); | ||
| meta.setFieldAnalyzer(fieldName, json.getString(key)); | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
This withMetadata(JSONObject) method duplicates the logic from FullTextIndexMetadata.fromJSON(). To improve maintainability and avoid code duplication, this method could be simplified to directly call fromJSON() on the metadata object.
public void withMetadata(final JSONObject json) {
((FullTextIndexMetadata) metadata).fromJSON(json);
}
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferences |
|
Addressed the relevant review comments in commit 2227197: 1. Critical - Boolean MUST/SHOULD logic (FullTextQueryExecutor.java) ✅ Fixed
2. Medium - Code duplication (TypeFullTextIndexBuilder.java) ✅ Fixed
Not addressed:
|
c4d23db to
5f07111
Compare
Design document covering: - Configurable Lucene analyzers via METADATA JSON block - Multi-property full-text indexes - SEARCH_INDEX() and SEARCH_FIELDS() SQL functions - Lucene QueryParser syntax support - $score projection variable for relevance scoring - Backward compatibility with existing CONTAINSTEXT operator Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Detailed TDD implementation plan with 14 tasks across 5 phases: - Phase 1: Infrastructure (metadata, builder, SQL parser) - Phase 2: Multi-property index support - Phase 3: Query functions (SEARCH_INDEX, SEARCH_FIELDS) - Phase 4: Score exposure ($score in SQL) - Phase 5: Testing & documentation Each task includes failing tests, minimal implementations, and commits. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add FullTextIndexMetadata class that extends IndexMetadata to store Lucene analyzer configuration for full-text indexes. Supports: - Default analyzer class (StandardAnalyzer) - Separate index and query analyzers - Per-field analyzer overrides via *_analyzer JSON keys - Query parser options (allowLeadingWildcard, defaultOperator) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a dedicated builder class for full-text indexes that enables programmatic configuration of Lucene analyzer settings. This follows the same pattern as TypeLSMVectorIndexBuilder for vector indexes. The builder supports: - Setting default, index-specific, and query-specific analyzers - Per-field analyzer configuration - Leading wildcard and default operator options - JSON-based metadata configuration Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add support for passing METADATA clause to full-text index builder when
creating indexes via SQL. This enables SQL commands like:
CREATE INDEX ON Article (title) FULL_TEXT METADATA {"analyzer": "..."}
to pass analyzer configuration to the TypeFullTextIndexBuilder.
The test is @disabled until Task 1.4 (LSMTreeFullTextIndex using
configurable analyzer) is implemented.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update LSMTreeFullTextIndex to use FullTextIndexMetadata configuration: - Add separate indexAnalyzer and queryAnalyzer fields - Use metadata.getIndexAnalyzerClass() for put/remove operations - Use metadata.getQueryAnalyzerClass() for get operations - Add createAnalyzer() helper to instantiate analyzers by class name - Add getIndexAnalyzer() and getFullTextMetadata() accessor methods - Enable createIndexWithMetadata test which validates end-to-end flow This completes Phase 1 of the full-text index improvements, connecting the SQL METADATA clause through to actual analyzer instantiation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove single-property restriction in IndexFactoryHandler - Store tokens with field prefix (fieldname:token) for field-specific queries - Store unprefixed tokens for general queries across all fields - Parse query text to identify field-specific terms (field:value) - Handle TransactionIndexContext commit replay correctly by detecting tokenized values via key length mismatch - Update tests: add multi-property tests, update non-STRING property test Multi-property indexes enable searching across multiple document fields with a single index, supporting both field-specific (title:java) and general (java) queries. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
… index persistence Multi-property full-text indexes were broken after database restart because the propertyCount field was hardcoded to 1 in loading constructors. When put() was called with 2 keys after restart, the check `keys.length != propertyCount` incorrectly treated the values as "already tokenized" and bypassed proper tokenization, corrupting the index. The fix replaces the propertyCount field with a getPropertyCount() method that derives the value dynamically from getPropertyNames().size(). This ensures the correct property count is used regardless of how the index was loaded. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a SQL function SEARCH_INDEX('indexName', 'query') that searches
a full-text index by name and returns true if the current record
matches the query. This enables filtering records in WHERE clauses
using full-text search capabilities.
Usage: SELECT FROM Article WHERE SEARCH_INDEX('Article[content]', 'java') = true
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cache search results in CommandContext to avoid re-querying the full-text index for every record during WHERE clause evaluation. Previously, the index was queried N times for N records; now it queries once and caches. Also adds null parameter validation and additional tests for error handling. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add FullTextQueryExecutor that uses Lucene's QueryParser to parse advanced query syntax (boolean operators, phrases, wildcards) and execute against LSMTreeFullTextIndex. This enables advanced search features like: - Boolean operators: AND (+), OR, NOT (-) - Phrase queries: "java programming" - Wildcards (suffix): java* - Field-specific search: field:value The executor translates parsed Lucene Query objects into LSM-Tree lookups and aggregates results with proper scoring. Results are sorted by score descending and support result limiting. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create QueryParser per search() invocation instead of storing as instance field - Add deterministic secondary sort by RID when scores are equal - Add graceful fallback for unsupported query types (FuzzyQuery, etc.) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SQLFunctionSearchIndex now uses FullTextQueryExecutor for Lucene query parsing - Enables boolean queries (+term, -term), phrase queries, wildcards - Maintains caching for performance (now caches Map<RID, score> instead of Set<RID>) - Added tests for boolean AND, boolean NOT, and phrase queries Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Creates SQLFunctionSearchFields for field-based full-text search - Automatically finds appropriate full-text index for given fields - Supports same Lucene query syntax as SEARCH_INDEX - Includes caching for performance - Registers function in DefaultSQLFunctionFactory Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add score field to ResultInternal for full-text search relevance
- getScore()/setScore() methods for direct access
- $score accessible via getProperty("$score")
- hasProperty("$score") always returns true
- $score appears in getPropertyNames() when score > 0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix ResultInternal.getProperty("$score") to check content map first
before falling back to the score field. This ensures projections
that set "$score" as a property are returned correctly.
- Update SQLFunctionSearchIndex to set $score context variable when
a record matches, enabling $score projection in SELECT queries.
- Add scoreInSQLProjection test to verify $score works in SQL queries
with SEARCH_INDEX function.
- Clean up debug logging from search functions.
The fix addresses an issue where getProperty("$score") immediately
returned the default score field (0.0) instead of checking if "$score"
was explicitly set as a property in the content map by the projection.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1. Fix boolean MUST/SHOULD logic in FullTextQueryExecutor (critical)
- Documents matching only SHOULD clauses are no longer returned
when MUST clauses are present
- SHOULD clauses now correctly add bonus score to documents that
already satisfy all MUST clauses
- Added mustWithShouldQuery test case
2. Remove code duplication in TypeFullTextIndexBuilder (medium)
- Simplified withMetadata(JSONObject) to delegate to fromJSON()
3. Fix FullTextIndexMetadata.fromJSON() to only call parent when
typeName is present in JSON
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Field-specific queries like "title:java" now correctly search using the field-prefixed key format used by multi-property indexes. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add 7 integration test classes covering all full-text index features: - FullTextAnalyzerConfigIT: analyzer configuration and stemming - FullTextQuerySyntaxIT: Lucene query syntax (boolean, phrase, wildcards) - FullTextMultiPropertyIT: multi-property index search - FullTextScoreIT: $score projection and ordering - FullTextEdgeCasesIT: error handling and edge cases - FullTextPersistenceIT: index persistence across reopens - FullTextBackwardCompatIT: CONTAINSTEXT backward compatibility Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements the More Like This search algorithm: 1. Extract terms from source documents 2. Calculate document frequencies 3. Select top terms using MoreLikeThisQueryBuilder 4. Execute OR query and score results 5. Optionally exclude source documents Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Changes method parameter from List<RID> to Set<RID> to match specification and prevent duplicate source RIDs. Updates all tests to use Set.of() instead of List.of(). Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements More Like This search by index name with: - RID-based similarity search - Optional metadata configuration - Score normalization ($similarity) - Fail-fast validation - Comprehensive test coverage (7 tests) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixes: - Cache key collision bug (was using identityHashCode) - Added hashCode/equals to MoreLikeThisConfig - Explicit type conversion for scores - Enhanced test data for reliable MLT results Enhancements: - Added cache behavior test - Added multiple source RIDs test - Added score ordering test - Added score/similarity consistency test Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements More Like This search by field names with: - Field-based index resolution - RID-based similarity search - Optional metadata configuration - Score normalization ($similarity) - Fail-fast validation - Comprehensive test coverage (9 tests) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added tests for: - scoreAndSimilarityConsistent: Verify $score and $similarity both set correctly - exceedsMaxSourceDocs: Verify maxSourceDocs limit enforcement Brings test coverage to 100% (11/11 tests) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
End-to-end tests covering: - Basic similarity search with real documents - Multi-source RID term combination - Score ordering and normalization - Both $score and $similarity exposure - excludeSource behavior (true/false) - Parameter tuning effects (minTermFreq, maxQueryTerms) - Error handling (invalid RIDs) - Empty result handling (no matches) - SEARCH_INDEX_MORE vs SEARCH_FIELDS_MORE equivalence - Field-specific term extraction - maxQueryTerms limit enforcement All 12 integration tests passing. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixes: - Explicit assertions for expected documents in basicSimilaritySearch - Use stored RIDs instead of hardcoded values for test independence - Remove test interdependence (fieldSpecificTermExtraction now standalone) - Add descriptive assertion messages for better failure diagnostics All 12 tests passing with improved reliability. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated design and implementation plan status to reflect completion of all 8 tasks with 55 passing tests. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Complete documentation covering: - Overview and use cases - SQL function signatures (SEARCH_INDEX_MORE, SEARCH_FIELDS_MORE) - Scoring ( and ) - Configuration parameters (9 parameters with examples) - How the TF-IDF algorithm works - Multiple source document handling - Tuning strategies (broad vs precise results) - Error handling and validation - Performance considerations - Complete examples (recommendations, duplicates, multi-source) - Integration with other features - Best practices and limitations Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Complete reference covering all 4 SQL functions: - SEARCH_INDEX() - Keyword search by index name - SEARCH_FIELDS() - Keyword search by field names - SEARCH_INDEX_MORE() - Similarity search by index name - SEARCH_FIELDS_MORE() - Similarity search by field names Includes: - Function signatures and parameters - Query syntax (boolean, phrase, wildcards, field-specific) - Scoring ( for keyword, for MLT) - Configuration parameters (9 MLT parameters) - 30+ complete examples - Performance optimization guidance - Best practices for both search types - Error handling reference - Comparison table (keyword vs similarity) - Limitations and considerations Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…or to fulltext package
cd329dc to
72a3fe3
Compare
Response to Review CommentsAll review comments have been addressed: 1. ✅ Critical - Boolean MUST/SHOULD logic (FullTextQueryExecutor.java:201)Status: Fixed by @robfrank in commit 2227197
2. ✅ High Priority - TypeIndex sharding (LSMTreeFullTextIndexTest.java:272)Status: Fixed in latest commits
Technical details: The fix ensures that full-text queries containing search terms (e.g., "java", "title:java") are not subject to bucket selection based on hashing those strings. Instead, they always search all buckets to ensure complete results, which is critical for correctness on sharded types. 3. ✅ Medium Priority - Code duplication (TypeFullTextIndexBuilder.java:147)Status: Fixed by @robfrank in commit 2227197
4. ⏭️ Medium Priority - Plan documentation (docs/plans/2026-01-23-fulltext-index-implementation.md:704)Status: Not addressed
All critical and high-priority issues have been resolved. The full-text index implementation now correctly handles sharded types and boolean query logic. |
|
Updated the previous comment - point #4 has now been addressed: 4. ✅ Medium Priority - Plan documentation (docs/plans/2026-01-23-fulltext-index-implementation.md:704)Status: Fixed
All review comments have been addressed. |
…from 3.5.4 to 3.5.5 [skip ci] Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5. Release notes *Sourced from [org.apache.maven.plugins:maven-failsafe-plugin's releases](https://github.com/apache/maven-surefire/releases).* > 3.5.5 > ----- > > 🚀 New features and improvements > ------------------------------- > > * Replace runing external process and parsing output with simple ProcessHandle if available (Java9+) ([#3252](https://redirect.github.com/apache/maven-surefire/pull/3252)) [`@olamy`](https://github.com/olamy) > * Pass slf4j context to spawned thread ([#3241](https://redirect.github.com/apache/maven-surefire/pull/3241)) [`@scottrw93`](https://github.com/scottrw93) > * [[SUREFIRE-3239]](https://issues.apache.org/jira/browse/SUREFIRE-3239) - allow override of statistics file checksum ([#3247](https://redirect.github.com/apache/maven-surefire/pull/3247)) [`@XN137`](https://github.com/XN137) > * Reduce log level for skipped tests result to info ([#3232](https://redirect.github.com/apache/maven-surefire/pull/3232)) [`@strangelookingnerd`](https://github.com/strangelookingnerd) > > 🐛 Bug Fixes > ----------- > > * Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/pull/3258)) [`@jbliznak`](https://github.com/jbliznak). Please note if you are using Windows with Java 8 and not PowerShell (you have options to: use Java 9+, install PowerShell or stay on Surefire 3.5.4) > * Properly work with test failures caused during beforeAll phase ([#3194](https://redirect.github.com/apache/maven-surefire/pull/3194)) [`@Frawless`](https://github.com/Frawless) > > 📝 Documentation updates > ----------------------- > > * Clarify how late placeholder replacement (@{...}) deals with ([#3208](https://redirect.github.com/apache/maven-surefire/pull/3208)) [`@kwin`](https://github.com/kwin) > > 👻 Maintenance > ------------- > > * Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/pull/3254)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Use JUnit5 in failsafe ITs ([#3251](https://redirect.github.com/apache/maven-surefire/pull/3251)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Remove long-deprecated unused encoding property from VerifyMojo ([#3198](https://redirect.github.com/apache/maven-surefire/pull/3198)) [`@Tomlincoln`](https://github.com/Tomlincoln) > * Add IT and deal with corner cases of handling beforeAll failures ([#3200](https://redirect.github.com/apache/maven-surefire/pull/3200)) [`@Frawless`](https://github.com/Frawless) > * Revert PR [#3194](https://redirect.github.com/apache/maven-surefire/issues/3194) that handle beforeAll failures to follow proper contributing rules ([#3211](https://redirect.github.com/apache/maven-surefire/pull/3211)) [`@Frawless`](https://github.com/Frawless) > > 🔧 Build > ------- > > * Missing many files in the GH Artifacts of CI ex-post. ([#3219](https://redirect.github.com/apache/maven-surefire/pull/3219)) [`@Tibor17`](https://github.com/Tibor17) > > 📦 Dependency updates > -------------------- > > * Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/pull/3209)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.4.0 to 3.5.1 ([#3260](https://redirect.github.com/apache/maven-surefire/pull/3260)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/pull/3253)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Bump org.assertj:assertj-core from 3.16.1 to 3.27.7 in /surefire-its/src/test/resources/surefire-1733-testng ([#3246](https://redirect.github.com/apache/maven-surefire/pull/3246)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.assertj:assertj-core from 3.27.6 to 3.27.7 ([#3245](https://redirect.github.com/apache/maven-surefire/pull/3245)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.mojo:animal-sniffer-maven-plugin from 1.26 to 1.27 ([#3243](https://redirect.github.com/apache/maven-surefire/pull/3243)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.20.0 to 4.21.0 ([#3236](https://redirect.github.com/apache/maven-surefire/pull/3236)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.1 to 1.5.2 ([#3235](https://redirect.github.com/apache/maven-surefire/pull/3235)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.logging.log4j:log4j-core from 2.17.1 to 2.25.3 in /surefire-its/src/test/resources/surefire-1659-stream-corruption ([#3234](https://redirect.github.com/apache/maven-surefire/pull/3234)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.19.0 to 4.20.0 ([#3228](https://redirect.github.com/apache/maven-surefire/pull/3228)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.18.0 to 4.19.0 ([#3224](https://redirect.github.com/apache/maven-surefire/pull/3224)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.commons:commons-lang3 from 3.19.0 to 3.20.0 ([#3223](https://redirect.github.com/apache/maven-surefire/pull/3223)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-interpolation from 1.28 to 1.29 ([#3221](https://redirect.github.com/apache/maven-surefire/pull/3221)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-i18n from 1.0.0 to 1.1.0 ([#3220](https://redirect.github.com/apache/maven-surefire/pull/3220)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump commons-io:commons-io from 2.20.0 to 2.21.0 ([#3217](https://redirect.github.com/apache/maven-surefire/pull/3217)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.3.0 to 3.4.0 ([#3214](https://redirect.github.com/apache/maven-surefire/pull/3214)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.0 to 1.5.1 ([#3218](https://redirect.github.com/apache/maven-surefire/pull/3218)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.16.0 to 4.18.0 ([#3213](https://redirect.github.com/apache/maven-surefire/pull/3213)) @[dependabot[bot]](https://github.com/apps/dependabot) ... (truncated) Commits * [`968cb38`](apache/maven-surefire@968cb38) [maven-release-plugin] prepare release surefire-3.5.5 * [`8e7dc41`](apache/maven-surefire@8e7dc41) Reapply "Replace runing external process and parsing output with simple Proce... * [`4ced57c`](apache/maven-surefire@4ced57c) Revert "Replace runing external process and parsing output with simple Proces…" * [`8496d9a`](apache/maven-surefire@8496d9a) Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/issues/3209)) * [`68265e5`](apache/maven-surefire@68265e5) Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness ([#3260](https://redirect.github.com/apache/maven-surefire/issues/3260)) * [`0b19014`](apache/maven-surefire@0b19014) Replace runing external process and parsing output with simple ProcessHandle ... * [`688f8c4`](apache/maven-surefire@688f8c4) Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/issues/3258)) * [`e5c01a6`](apache/maven-surefire@e5c01a6) Build only by the latest Maven on Jenkins ([#3255](https://redirect.github.com/apache/maven-surefire/issues/3255)) * [`9c99e97`](apache/maven-surefire@9c99e97) Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/issues/3254)) * [`20930ea`](apache/maven-surefire@20930ea) Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/issues/3253)) * Additional commits viewable in [compare view](apache/maven-surefire@surefire-3.5.4...surefire-3.5.5) [](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) --- Dependabot commands and options 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 show 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)
…from 3.5.4 to 3.5.5 [skip ci] Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5. Release notes *Sourced from [org.apache.maven.plugins:maven-surefire-plugin's releases](https://github.com/apache/maven-surefire/releases).* > 3.5.5 > ----- > > 🚀 New features and improvements > ------------------------------- > > * Replace runing external process and parsing output with simple ProcessHandle if available (Java9+) ([#3252](https://redirect.github.com/apache/maven-surefire/pull/3252)) [`@olamy`](https://github.com/olamy) > * Pass slf4j context to spawned thread ([#3241](https://redirect.github.com/apache/maven-surefire/pull/3241)) [`@scottrw93`](https://github.com/scottrw93) > * [[SUREFIRE-3239]](https://issues.apache.org/jira/browse/SUREFIRE-3239) - allow override of statistics file checksum ([#3247](https://redirect.github.com/apache/maven-surefire/pull/3247)) [`@XN137`](https://github.com/XN137) > * Reduce log level for skipped tests result to info ([#3232](https://redirect.github.com/apache/maven-surefire/pull/3232)) [`@strangelookingnerd`](https://github.com/strangelookingnerd) > > 🐛 Bug Fixes > ----------- > > * Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/pull/3258)) [`@jbliznak`](https://github.com/jbliznak). Please note if you are using Windows with Java 8 and not PowerShell (you have options to: use Java 9+, install PowerShell or stay on Surefire 3.5.4) > * Properly work with test failures caused during beforeAll phase ([#3194](https://redirect.github.com/apache/maven-surefire/pull/3194)) [`@Frawless`](https://github.com/Frawless) > > 📝 Documentation updates > ----------------------- > > * Clarify how late placeholder replacement (@{...}) deals with ([#3208](https://redirect.github.com/apache/maven-surefire/pull/3208)) [`@kwin`](https://github.com/kwin) > > 👻 Maintenance > ------------- > > * Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/pull/3254)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Use JUnit5 in failsafe ITs ([#3251](https://redirect.github.com/apache/maven-surefire/pull/3251)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Remove long-deprecated unused encoding property from VerifyMojo ([#3198](https://redirect.github.com/apache/maven-surefire/pull/3198)) [`@Tomlincoln`](https://github.com/Tomlincoln) > * Add IT and deal with corner cases of handling beforeAll failures ([#3200](https://redirect.github.com/apache/maven-surefire/pull/3200)) [`@Frawless`](https://github.com/Frawless) > * Revert PR [#3194](https://redirect.github.com/apache/maven-surefire/issues/3194) that handle beforeAll failures to follow proper contributing rules ([#3211](https://redirect.github.com/apache/maven-surefire/pull/3211)) [`@Frawless`](https://github.com/Frawless) > > 🔧 Build > ------- > > * Missing many files in the GH Artifacts of CI ex-post. ([#3219](https://redirect.github.com/apache/maven-surefire/pull/3219)) [`@Tibor17`](https://github.com/Tibor17) > > 📦 Dependency updates > -------------------- > > * Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/pull/3209)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.4.0 to 3.5.1 ([#3260](https://redirect.github.com/apache/maven-surefire/pull/3260)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/pull/3253)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Bump org.assertj:assertj-core from 3.16.1 to 3.27.7 in /surefire-its/src/test/resources/surefire-1733-testng ([#3246](https://redirect.github.com/apache/maven-surefire/pull/3246)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.assertj:assertj-core from 3.27.6 to 3.27.7 ([#3245](https://redirect.github.com/apache/maven-surefire/pull/3245)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.mojo:animal-sniffer-maven-plugin from 1.26 to 1.27 ([#3243](https://redirect.github.com/apache/maven-surefire/pull/3243)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.20.0 to 4.21.0 ([#3236](https://redirect.github.com/apache/maven-surefire/pull/3236)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.1 to 1.5.2 ([#3235](https://redirect.github.com/apache/maven-surefire/pull/3235)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.logging.log4j:log4j-core from 2.17.1 to 2.25.3 in /surefire-its/src/test/resources/surefire-1659-stream-corruption ([#3234](https://redirect.github.com/apache/maven-surefire/pull/3234)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.19.0 to 4.20.0 ([#3228](https://redirect.github.com/apache/maven-surefire/pull/3228)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.18.0 to 4.19.0 ([#3224](https://redirect.github.com/apache/maven-surefire/pull/3224)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.commons:commons-lang3 from 3.19.0 to 3.20.0 ([#3223](https://redirect.github.com/apache/maven-surefire/pull/3223)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-interpolation from 1.28 to 1.29 ([#3221](https://redirect.github.com/apache/maven-surefire/pull/3221)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-i18n from 1.0.0 to 1.1.0 ([#3220](https://redirect.github.com/apache/maven-surefire/pull/3220)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump commons-io:commons-io from 2.20.0 to 2.21.0 ([#3217](https://redirect.github.com/apache/maven-surefire/pull/3217)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.3.0 to 3.4.0 ([#3214](https://redirect.github.com/apache/maven-surefire/pull/3214)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.0 to 1.5.1 ([#3218](https://redirect.github.com/apache/maven-surefire/pull/3218)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.16.0 to 4.18.0 ([#3213](https://redirect.github.com/apache/maven-surefire/pull/3213)) @[dependabot[bot]](https://github.com/apps/dependabot) ... (truncated) Commits * [`968cb38`](apache/maven-surefire@968cb38) [maven-release-plugin] prepare release surefire-3.5.5 * [`8e7dc41`](apache/maven-surefire@8e7dc41) Reapply "Replace runing external process and parsing output with simple Proce... * [`4ced57c`](apache/maven-surefire@4ced57c) Revert "Replace runing external process and parsing output with simple Proces…" * [`8496d9a`](apache/maven-surefire@8496d9a) Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/issues/3209)) * [`68265e5`](apache/maven-surefire@68265e5) Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness ([#3260](https://redirect.github.com/apache/maven-surefire/issues/3260)) * [`0b19014`](apache/maven-surefire@0b19014) Replace runing external process and parsing output with simple ProcessHandle ... * [`688f8c4`](apache/maven-surefire@688f8c4) Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/issues/3258)) * [`e5c01a6`](apache/maven-surefire@e5c01a6) Build only by the latest Maven on Jenkins ([#3255](https://redirect.github.com/apache/maven-surefire/issues/3255)) * [`9c99e97`](apache/maven-surefire@9c99e97) Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/issues/3254)) * [`20930ea`](apache/maven-surefire@20930ea) Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/issues/3253)) * Additional commits viewable in [compare view](apache/maven-surefire@surefire-3.5.4...surefire-3.5.5) [](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) --- Dependabot commands and options 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 show 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)
No description provided.