Как узнать статус флинк-задания из Java? - PullRequest
1 голос
/ 19 июня 2020
• 1000 flink будет перезапущен, но иногда потоку требуется больше времени, чем обычно, чтобы исправить проблему, и срабатывает стратегия перезапуска, сбой из-за проблемы все еще, затем задание останавливается, но поток, возможно, имеет другую итерацию, а затем приложение никогда не умирает, потому что я Я запускаю его как приложение jar. Итак, мой вопрос:
  • Можно ли узнать из кода java статус задания? Что-то вроде (JobStatus.CANCELED == true).

Заранее спасибо! С уважением

1 Ответ

2 голосов
/ 19 июня 2020

Большое спасибо, Фелипе. Это то, что мне было нужно, и благодаря вам это сделано. Я делюсь кодом здесь на случай, если кому-то понадобится.

  1. Подготовьте список

        final StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironment(...);
    final AtomicReference<JobID> jobIdReference = new AtomicReference<>();
    //Environment configurations
    env.registerJobListener(new JobListener() {
        @Override
        public void onJobSubmitted(@Nullable JobClient jobClient, @Nullable Throwable throwable) {
            assert jobClient != null;
            jobIdReference.set(jobClient.getJobID());
            jobClient = jobClient /*jobClient static public object in the main class*/;
        }@Override
        public void onJobExecuted(@Nullable JobExecutionResult jobExecutionResult, @Nullable Throwable throwable) {
            assert jobExecutionResult != null;
            jobExecutionResult.notify();
        }
    });
    
  2. Используйте код:

    Preconditions.checkNotNull(jobClient);
    final String status = jobClient.getJobStatus().get().name();
    if (status.equals(JobStatus.FAILED.name())) System.exit(1);
...