[Haskell-beginners] how to debug Prelude.read: no parse
PICCA Frederic-Emmanuel
frederic-emmanuel.picca at synchrotron-soleil.fr
Wed Nov 21 17:59:50 UTC 2018
Hello, I am using the soap package and wrote a StreamParser which use the Consuite Xml system
I have this kind of error when I execute my code
[picca at process2 autoprocess-exe]$ stack exec autoprocessing-exe -- exec --json \{\"tag\":\"XdsMe\",\"contents\":[39878,[0,0,0,0,22,0],null,\"UnCompressed\"]\} +RTS -xc -Pa
response:<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:findDataCollectionResponse xmlns:ns2="http://ispyb.ejb3.webservices.collection"><dataCollection><actualCenteringPosition> /omega=280.000125 /phi=0.000020 /uglidex=-1.403875 /phiz=-0.127760 /chi=0.000005 /uglidey=-0.508216 /zoom=646.972000</actualCenteringPosition><axisEnd>180.0</axisEnd><axisRange>0.1</axisRange><axisStart>0.0</axisStart><beamShape>rectangular</beamShape><beamSizeAtSampleX>100.0</beamSizeAtSampleX><beamSizeAtSampleY>100.0</beamSizeAtSampleY><dataCollectionId>39878</dataCollectionId><dataCollectionNumber>1</dataCollectionNumber><detector2theta>0.0</detector2theta><detectorDistance>296.869</detectorDistance><endTime>2018-11-21T16:54:18+01:00</endTime><exposureTime>0.025</exposureTime><fileTemplate>C2-BZ1692_1</fileTemplate><flux>1.27E10</flux><flux_end>1.27E10</flux_end><imageDirectory>/data4/proxima1-soleil/2018_Run5/2018-11-21/20180897/RAW_DATA/C2/C2-BZ1692</imageDirectory><imagePrefix>C2-BZ1692</imagePrefix><imageSuffix>h5</imageSuffix><kappaStart>0.0</kappaStart><numberOfImages>1800</numberOfImages><numberOfPasses>1</numberOfPasses><overlap>0.0</overlap><phiStart>0.0</phiStart><printableForReport>1</printableForReport><resolution>1.99996</resolution><rotationAxis>Phi</rotationAxis><runStatus>Data collection successful</runStatus><slitGapHorizontal>9999.0</slitGapHorizontal><slitGapVertical>9999.0</slitGapVertical><startImageNumber>1</startImageNumber><startTime>2018-11-21T16:52:42+01:00</startTime><synchrotronMode>Hybrid</synchrotronMode><transmission>20.1</transmission><undulatorGap1>6.4649</undulatorGap1><wavelength>0.978566</wavelength><xbeam>2044.1</xbeam><ybeam>2291.12</ybeam><dataCollectionGroupId>41587</dataCollectionGroupId></dataCollection></ns2:findDataCollectionResponse></soap:Body></soap:Envelope>
*** Exception (reporting due to +RTS -xc): (THUNK_1_0), stack trace:
Data.Conduit.Internal.Conduit.fmap.\,
called from Data.Conduit.Internal.Conduit.fmap,
called from Network.SOAP.Parsing.Stream.readContent,
called from Network.SOAP.Parsing.Stream.readTag,
called from ISPyB.Soap.toResponseParser,
called from Data.Conduit.Internal.Conduit.pure,
called from Data.Conduit.Internal.Conduit.>>=.\.\,
called from Data.Conduit.Internal.Conduit.>>=.\,
called from Data.Conduit.Internal.Conduit.>>=,
called from Text.XML.Stream.Parse.force,
called from Network.SOAP.unwrapEnvelopeSink,
called from Network.SOAP.runResponseParser,
called from Network.SOAP.invokeWS,
called from ISPyB.Soap.callISPyBService,
called from XdsMe.xdsme,
called from JobParser.runJob,
called from Main.run,
called from Main.main
autoprocessing-exe: Prelude.read: no parse
CallStack (from -prof):
Data.Conduit.Internal.Conduit.fmap.\ (src/Data/Conduit/Internal/Conduit.hs:140:47-58)
Data.Conduit.Internal.Conduit.fmap (src/Data/Conduit/Internal/Conduit.hs:140:5-58)
Network.SOAP.Parsing.Stream.readContent (src/Network/SOAP/Parsing/Stream.hs:57:1-46)
Network.SOAP.Parsing.Stream.readTag (src/Network/SOAP/Parsing/Stream.hs:61:1-33)
ISPyB.Soap.toResponseParser (src/ISPyB/Soap.hs:(65,5)-(129,74))
Data.Conduit.Internal.Conduit.pure (src/Data/Conduit/Internal/Conduit.hs:143:5-27)
Data.Conduit.Internal.Conduit.>>=.\.\ (src/Data/Conduit/Internal/Conduit.hs:150:51-68)
Data.Conduit.Internal.Conduit.>>=.\ (src/Data/Conduit/Internal/Conduit.hs:150:41-68)
Data.Conduit.Internal.Conduit.>>= (src/Data/Conduit/Internal/Conduit.hs:150:5-68)
Text.XML.Stream.Parse.force (Text/XML/Stream/Parse.hs:873:1-68)
Network.SOAP.unwrapEnvelopeSink (src/Network/SOAP.hs:(79,1)-(81,30))
Network.SOAP.runResponseParser (src/Network/SOAP.hs:(61,1)-(76,31))
Network.SOAP.invokeWS (src/Network/SOAP.hs:(55,1)-(58,27))
ISPyB.Soap.callISPyBService (src/ISPyB/Soap.hs:(310,1)-(325,93))
XdsMe.xdsme (src/XdsMe.hs:(176,1)-(179,77))
JobParser.runJob (src/JobParser.hs:(80,1)-(84,57))
Main.run (app/Main.hs:(112,1)-(114,31))
Main.main (app/Main.hs:(118,1)-(123,72))
I generate the stacktrace with RTS.
but now I know theat my error is in the roRespondParser whcih is quite long
here the code
instance a ~ b => ToResponseParser (ToolsForCollectionWebService a) b where
toResponseParser (FindDataCollection _) =
StreamParser . flaxTag "findDataCollectionResponse" . flaxTag "dataCollection" $
mkSomeDataCollection <$>
( DataCollection
<$> flaxContent "actualCenteringPosition"
<*> readTag "axisEnd"
<*> readTag "axisRange"
<*> readTag "axisStart"
<*> flaxContent "beamShape"
<*> readTag "beamSizeAtSampleX"
<*> readTag "beamSizeAtSampleY"
<*> laxTag "centeringMethod" readContent
<*> (DataCollectionId <$> readTag "dataCollectionId")
<*> readTag "dataCollectionNumber"
<*> readTag "detector2theta"
<*> readTag "detectorDistance"
<*> flaxContent "endTime"
<*> readTag "exposureTime"
<*> flaxContent "fileTemplate"
<*> readTag "flux"
<*> readTag "flux_end"
<*> flaxTag "imageDirectory" parseAbsDir'
<*> flaxContent "imagePrefix"
<*> laxContent "imageSuffix"
<*> readTag "kappaStart"
<*> readTag "numberOfImages"
<*> readTag "numberOfPasses"
<*> laxTag "omegaStart" readContent
<*> readTag "overlap"
<*> readTag "phiStart"
<*> readTag "printableForReport"
<*> readTag "resolution"
<*> laxTag "resolutionAtCorner" readContent
<*> readTag "rotationAxis"
<*> flaxContent "runStatus"
<*> readTag "slitGapHorizontal"
<*> readTag "slitGapVertical"
<*> readTag "startImageNumber"
<*> readTag "startTime"
<*> readTag "synchrotronMode"
<*> readTag "transmission"
<*> readTag "undulatorGap1"
<*> laxTag "undulatorGap2" readContent
<*> readTag "wavelength" -- add the unit
<*> readTag "xbeam"
<*> laxTag "xtalSnapshotFullPath1" parseAbsFile'
<*> laxTag "xtalSnapshotFullPath2" parseAbsFile'
<*> laxTag "xtalSnapshotFullPath3" parseAbsFile'
<*> laxTag "xtalSnapshotFullPath4" parseAbsFile'
<*> readTag "ybeam"
<*> readTag "dataCollectionGroupId"
)
Now I would like to know whcih line is problematic. Is it possible to have more information when debuging ?
I really want to know which part of my response is wrong ?
thansk for your advices.
Frederic
More information about the Beginners
mailing list