Java: ProcessBuilder с командой psql, ProcessBuilder с переадресацией портов kubectl не подключается к базе данных. Те жJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java: ProcessBuilder с командой psql, ProcessBuilder с переадресацией портов kubectl не подключается к базе данных. Те ж

Сообщение Anonymous »


Основная версия: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04


DITRIB_DESCRIPTION="Ubuntu 20.04. 6 LTS" psql: psql (PostgreSQL) 12.20


(Ubuntu 12.20-0ubuntu0.20.04.1) Java: версия openjdk "11.0.24"


16 июля 2024 г. Среда выполнения OpenJDK (сборка 11.0.24+8-post-Ubuntu) -1ubuntu320.04) 64-битная серверная виртуальная машина OpenJDK (сборка 11.0.24+8-post-Ubuntu-1ubuntu320.04, смешанный режим, общий доступ)

Если я запускаю следующие две команды в строке cmd, все работает нормально, и я могу получить данные (у пользователя в этом случае нет пароля):

Код: Выделить всё

kubectl port-forward service/service-name 7432:5432
psql -h localhost -p 7432 -U username -d database -w -t -c "select id from foo.bar where id='1'"
Метод переадресации портов у меня есть:

Код: Выделить всё

public static Process portForward(String type, String deploymentName, String containerPort, String localPort) {

Predicate
 readyPredicate = Objects::nonNull;
String command = "kubectl port-forward " + type + "/" + deploymentName + " " + containerPort + ":" + localPort;
ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", command);
Process process;

try {
process = processBuilder.start();
final Thread thread = new Thread(process::destroyForcibly);
Runtime.getRuntime().addShutdownHook(thread);
} catch (IOException e) {
throw new RuntimeException(e);
}

if (!readyPredicate.test(process)) {
final String errorMsg = String.format("Deployment '" + deploymentName + "' was not ready");
throw new IllegalStateException(errorMsg);
}

return process;
}
Если я запускаю переадресацию портов в строке cmd, процесс выглядит следующим образом:
[img]https:/ /i.sstatic.net/3EpK2mlD.png[/img]
Если я запускаю переадресацию портов через Java ProcessBuilder, процесс выглядит так:
Изображение

Между ними нет никакой разницы.
Метод для команды psql :

Код: Выделить всё

public static boolean psqlQuery() {
final ProcessBuilder processBuilder = new ProcessBuilder("sh", "-c", "psql -h localhost -p 7432 -U username -d database -w -t -c \"select id from foo.bar where id='1'\"");

try {
Process process = processBuilder.start();
process.waitFor();

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
List output = reader.lines().collect(Collectors.toList());
output.forEach(LOGGER::info);

BufferedReader errorreader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
List erroroutput = errorreader.lines().collect(Collectors.toList());
erroroutput.forEach(LOGGER::error);

return output.stream().anyMatch(c -> c.contains("1"));
} catch (IOException | InterruptedException e) {
Thread.currentThread().interrupt();
throw new RuntimeException(e);
}
}
Я запускаю метод portForward, а затем метод psqlQuery после него.
Это не работает и выдает сообщение об ошибке, в котором говорится, что невозможно подключиться, но если psqlQuery запускается, пока я запускаю portForward из строки cmd, он работает нормально.
Буду очень признателен за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/791 ... rt-forward
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как установить схему по умолчанию для psql при подключении к определенной базе данных?
    Anonymous » » в форуме Linux
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Использование интерфейса at-spi2 для приложения, работающего с переадресацией x11 через ssh
    Anonymous » » в форуме Linux
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Проблема с переадресацией порта SSH [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Парамико не читает O/P для команд kubectl и helm. Вот мой кусок кода
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Клиент Python Kubernetes: эквивалент kubectl api-resources --namespaced=false
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»