uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jaroslaw Cwiklik <uim...@gmail.com>
Subject Re: NullPointerException when RunRemoteAsyncAE tries to unload (UIMA AS and UIMA C++)
Date Fri, 23 Sep 2016 14:24:08 GMT
David, so there is progress. :)

I am not familiar with UimacppServiceController code but a quick glance at
the source
suggests that this code communicates with a C++ process via a socket:


 if (socket != null) {
// System.out.println("UimacppServiceManagement::quiesceAndStop()
// Sending QUIESCEANDSTOP");
writer.write("QUIESCEANDSTOP");
writer.flush();
BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));

It tells the C++ to quiesce and exit which apparently it does very quickly.
It looks like

    writer.write("QUIESCEANDSTOP");

succeeded, but the code fails here

BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
which means that the C++ socket is dead (process exited)

It seems that the code should tolerate such condition and not "scream"
Exception :)

I think a try catch should be added around this code and on SocketException
we should just log some informative
message like "Remote process socket closed - It may have terminated" or
something similar to that.

So this does not seem like a critical error although this should be cleaned
up.

-jerry

On Fri, Sep 23, 2016 at 9:41 AM, David Fox <David.Fox@humedica.com> wrote:

> I was able to install that, and I’m not getting the NullPointerException.
> The example annotator still runs successfully, but now I get
> ------------------------------------------------------------
> ---------------
>
> Attempting to deploy descriptors/Deploy_MeetingAnnotator.xml ...
> Waiting for Uima C++ service to connect...
> Waiting for Uima C++ service to connect...
> Waiting for Uima C++ service to report init status...
> deployCppService.cpp91 Start receiving messages
>
> Startinging GetMetaData instance
>
> Starting Annotator instance 0
>
> deployCppService.cpp UIMA C++ Service MeetingAnnotator at
> tcp://localhost:61616 Ready to process...
>
> Uima C++ service at MeetingAnnotator Ready to process...
> UIMA AS Service Initialization Complete
> ........Completed 8 documents; 17165 characters
> Time Elapsed : 3705 ms
> 0 8 apr_socket_recv command=SHUTDOWN
>
> deployCppService.cpp Shutdown started.
>
> Stopping GetMetaData instance
>
> Stopping Annotator instance 0
>
> deployCppService.cpp Shutdown done.
>
> UimacppServiceManagement service reports shutdown DONE
> UimacppShutdownHook sending quiesce message
> java.net.SocketException: Socket is closed
>         at java.net.Socket.getInputStream(Socket.java:903)
>         at
> org.apache.uima.aae.controller.UimacppServiceManagement.
> quiesceAndStop(Uima
> cppServiceManagement.java:88)
>         at
> org.apache.uima.aae.controller.UimacppServiceManagement.
> quiesceAndShutdown(
> UimacppServiceManagement.java:397)
>         at
> org.apache.uima.aae.controller.UimacppShutdownHook.run(
> UimacppServiceContro
> ller.java:1105)
> UimacppShutdownHook destroy C++ process
>
> ―――――
>
> I’ve attached the uima.log
>
> On 9/22/16, 3:54 PM, "Jaroslaw Cwiklik" <uimaee@gmail.com> wrote:
>
> >David, I've deployed uima-as 2.9.0-SNAPSHOT here:
> >
> >https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__repository.apache.org
> >_content_repositories_snapshots_org_apache_uima_
> uima-2Das_2.9.0-2DSNAPSHOT
> >_&d=DQIFaQ&c=3XrKki35ZWuh8X2qbeRISQ&r=BYS7q6K6Famz8NiMJzvOgYA-
> WQSvBt9z6TEb
> >aT3nnNM&m=NnQy2jfAk4Dyg-uijgdjHHbg6pxfdvwDkCn3166fVc8&
> s=y7GSTfzyEzhkYgFGy1
> >vLLmDJ82il_hzMP7Y4LQjuBPg&e=
> >
> >there is a binary tarball (tar.gz) in there.
> >
> >This is a trunk level uima-as code for the upcoming 2.9.0 uima-as release.
> >It has not been thoroughly
> >tested or vetted yet.  It has some fixes and improvements since 2.8.1. It
> >includes a new AMQ broker
> >version 5.14.0. It also has a fix for the problem you've reported.
> >
> >-jerry
> >
> >
> >On Thu, Sep 22, 2016 at 3:15 PM, Jaroslaw Cwiklik <uimaee@gmail.com>
> >wrote:
> >
> >> Another possibility is to deploy a snapshot in a public maven repo.
> >> Hopefully you can get the binary tarball
> >> onto your machines somehow. I will to do that know and let you know
> >>where
> >> to get this.
> >>
> >> -jerry
> >>
> >> On Thu, Sep 22, 2016 at 3:01 PM, David Fox <David.Fox@humedica.com>
> >>wrote:
> >>
> >>> Building from svn on our linux machines is a bit tricky, because they
> >>>are
> >>> cut off from the internet by a firewall, and maven install wants
> >>>internet
> >>> access to download dependencies.  It looks like there are workarounds
> >>>for
> >>> that
> >>>
> >>>(https://urldefense.proofpoint.com/v2/url?u=http-
> 3A__stackoverflow.com_q
> >>>uestions_7233328_how-2Ddo-2Di-2Dconfigu&d=DQIFaQ&c=
> 3XrKki35ZWuh8X2qbeRIS
> >>>Q&r=BYS7q6K6Famz8NiMJzvOgYA-WQSvBt9z6TEbaT3nnNM&m=
> NnQy2jfAk4Dyg-uijgdjHH
> >>>bg6pxfdvwDkCn3166fVc8&s=sk4NjHKmY1SCj4WAEH0A59C50xulbEthh1b5K5egbv0&e=
> >>> re-maven-for-of
> >>> fline-development
> >>>
> >>><https://urldefense.proofpoint.com/v2/url?u=http-
> 3A__stackoverflow.com_q
> >>>uestions_7233328_how-2Ddo-2Di-2Dconfigure-2Dmaven-2Dfor-
> 2Doffline-2Ddeve
> >>>lopment&d=DQIFaQ&c=3XrKki35ZWuh8X2qbeRISQ&r=
> BYS7q6K6Famz8NiMJzvOgYA-WQSv
> >>>Bt9z6TEbaT3nnNM&m=NnQy2jfAk4Dyg-uijgdjHHbg6pxfdvwDkCn3166fVc8&
> s=pMHCokJs
> >>>jTNk_XvWxddISyww6QBt65VZmeVGKLTLK94&e= >
> >>> suggests Artifactory), but it may take a day or two
> >>> before I can get everything set up.
> >>>
> >>> I could build it on my dev machine (OS X), but with the binary
> >>>install, I
> >>> wasn’t able to get the sample UIMA C++ code to build on Mac OS X.  (My
> >>> eventual plan is to get linux on my dev machine via virtual box, but
> >>>that
> >>> means more software to install…)
> >>>
> >>> So anyway, I’ll try to get this working so I can build from svn before
> >>>the
> >>> fix, reproduce the problem, and then update and verify the fix.
> >>>
> >>> Thanks,
> >>> David
> >>>
> >>> On 9/22/16, 1:23 PM, "Jaroslaw Cwiklik" <uimaee@gmail.com> wrote:
> >>>
> >>> >I think I see the bug. Do you know how to build uima-as from svn?
> >>> >
> >>> >https://urldefense.proofpoint.com/v2/url?u=https-3A__uima.
> >>> apache.org_build
> >>> >ing-2Duima.html&d=DQIFaQ&c=3XrKki35ZWuh8X2qbeRISQ&r=BYS7q6K
> >>> 6Famz8NiMJzvOgY
> >>> >A-WQSvBt9z6TEbaT3nnNM&m=9Hf7csP-1jIlxx_vgB3QA47yh0w3i1-
> >>> XbVER8KQmhT8&s=Gin5
> >>> >am-lATmbl6WQFmZrKwjxKa3tiL1qz1ykFh0cdWI&e=
> >>> >
> >>> >I will fix this shortly in the svn trunk. The next release of uima-as
> >>> >(2.9.0) is in the
> >>> >works. I will get a release candidate out hopefully next week.
> >>> >
> >>> >-jerry
> >>> >
> >>> >On Thu, Sep 22, 2016 at 12:08 PM, David Fox <David.Fox@humedica.com>
> >>> >wrote:
> >>> >
> >>> >> Thanks for the quick response
> >>> >>
> >>> >> Yes, it occurs every time, at the same line in RunRemoteAsyncAE
and
> >>> >> org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_
> >>> >> impl.undeploy(BaseUIMAAsynchronousEngine_impl.java:964)
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >> On 9/22/16, 11:15 AM, "Jaroslaw Cwiklik" <uimaee@gmail.com>
wrote:
> >>> >>
> >>> >> >This warning
> >>> >> >
> >>> >> >WARN  Transport                      - Transport Connection
to:
> >>>tcp://
> >>> >> >127.0.0.1:56261 failed: java.io.EOFException
> >>> >> >
> >>> >> >is from brokers log or console I suspect. It just means that
the
> >>> broker
> >>> >> >lost a connection to a client. Looks like the client
> >>> >> >went away without closing a connection. This is probably a
> >>>side-effect
> >>> >>of
> >>> >> >NPE.
> >>> >> >
> >>> >> >Is the NPE repeatable? Does it happen each time you run this
test?
> >>> >>Looking
> >>> >> >for a hint if there is a race
> >>> >> >condition in the UIMA-AS code.
> >>> >> >
> >>> >> >
> >>> >> >
> >>> >> >On Thu, Sep 22, 2016 at 10:54 AM, David Fox
> >>><David.Fox@humedica.com>
> >>> >> >wrote:
> >>> >> >
> >>> >> >> I¹m using the UIMA C++ framework 2.4.0 (32-bit) on linux
(CentOS
> >>> >>6.5),
> >>> >> >>and
> >>> >> >> following the instructions
> >>> >> >>https://urldefense.proofpoint.com/v2/url?u=https-
> >>> >> 3A__uima.apache.org_d_&d
> >>> >> >>=DQIFaQ&c=3XrKki35ZWuh8X2qbeRISQ&r=BYS7q6K6Famz8NiMJzvOgYA-
> >>> >> WQSvBt9z6TEbaT
> >>> >> >>3nnNM&m=dFZSJENJkyCDLeCQuBn89fBrTrsdKh4RIWwwPV7r0o8&s=CaIoLZ_7Je-
> >>> >> TYsr0ZIP
> >>> >> >>xs98mHRestzC4RtgVSp7kJaY&e=
> >>> >> >> uimacpp-2.4.0/docs/overview_and_setup.html.  I¹ve successfully
> >>> built
> >>> >> >> DaveDetector and run it with the standalone C++ pipeline
> >>>(runAECpp)
> >>> >>and
> >>> >> >> within a Java pipeline via JNI.  I¹ve now installed UIMA
AS
> >>>2.8.1 so
> >>> >>I
> >>> >> >>can
> >>> >> >> follow the instructions under 2.3 Testing Interoperability
with
> >>>UIMA
> >>> >>AS
> >>> >> >>
> >>> >> >>
> >>> >> >> cd $UIMACPP_HOME/examples/tutorial
> >>> >> >> runRemoteAsyncAE.sh tcp://localhost:61616 MeetingAnnotator
\
> >>> >> >> -d descriptors/Deploy_MeetingAnnotator.xml
> >>> >> >>
> >>> >> >>
> >>> >> >> I get a NullPointerException and a transport warning about
a
> >>> >> >> java.io.EOFException
> >>> >> >>
> >>> >> >>
> >>> >> >> runRemoteAsyncAE.sh tcp://localhost:61616 MeetingAnnotator
-d
> >>> >> >> descriptors/Deploy_MeetingAnnotator.xml -o `pwd`/out
> >>> >> >>
> >>> >> >> Attempting to deploy descriptors/Deploy_MeetingAnnotator.xml
...
> >>> >> >>
> >>> >> >> Waiting for Uima C++ service to connect...
> >>> >> >>
> >>> >> >> Waiting for Uima C++ service to connect...
> >>> >> >>
> >>> >> >> Waiting for Uima C++ service to report init status...
> >>> >> >>
> >>> >> >> deployCppService.cpp91 Start receiving messages
> >>> >> >>
> >>> >> >>
> >>> >> >> Startinging GetMetaData instance
> >>> >> >>
> >>> >> >>
> >>> >> >> Starting Annotator instance 0
> >>> >> >>
> >>> >> >>
> >>> >> >> deployCppService.cpp UIMA C++ Service MeetingAnnotator
at
> >>> >> >> tcp://localhost:61616 Ready to process...
> >>> >> >>
> >>> >> >>
> >>> >> >> Uima C++ service at MeetingAnnotator Ready to process...
> >>> >> >>
> >>> >> >> UIMA AS Service Initialization Complete
> >>> >> >>
> >>> >> >> .Completed 1 documents
> >>> >> >>
> >>> >> >> Time Elapsed : 2184 ms
> >>> >> >>
> >>> >> >> java.lang.NullPointerException
> >>> >> >>
> >>> >> >>         at
> >>> >> >>org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_
> >>> >> >> impl.undeploy(BaseUIMAAsynchronousEngine_impl.java:964)
> >>> >> >>
> >>> >> >>         at
> >>> >> >>org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_
> >>> >> >> impl.undeploy(BaseUIMAAsynchronousEngine_impl.java:906)
> >>> >> >>
> >>> >> >>         at org.apache.uima.examples.as.RunRemoteAsyncAE.run(
> >>> >> >> RunRemoteAsyncAE.java:260)
> >>> >> >>
> >>> >> >>         at org.apache.uima.examples.as.RunRemoteAsyncAE.main(
> >>> >> >> RunRemoteAsyncAE.java:314)
> >>> >> >>
> >>> >> >>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >>> >>Method)
> >>> >> >>
> >>> >> >>         at sun.reflect.NativeMethodAccessorImpl.invoke(
> >>> >> >> NativeMethodAccessorImpl.java:62)
> >>> >> >>
> >>> >> >>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> >>> >> >> DelegatingMethodAccessorImpl.java:43)
> >>> >> >>
> >>> >> >>         at java.lang.reflect.Method.invoke(Method.java:497)
> >>> >> >>
> >>> >> >>         at org.apache.uima.bootstrap.UimaBootstrap.main(
> >>> >> >> UimaBootstrap.java:87)
> >>> >> >>
> >>> >> >> WARN  Transport                      - Transport Connection
to:
> >>> >>tcp://
> >>> >> >> 127.0.0.1:56221 failed: java.io.EOFException
> >>> >> >>
> >>> >> >> I'm
> >>> >> >> I can also run with a collection reader:
> >>> >> >>
> >>> >> >>
> >>> >> >> runRemoteAsyncAE.sh tcp://localhost:61616 MeetingAnnotator
-d
> >>> >> >> descriptors/Deploy_MeetingAnnotator.xml -o `pwd`/out -c
> >>> >> >> /misc/NLP/dfox/scratch/uima/apache-uima-as-2.8.1/examples/
> >>> >> >> descriptors/collection_reader/FileSystemCollectionReader.
> mine.xml
> >>> >> >>
> >>> >> >> (where the modified collection reader points to
> >>> >> >>$UIMA_HOME/examples/data)
> >>> >> >> in which case I get ³Completed 8 documents², and xmi
output for
> >>>each
> >>> >>in
> >>> >> >>the
> >>> >> >> out/ directory, but still get the same exception and warning.
> >>>Based
> >>> >>on
> >>> >> >> that (plus looking at the RunRemoteAsyncAE java source),
it looks
> >>> >>like
> >>> >> >>my
> >>> >> >> analysis engine is running fine, but then hitting some
problem
> >>>when
> >>> >> >> RunRemoteAsyncAE tries to undeploy the C++ annotator.
> >>> >> >>
> >>> >> >> I¹m trying to figure out if this is something I should
worry
> >>>about
> >>> >> >> (especially if it reflects a problem with running UIMA
C++ 2.4
> >>>and
> >>> >>UIMA
> >>> >> >>AS
> >>> >> >> 2.8.1), or if it is normal or harmless.
> >>> >> >>
> >>> >> >> When I run the similar test with one of the Java-only
UIMA AS
> >>> >>samples:
> >>> >> >>
> >>> >> >>
> >>> >> >> runRemoteAsyncAE.sh tcp://localhost:61616
> >>>MeetingDetectorTaeQueue -d
> >>> >> >> deploy/as/Deploy_MeetingDetectorTAE.xml -c
> >>> >> >>descriptors/collection_reader/
> >>> >> >> FileSystemCollectionReader.mine.xml
> >>> >> >>
> >>> >> >> I still get the transport warning
> >>> >> >>
> >>> >> >>
> >>> >> >> WARN  Transport                      - Transport Connection
to:
> >>> >>tcp://
> >>> >> >> 127.0.0.1:56261 failed: java.io.EOFException
> >>> >> >>
> >>> >> >> but not the NullPointerException
> >>> >> >>
> >>> >> >> Thanks,
> >>> >> >> David
> >>> >> >>
> >>> >> >>
> >>> >> >>
> >>> >> >>
> >>> >> >>
> >>> >> >>
> >>> >>
> >>> >>
> >>>
> >>>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message