Subject: RE: Concurrent access to ogsadai service
- Next message: OGSA-DAI Support: "Re: Binary Data"
- Previous message: jiri.kraus@scai.fhg.de: "RE: Concurrent access to ogsadai service"
- In reply to: jiri.kraus@scai.fhg.de: "RE: Concurrent access to ogsadai service"
From: Tom Sugden (tom@epcc.ed.ac.uk)
Date: Sep 15, 2005 15:46
Hi Jiri,
My apologies, the recommendations I gave for OGSA-DAI OGSI R6 were actually
accurate for R5 and not R6. Some changes were made to the Client Toolkit
APIs for R6 which means that a different approach is required to perform
multiple requests concurrently. The client program should use the
OGSIServiceFetcher class to create multiple DataServices with the same
handle, then each query should be processed using each DataService object.
Please see the attached file for an example.
Cheers,
Tom
-----Original Message-----
From: jiri.kraus@scai.fhg.de [mailto:jiri.kraus@scai.fraunhofer.de]
Sent: 15 September 2005 08:34
To: Tom Sugden
Cc: users@ogsadai.org.uk
Subject: RE: Concurrent access to ogsadai service
Hello Tom,
Am Di, den 13.09.2005 schrieb Tom Sugden um 13:41:
> Hi Jiri,
>
> There are plans to introduce concurrency into the OGSA-DAI engine (the
> core component responsible for processing requests) in the next
> release. However, for all current versions of OGSA-DAI the engine can
> process only one request at a time.
>
> This is not a problem if you are using the OGSA-DAI OGSI release,
> because you can simply create multiple GridDataServices (GDS) using
> the same GridDataServiceFactory (GDSF). This can be achieved easily
> using the client toolkit APIs. Each GDS will have its own engine so
> multiple requests can be processed simultaneously by sending one to each
GDS.
As I am using OGSA-DAI OGSI 6.0 that will be no problem. But how can i do
this. The information on this sites:
http://www.ogsadai.org.uk/docs/R6.0/doc/ogsi/services/GDSF.html
do not help me so much and the only information i found about fetching a
GDSF with a OGSA-DAI client with the OGSI 6.0 release is this dead link:
http://www.ogsadai.org.uk/docs/R6.0/examples/tutorials/clienttoolkit/CreateA
ndDestroyGDS.java
I also found examples for older releases of OGSA-DAI ogsi, but as i see it,
the interface has changed so they can not be used with the 6.0 release.
Where can i find some more information?
Best regards,
Jiri
>
> If you are using the WSI or WS-RF version of OGSA-DAI, then performing
> concurrent requests is more difficult. There is one engine for each
> DataServiceResource (DSR), so it is necessary to deploy multiple DSRs
> then add them to your DataService (DS). In a similar manner to the
> OGSI case, each DSR can then be used to process a request at the same
> time. However, it is not as straight forward to deploy a new DSR as it
> is to create a new GDS instance. To do so requires the use of the
> deployment wizards or command-line tools as described in the user doc.
>
> As I stated earlier, we plan to provide support for concurrency in the
> engine for the next releases of OGSA-DAI WSI and WS-RF, due around the
> end of October.
>
> I hope this is of some help,
>
> Tom Sugden
> The OGSA-DAI Project Team
>
>
> -----Original Message-----
> From: owner-users@ogsadai.org.uk [mailto:owner-users@ogsadai.org.uk]
> On Behalf Of jiri.kraus@scai.fhg.de
> Sent: 13 September 2005 08:38
> To: users@ogsadai.org.uk
> Subject: Concurrent access to ogsadai service
>
> Hello,
>
> i am using ogsadai for a meta data catalog, to test the use case i
> have generated 10 grid jobs concurrently accessing the same ogsadai
service.
> On the client side i got these exeptions:
>
> - Parsing error received.
> - Pausable input stream has received an error:
> org.xml.sax.SAXParseException: Content is not allowed in prolog.
> - Throwing error from PausableInputStream.waitUntilPaused()
> - Content is not allowed in prolog.
> - uk.org.ogsadai.client.toolkit.exception.DataFormatException created:
> Data not in WebRowSetFormat
> Data is:
> OGSA-DAI system protection: Adding 0 bytes to the Java stack may cause
> a java.lang.OutOfMemoryError
> org.xml.sax.SAXParseException: Content is not allowed in prolog.
> at
> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unk
> nown
> Source)
> at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown
> Source)
> at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown
> Source)
> at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown
> Source)
> at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown
> Source)
> at
> org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatc
> h(Unkn
> own Source)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unk
> nown
> Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> at
> uk.org.ogsadai.common.ParserThread.run(WebRowSetXMLStreamToResultSetFo
> rwardO
> nly.java:741)
>
> I checked the Sever logs and found (muliple times):
>
> 439752026 [http-8080-Processor4] ERROR
> uk.org.ogsadai.engine.ActivityEngine - An exception has been raised.
> uk.org.ogsadai.engine.controlflow.RequestUserException: A request is
> already processing. This engine implementation cannot process multiple
> request simultaneously.
> at
> uk.org.ogsadai.engine.ActivityEngine.perform(ActivityEngine.java:100)
> at
> uk.org.ogsadai.dataresource.BasicDataResourceManager.perform(BasicData
> Resour
> ceManager.java:130)
> at
> uk.org.ogsadai.service.ogsi.gds.impl.GridDataService.perform(GridDataS
> ervice
> .java:309)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
> ava:39
> )
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
> orImpl
> .java:25)
> at java.lang.reflect.Method.invoke(Method.java:324)
> at
> org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.ja
> va:402
> )
> at
>
org.globus.ogsa.handlers.RPCURIProvider.invokeMethodSub(RPCURIProvider.java:
> 363)
> at
> org.globus.ogsa.handlers.PrivilegedInvokeMethodAction.run(PrivilegedIn
> vokeMe
> thodAction.java:36)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Subject.java:379)
> at
> org.globus.gsi.jaas.GlobusSubject.runAs(GlobusSubject.java:49)
> at org.globus.gsi.jaas.JaasSubject.doAs(JaasSubject.java:84)
> at
> org.globus.ogsa.handlers.RPCURIProvider.invokeMethod(RPCURIProvider.ja
> va:316
> )
> at
> org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.
> java:3
> 09)
> at
> org.globus.ogsa.handlers.RPCURIProvider.processMessage(RPCURIProvider.
> java:2
> 81)
> at
> org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:333)
> at
>
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:
> 71)
> at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
> at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
> at
> org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:481)
> at org.apache.axis.server.AxisServer.invoke(AxisServer.java:323)
> at
> org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:854)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
> at
>
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:
> 339)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> cation
> FilterChain.java:200)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> lterCh
> ain.java:146)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVa
> lve.ja
> va:209)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext
> .invok
> eNext(StandardPipeline.java:596)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextVa
> lve.ja
> va:144)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext
> .invok
> eNext(StandardPipeline.java:596)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
> 2358)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.ja
> va:133
> )
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext
> .invok
> eNext(StandardPipeline.java:596)
> at
>
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
> java:118)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext
> .invok
> eNext(StandardPipeline.java:594)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.ja
> va:116
> )
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext
> .invok
> eNext(StandardPipeline.java:594)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValv
> e.java
> :127)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext
> .invok
> eNext(StandardPipeline.java:596)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proces
> sConne
> ction(Http11Protocol.java:705)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPo
> ol.jav
> a:683)
> at java.lang.Thread.run(Thread.java:534)
>
> Is there any way to enable concurrent access or is
> DataService.pollUntilRequestCompleted(int interval) the only and the
> right way?
>
> I appreciat every suggestion or something else.
>
> Best regards,
>
> --
> Jiri Kraus
>
> Fraunhofer-Institute for Algorithms and Scientific Computing SCAI
>
> Schloss Birlinghoven
>
> 53754 Sankt Augustin
>
> Germany
>
>
>
> Tel: +49-2241-14-2145
>
> Fax: +49-2241-14-2181
>
> E-Mail: jiri.kraus@scai.fraunhofer.de
>
- application/octet-stream attachment: ConcurrentQueries.java
- Next message: OGSA-DAI Support: "Re: Binary Data"
- Previous message: jiri.kraus@scai.fhg.de: "RE: Concurrent access to ogsadai service"
- In reply to: jiri.kraus@scai.fhg.de: "RE: Concurrent access to ogsadai service"