You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2011/01/31 10:37:30 UTC
svn commit: r1065537 - in
/tika/trunk/tika-core/src/main/java/org/apache/tika/fork: ForkClient.java
ForkParser.java ForkServer.java
Author: jukka
Date: Mon Jan 31 09:37:29 2011
New Revision: 1065537
URL: http://svn.apache.org/viewvc?rev=1065537&view=rev
Log:
TIKA-416: Out-of-process text extraction
Add a ping feature for checking if a forked process is still alive.
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java
tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java
tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkServer.java
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java?rev=1065537&r1=1065536&r2=1065537&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java Mon Jan 31 09:37:29 2011
@@ -79,6 +79,26 @@ class ForkClient {
}
}
+ public synchronized boolean ping() {
+ try {
+ output.writeByte(ForkServer.PING);
+ output.flush();
+ while (true) {
+ consumeErrorStream();
+ int type = input.read();
+ if (type == ForkServer.PING) {
+ consumeErrorStream();
+ return true;
+ } else {
+ return false;
+ }
+ }
+ } catch (IOException e) {
+ return false;
+ }
+ }
+
+
public synchronized Throwable call(String method, Object... args)
throws IOException {
List<ForkResource> r = new ArrayList<ForkResource>(resources);
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java?rev=1065537&r1=1065536&r2=1065537&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java Mon Jan 31 09:37:29 2011
@@ -155,7 +155,7 @@ public class ForkParser implements Parse
private synchronized ForkClient acquireClient()
throws IOException {
ForkClient client = pool.poll();
- if (client == null) {
+ if (client == null || !client.ping()) {
client = new ForkClient(loader, parser, java);
}
return client;
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkServer.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkServer.java?rev=1065537&r1=1065536&r2=1065537&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkServer.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/fork/ForkServer.java Mon Jan 31 09:37:29 2011
@@ -110,6 +110,8 @@ class ForkServer implements Runnable, Ch
int request = input.read();
if (request == -1) {
break;
+ } else if (request == PING) {
+ output.writeByte(PING);
} else if (request == CALL) {
call(loader, object);
} else {