Skip to content
Snippets Groups Projects
Commit e081a381 authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

code: changed haas api, handle exception

parent 2ab025d5
Branches
No related tags found
No related merge requests found
......@@ -12,6 +12,7 @@ import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.nio.channels.Channels;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
......@@ -181,12 +182,14 @@ class MidlewareTunnel implements Closeable {
}
sendEOF2Middleware();
} catch (InterruptedIOException e) {
log.error(e.getMessage(), e);
return;
} catch (SocketException e) {
if (!e.getMessage().equals("Socket closed")) {
log.error(e.getMessage(), e);
}
} catch (IOException e) {
log.error(e.getMessage(), e);
return;
} finally {
if (log.isDebugEnabled()) {
......@@ -196,7 +199,7 @@ class MidlewareTunnel implements Closeable {
}
private void sendEOF2Middleware() {
dataTransfer.sendDataToJobNode(null, jobId, ipAddress, sessionCode);
dataTransfer.writeDataToJobNode(null, jobId, ipAddress, sessionCode, true);
}
private boolean sendToMiddleware(byte[] buffer, int len) {
......@@ -211,7 +214,7 @@ class MidlewareTunnel implements Closeable {
} else {
sending = buffer;
}
int reallySend = dataTransfer.sendDataToJobNode(sending, jobId, ipAddress, sessionCode);
int reallySend = dataTransfer.writeDataToJobNode(sending, jobId, ipAddress, sessionCode, false);
if (reallySend == -1) {
return false;
}
......@@ -292,7 +295,8 @@ class MidlewareTunnel implements Closeable {
private final Runnable[] runnable = new Runnable[2];
private final Future<?>[] futures = new Future[2];
private final CompletableFuture<?>[] futures = new CompletableFuture[2];
private final CountDownLatch latchFromClient = new CountDownLatch(1);
......@@ -318,13 +322,17 @@ class MidlewareTunnel implements Closeable {
for (int i = 0; i < runnable.length; i++) {
int final_i = i;
futures[i] = executorService.submit(() -> {
futures[i] = CompletableFuture.runAsync(() -> {
runnable[final_i].run();
if(final_i == FROM_CLIENT) {
}, executorService).whenComplete((id,e) -> {
if (final_i == FROM_CLIENT) {
latchFromClient.countDown();
}
latchOfBothDirections.countDown();
return null;
if(e != null) {
log.error(e.getMessage(), e);
}
});
}
......
......@@ -37,20 +37,21 @@
<s:element name="EndDataTransferResponse">
<s:complexType/>
</s:element>
<s:element name="SendDataToJobNode">
<s:element name="WriteDataToJobNode">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="data" type="s:base64Binary"/>
<s:element minOccurs="1" maxOccurs="1" name="submittedJobInfoId" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="ipAddress" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="sessionCode" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="closeConnection" type="s:boolean"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SendDataToJobNodeResponse">
<s:element name="WriteDataToJobNodeResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="SendDataToJobNodeResult" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="WriteDataToJobNodeResult" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
......@@ -84,11 +85,11 @@
<wsdl:message name="EndDataTransferSoapOut">
<wsdl:part name="parameters" element="tns:EndDataTransferResponse"/>
</wsdl:message>
<wsdl:message name="SendDataToJobNodeSoapIn">
<wsdl:part name="parameters" element="tns:SendDataToJobNode"/>
<wsdl:message name="WriteDataToJobNodeSoapIn">
<wsdl:part name="parameters" element="tns:WriteDataToJobNode"/>
</wsdl:message>
<wsdl:message name="SendDataToJobNodeSoapOut">
<wsdl:part name="parameters" element="tns:SendDataToJobNodeResponse"/>
<wsdl:message name="WriteDataToJobNodeSoapOut">
<wsdl:part name="parameters" element="tns:WriteDataToJobNodeResponse"/>
</wsdl:message>
<wsdl:message name="ReadDataFromJobNodeSoapIn">
<wsdl:part name="parameters" element="tns:ReadDataFromJobNode"/>
......@@ -105,9 +106,9 @@
<wsdl:input message="tns:EndDataTransferSoapIn"/>
<wsdl:output message="tns:EndDataTransferSoapOut"/>
</wsdl:operation>
<wsdl:operation name="SendDataToJobNode">
<wsdl:input message="tns:SendDataToJobNodeSoapIn"/>
<wsdl:output message="tns:SendDataToJobNodeSoapOut"/>
<wsdl:operation name="WriteDataToJobNode">
<wsdl:input message="tns:WriteDataToJobNodeSoapIn"/>
<wsdl:output message="tns:WriteDataToJobNodeSoapOut"/>
</wsdl:operation>
<wsdl:operation name="ReadDataFromJobNode">
<wsdl:input message="tns:ReadDataFromJobNodeSoapIn"/>
......@@ -134,8 +135,8 @@
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SendDataToJobNode">
<soap:operation soapAction="http://hpcaas.it4i.cz/SendDataToJobNode" style="document"/>
<wsdl:operation name="WriteDataToJobNode">
<soap:operation soapAction="http://hpcaas.it4i.cz/WriteDataToJobNode" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
......@@ -173,8 +174,8 @@
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SendDataToJobNode">
<soap12:operation soapAction="http://hpcaas.it4i.cz/SendDataToJobNode" style="document"/>
<wsdl:operation name="WriteDataToJobNode">
<soap12:operation soapAction="http://hpcaas.it4i.cz/WriteDataToJobNode" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment