This is an automated email from the ASF dual-hosted git repository. tallison pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push: new 3286e15b3 Improve logging and warnings about failures to start pipes clients new 9d494b270 Merge remote-tracking branch 'origin/main' 3286e15b3 is described below commit 3286e15b3fe6755ee9cd6bbd7e41fb21487be1af Author: tballison <talli...@apache.org> AuthorDate: Tue Nov 15 15:04:54 2022 -0500 Improve logging and warnings about failures to start pipes clients --- .../tika/pipes/FailedToStartClientException.java | 27 ++++++++++++++++++++++ .../java/org/apache/tika/pipes/PipesClient.java | 9 +++++++- .../apache/tika/pipes/async/AsyncProcessor.java | 1 + 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/tika-core/src/main/java/org/apache/tika/pipes/FailedToStartClientException.java b/tika-core/src/main/java/org/apache/tika/pipes/FailedToStartClientException.java new file mode 100644 index 000000000..fd49927e1 --- /dev/null +++ b/tika-core/src/main/java/org/apache/tika/pipes/FailedToStartClientException.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tika.pipes; + +/** + * This should be catastrophic + */ +public class FailedToStartClientException extends RuntimeException { + + public FailedToStartClientException(Throwable t) { + super(t); + } +} diff --git a/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java b/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java index 97b86a741..cb4f3ffd9 100644 --- a/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java +++ b/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java @@ -356,6 +356,7 @@ public class PipesClient implements Closeable { private void restart() throws IOException, InterruptedException, TimeoutException { if (process != null) { + LOG.debug("process still alive; trying to destroy it"); destroyForcibly(); boolean processEnded = process.waitFor(30, TimeUnit.SECONDS); if (! processEnded) { @@ -379,8 +380,14 @@ public class PipesClient implements Closeable { } ProcessBuilder pb = new ProcessBuilder(getCommandline()); pb.redirectError(ProcessBuilder.Redirect.INHERIT); - process = pb.start(); + try { + process = pb.start(); + } catch (Exception e) { + //Do we ever want this to be not fatal?! + LOG.error("failed to start client", e); + throw new FailedToStartClientException(e); + } input = new DataInputStream(process.getInputStream()); output = new DataOutputStream(process.getOutputStream()); diff --git a/tika-core/src/main/java/org/apache/tika/pipes/async/AsyncProcessor.java b/tika-core/src/main/java/org/apache/tika/pipes/async/AsyncProcessor.java index fee2ba37e..e86aa71b3 100644 --- a/tika-core/src/main/java/org/apache/tika/pipes/async/AsyncProcessor.java +++ b/tika-core/src/main/java/org/apache/tika/pipes/async/AsyncProcessor.java @@ -289,6 +289,7 @@ public class AsyncProcessor implements Closeable { try { result = pipesClient.process(t); } catch (IOException e) { + LOG.warn("pipesClient crash", e); result = PipesResult.UNSPECIFIED_CRASH; } if (LOG.isTraceEnabled()) {