Opa session error - debugging

I've got the following error with my opa application :
[SESSION] Uncaught exception: "{OpaRPC_Server: {timeout: {client: {client: $"s2jtpj3tbyztpfbrm3gf8bd2k7kcnxg1"$; page: $
896774575$}; fun_id: $"_v0_get_value_stdlib.core.xhtml"$}}}"
The following message is skipped.:
If you want (msg, st, ctx) debug printing set debug variable session_debug >= 200C
What does it mean ?

That means two things you have a server sessions which calls a client function, but the client doesn't reply to the server.
1 - When a client doesn't reply to the server, the client calls raise an Opa exception "OpaRPC_Server" after a timeout.
That can happen in several cases (client runtime error, client leaves the application, etc.).
In your case the server try to call the client function identified by "_v0_get_value_stdlib.core.xhtml" (Dom.get_value?)
2 - When an exception is not catch on a session handler, the session catch the exception, throw the current message and the session is released to process future messages.
Be aware that when you make (a standard) session, the message handler is a critical section.

Related

Spring what is between Controller and Interceptor

I have a controller that is doing something, everything seems fine, it logs a success, and then it does this
return new ResponseEntity<>(resp, HttpStatus.OK);
Seems like it should send a 200 OK.
Well, I also have a HandlerInterceptorAdapter with an "afterCompletion" that logs the status:
logger.debug("Response status: {}, URI: {}", response.getStatus(), request.getRequestURI());
This is showing a 500 where there was a success from the controller.
In the stdout logs I see an error
2018-01-12 12:33:59.035 ERROR 18952 --- [pr-8080-exec-14] o.s.boot.web.support.ErrorPageFilter : Cannot forward to error page for request [/ws/path] as the response has already been committed.
As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false
and
org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error: -32
I can't find any doc on what that APR error is and I have no idea why the status code would be wrong. I am using tomcat 8.5.
So. APR -32 is a "Client Abort" error. The client was timing out in waiting. It looks like what was happening was the client made a request and was sitting in queue for a few seconds. It has a short hard timeout limit. The client timed out before the server got to the request. Then the server picked up the request and did everything fine but when trying to write back to the client, it found the socket closed. So it set a 500 and threw that exception.

Exception handling in gRPC

I have a server written in Java and client written in PHP. How can client catch exception from server if anything goes wrong? I can't find anything about exception handling in gRPC documentation.
Thank you!
For handled exceptions, call responseObserver.onError(). If you pass in a StatusRuntimeException or StatusException (generally created via status.asRuntimeException()) the status code and description will be communicated to the client. Unhandled exceptions within a callback will cancel the RPC and will continue propagating the exception (generally leading in an UncaughtExceptionHandler being called for the executor).
In the response at the client side (php)
http://www.grpc.io/grpc/php/source-class-Grpc.UnaryCall.html#82
the status here will have the code and details fields which will determine the response code and the appropriate message if set as mentioned in Eric's response. Based on that appropriate error handling can be done at the client.

How to implement a retry SOAP request flow if the first try fails

I'm working with Websphere Message Broker V8.0, I have the next flow for a simple SOAP mediation:
SOAP Input -> SOAP request -> Soap Extract -> Compute Node -> SoapReply
Is there any logic that can be applied to this flow if a request fails? (timeout, system error, intermittent service)
thanks in advance.
A possible solution to your problem could be:
Connecting both the failure terminal of your SOAP Request node to a flow that could route to the input of the SOAP Request when certain failures occur and putting a TryCatch node before and after the SOAP Request to have a separated error handling region, while connecting the fault output of the SOAP Request to a Throw node to raise exceptions when faults occur and have an error handler subflow connected to the catch terminal of the TryCatch before the SOAP Request to route to the input terminal of the SOAP Request.
As you can see, you will need to implement the error handling logic required for your application, Message Broker provides only the framework for it. So first of all you should familiarize yourself with the error handling capabilities of the message flows:
http://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac00410_.htm

Abort HTTP-Request Server process

As shown in Abort DoJo XHR-Request it is possible to cancel a (dojo/request/xhr) http request on the Client.
The problem is, that the according server process (initiated by the request) is still running.
If we use a XMLHttpRequest-Object, calling abort() on it would stop the server process.
So the question is: Is it possible to achive this with dojo? Or is it possible to get access to the internal XMLHttpRequest-Object (used by dojo/request/xhr) to call abort() on it?

What does this gSoap fault message mean?

I am using gSoap to communicate with the web service. I am using Qt to create application that uses gSoap. I am getting following fault message for some of the calls
SOAP 1.1 fault: "http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher":DeserializationFailed[no subcode]
"The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'GetPendingCommands'. Unexpected end of file. Following elements are not closed: Body, Envelope. Line 2, position 459."
Can someone please explain me what could be wrong with the service?
Thanks
DPatel
If chunking is turned on in your client side code, try turning it off. I seem to recall that you have to do something special with gSoap to get it to support chunking on the server side.
The error message means the client has received a truncated SOAP envelope. This often happens if the web service neglects to flush its output buffer before returning.

Resources