This is an automated email from the ASF dual-hosted git repository.
apolovtsev pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new eeee8ede34d IGNITE-28112 Bump jline from 3.29.0 to 4.0.4 (#7735)
eeee8ede34d is described below
commit eeee8ede34dd82f591e6f3a0ecdcb28236bca242
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Fri Mar 13 14:28:06 2026 +0200
IGNITE-28112 Bump jline from 3.29.0 to 4.0.4 (#7735)
---
gradle/libs.versions.toml | 2 +-
.../cli/core/flow/question/JlineQuestionWriterReader.java | 11 ++++++++++-
.../ignite/internal/cli/commands/sql/SqlCompleterTest.java | 8 +++++++-
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index dd3487b5a54..e52dc1f7d95 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -31,7 +31,7 @@ netty = "4.2.10.Final"
javapoet = "1.13.0"
javax = "1.3.2"
jetbrainsAnnotations = "26.0.2-1"
-jline = "3.29.0"
+jline = "4.0.4"
jmh = "1.37"
junit5 = "5.14.3"
junit5-platform = "1.14.2"
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/flow/question/JlineQuestionWriterReader.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/flow/question/JlineQuestionWriterReader.java
index 3ebd96fa53d..cc211fa79c7 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/flow/question/JlineQuestionWriterReader.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/flow/question/JlineQuestionWriterReader.java
@@ -23,6 +23,7 @@ import org.jline.reader.LineReader;
import org.jline.reader.MaskingCallback;
import org.jline.reader.UserInterruptException;
import org.jline.reader.impl.SimpleMaskingCallback;
+import org.jline.terminal.Terminal;
/**
* Implementation of {@link QuestionWriterReader} based on {@link LineReader}.
@@ -38,7 +39,15 @@ public class JlineQuestionWriterReader implements
QuestionWriterReader {
@Override
public String readAnswer(String question, boolean maskInput) {
try {
- MaskingCallback callback = maskInput ? new
SimpleMaskingCallback('*') : null;
+ // On dumb terminals, JLine 4.x starts a background "mask thread"
for any non-null MaskingCallback,
+ // which repeatedly rewrites the prompt to overwrite typed
characters. This causes unwanted output
+ // in non-interactive environments (pipes, tests). Skip masking
for dumb terminals.
+ String terminalType = reader.getTerminal().getType();
+
+ boolean isDumb = Terminal.TYPE_DUMB.equals(terminalType) ||
Terminal.TYPE_DUMB_COLOR.equals(terminalType);
+
+ MaskingCallback callback = (maskInput && !isDumb) ? new
SimpleMaskingCallback('*') : null;
+
return reader.readLine(question, null, callback, null);
} catch (UserInterruptException /* Ctrl-C pressed */ |
EndOfFileException /* Ctrl-D pressed */ ignored) {
throw new FlowInterruptException();
diff --git
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/sql/SqlCompleterTest.java
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/sql/SqlCompleterTest.java
index 9fb48f62dde..ce44a90e196 100644
---
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/sql/SqlCompleterTest.java
+++
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/sql/SqlCompleterTest.java
@@ -37,6 +37,9 @@ class SqlCompleterTest {
List.of(""),
0,
0,
+ 0,
+ "",
+ 0,
0
),
candidates
@@ -54,7 +57,10 @@ class SqlCompleterTest {
List.of("select", ""),
1,
0,
- 6
+ 6,
+ "",
+ 0,
+ 0
),
candidates
);