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
         );

Reply via email to