Hi,
the release is currently blocked by failures in locking failures in WFS
cite tests.
There is a chance these are due to Mauro recent JDBC locking optimization,
but
looking at it, I'm not sure how.
Here is the log of the requests in the failing test (from my local CITE
test engine run):
Assertion:
In response to a Transaction request that specifies
releaseAction="SOME",
only modified features in the lock set shall be unlocked.
Request d1e29892_1:
Method: POST
URL: http://localhost:8080/geoserver/wfs
Body:
<wfs:Transaction xmlns="http://www.occamlab.com/ctl"
xmlns:ctl="http://www.occamlab.com/ctl"
xmlns:gml="http://www.opengis.net/gml"
xmlns:myparsers="http://teamengine.sourceforge.net/parsers"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:p="http://teamengine.sourceforge.net/parsers"
xmlns:parsers="http://www.occamlab.com/te/parsers"
xmlns:saxon="http://saxon.sf.net/"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:te="http://www.occamlab.com/te"
xmlns:tec="java:com.occamlab.te.TECore"
xmlns:tems="java:com.occamlab.te.web.MonitorServlet"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
service="WFS"
version="1.1.0">
<wfs:Insert handle="insert-1">
<sf:EntitéGénérique gml:id="cite.gmlsf0-f502">
<gml:name
codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f502</gml:name>
<sf:attribut.Géométrie>
<gml:Point srsName="urn:ogc:def:crs:EPSG::4326">
<gml:pos>68.723555 -5.635101</gml:pos>
</gml:Point>
</sf:attribut.Géométrie>
<sf:boolProperty>false</sf:boolProperty>
<sf:str4Property>#!/_</sf:str4Property>
</sf:EntitéGénérique>
</wfs:Insert>
</wfs:Transaction>
Response from parser p:XMLValidatingParser.GMLSF1:
<wfs:TransactionResponse xmlns:gml="http://www.opengis.net/gml"
xmlns:it.geosolutions="http://www.geo-solutions.it"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.1.0"
xsi:schemaLocation="http://www.opengis.net/wfs
http://localhost:8080/geoserver/schemas/wfs/1.1.0/wfs.xsd">
<wfs:TransactionSummary>
<wfs:totalInserted>1</wfs:totalInserted>
<wfs:totalUpdated>0</wfs:totalUpdated>
<wfs:totalDeleted>0</wfs:totalDeleted>
</wfs:TransactionSummary>
<wfs:TransactionResults/>
<wfs:InsertResults>
<wfs:Feature handle="insert-1">
<ogc:FeatureId fid="EntitéGénérique.fid-622faeca_14609a39d11_-7fda"/>
</wfs:Feature>
</wfs:InsertResults>
<!--Response received in [100] milliseconds--></wfs:TransactionResponse>
Request d1e29939_1:
Method: POST
URL: http://localhost:8080/geoserver/wfs
Body:
<wfs:LockFeature xmlns="http://www.occamlab.com/ctl"
xmlns:ctl="http://www.occamlab.com/ctl"
xmlns:gml="http://www.opengis.net/gml"
xmlns:myparsers="http://teamengine.sourceforge.net/parsers"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:p="http://teamengine.sourceforge.net/parsers"
xmlns:parsers="http://www.occamlab.com/te/parsers"
xmlns:saxon="http://saxon.sf.net/"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:te="http://www.occamlab.com/te"
xmlns:tec="java:com.occamlab.te.TECore"
xmlns:tems="java:com.occamlab.te.web.MonitorServlet"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
expiry="5"
handle="LockFeature-tc3"
lockAction="ALL"
service="WFS"
version="1.1.0">
<wfs:Lock handle="lock-1" typeName="sf:EntitéGénérique">
<ogc:Filter>
<ogc:BBOX>
<ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner>34.5 -10.0</gml:lowerCorner>
<gml:upperCorner>72.0 32.0</gml:upperCorner>
</gml:Envelope>
</ogc:BBOX>
</ogc:Filter>
</wfs:Lock>
</wfs:LockFeature>
Response from parser p:XMLValidatingParser.GMLSF1:
<wfs:LockFeatureResponse xmlns:gml="http://www.opengis.net/gml"
xmlns:it.geosolutions="http://www.geo-solutions.it"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs
http://localhost:8080/geoserver/schemas/schemas/wfs/1.1.0/wfs.xsd">
<wfs:LockId>LockFeature-tc3_4c8f938e38e98c7f</wfs:LockId>
<wfs:FeaturesLocked>
<ogc:FeatureId fid="EntitéGénérique.f004"/>
<ogc:FeatureId fid="EntitéGénérique.f007"/>
<ogc:FeatureId fid="EntitéGénérique.f017"/>
<ogc:FeatureId fid="EntitéGénérique.fid-622faeca_14609a39d11_-7fda"/>
</wfs:FeaturesLocked>
<!--Response received in [88] milliseconds--></wfs:LockFeatureResponse>
Request d1e30011_1:
Method: POST
URL: http://localhost:8080/geoserver/wfs
Body:
<wfs:Transaction xmlns="http://www.occamlab.com/ctl"
xmlns:ctl="http://www.occamlab.com/ctl"
xmlns:gml="http://www.opengis.net/gml"
xmlns:myparsers="http://teamengine.sourceforge.net/parsers"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:p="http://teamengine.sourceforge.net/parsers"
xmlns:parsers="http://www.occamlab.com/te/parsers"
xmlns:saxon="http://saxon.sf.net/"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:te="http://www.occamlab.com/te"
xmlns:tec="java:com.occamlab.te.TECore"
xmlns:tems="java:com.occamlab.te.web.MonitorServlet"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
releaseAction="SOME"
service="WFS"
version="1.1.0">
<wfs:LockId>LockFeature-tc3_4c8f938e38e98c7f</wfs:LockId>
<wfs:Update handle="upd-1" typeName="sf:EntitéGénérique">
<wfs:Property>
<wfs:Name>sf:boolProperty</wfs:Name>
<wfs:Value>true</wfs:Value>
</wfs:Property>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>gml:name</ogc:PropertyName>
<ogc:Literal>cite.gmlsf0-f502</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</wfs:Update>
</wfs:Transaction>
Response from parser p:XMLValidatingParser.GMLSF1:
<wfs:TransactionResponse xmlns:gml="http://www.opengis.net/gml"
xmlns:it.geosolutions="http://www.geo-solutions.it"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.1.0"
xsi:schemaLocation="http://www.opengis.net/wfs
http://localhost:8080/geoserver/schemas/wfs/1.1.0/wfs.xsd">
<wfs:TransactionSummary>
<wfs:totalInserted>0</wfs:totalInserted>
<wfs:totalUpdated>1</wfs:totalUpdated>
<wfs:totalDeleted>0</wfs:totalDeleted>
</wfs:TransactionSummary>
<wfs:TransactionResults/>
<wfs:InsertResults>
<wfs:Feature>
<ogc:FeatureId fid="none"/>
</wfs:Feature>
</wfs:InsertResults>
<!--Response received in [99] milliseconds--></wfs:TransactionResponse>
Request d1e30077_1:
Method: POST
URL: http://localhost:8080/geoserver/wfs
Body:
<wfs:Transaction xmlns="http://www.occamlab.com/ctl"
xmlns:ctl="http://www.occamlab.com/ctl"
xmlns:gml="http://www.opengis.net/gml"
xmlns:myparsers="http://teamengine.sourceforge.net/parsers"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:p="http://teamengine.sourceforge.net/parsers"
xmlns:parsers="http://www.occamlab.com/te/parsers"
xmlns:saxon="http://saxon.sf.net/"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:te="http://www.occamlab.com/te"
xmlns:tec="java:com.occamlab.te.TECore"
xmlns:tems="java:com.occamlab.te.web.MonitorServlet"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
service="WFS"
version="1.1.0">
<wfs:Delete handle="del-1" typeName="sf:EntitéGénérique">
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>gml:name</ogc:PropertyName>
<ogc:Literal>cite.gmlsf0-f502</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</wfs:Delete>
</wfs:Transaction>
Response from parser p:XMLValidatingParser.GMLSF1:
<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/ows
http://localhost:8080/geoserver/schemas/ows/1.0.0/owsExceptionReport.xsd">
<ows:Exception exceptionCode="MissingParameterValue" locator="del-1">
<ows:ExceptionText>Transaction does not have authorization for
EntitéGénérique:EntitéGénérique.f007</ows:ExceptionText>
</ows:Exception>
<!--Response received in [98] milliseconds--></ows:ExceptionReport>
Message d1e30118_1:
FAILURE: Expected totalDeleted = 1 (feature with
gml:name="cite.gmlsf0-f502" should be UNLOCKED)
Subtest s0010/d1e34700_1/d1e760_1/d1e31421_1/d1e29472_1/d1e30125_1 Failed
Request d1e30140_1:
Method: POST
URL: http://localhost:8080/geoserver/wfs
Body:
<wfs:Transaction xmlns="http://www.occamlab.com/ctl"
xmlns:ctl="http://www.occamlab.com/ctl"
xmlns:gml="http://www.opengis.net/gml"
xmlns:myparsers="http://teamengine.sourceforge.net/parsers"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:ows="http://www.opengis.net/ows"
xmlns:p="http://teamengine.sourceforge.net/parsers"
xmlns:parsers="http://www.occamlab.com/te/parsers"
xmlns:saxon="http://saxon.sf.net/"
xmlns:sf="http://cite.opengeospatial.org/gmlsf"
xmlns:te="http://www.occamlab.com/te"
xmlns:tec="java:com.occamlab.te.TECore"
xmlns:tems="java:com.occamlab.te.web.MonitorServlet"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
service="WFS"
version="1.1.0">
<wfs:Delete handle="del-1" typeName="sf:EntitéGénérique">
<ogc:Filter>
<ogc:BBOX>
<ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner>34.5 -10.0</gml:lowerCorner>
<gml:upperCorner>72.0 32.0</gml:upperCorner>
</gml:Envelope>
</ogc:BBOX>
</ogc:Filter>
</wfs:Delete>
</wfs:Transaction>
Response from parser p:XMLValidatingParser.GMLSF1:
<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/ows
http://localhost:8080/geoserver/schemas/ows/1.0.0/owsExceptionReport.xsd">
<ows:Exception exceptionCode="MissingParameterValue" locator="del-1">
<ows:ExceptionText>Transaction does not have authorization for
EntitéGénérique:EntitéGénérique.f004</ows:ExceptionText>
</ows:Exception>
<!--Response received in [113] milliseconds--></ows:ExceptionReport>
Subtest s0010/d1e34700_1/d1e760_1/d1e31421_1/d1e29472_1/d1e30186_1 Passed
Result: Failed
The test is failing because when doing a transaction against locked
features with relaseAction=SOME, according to the spec:
-----------------------------------------
A value of *SOME*
indicates that *only the locks on feature instances modified by the
transaction should be*
*released*. The other, unmodified, feature instances should remain locked
using the same
<LockId> so that subsequent transactions can operate on those feature
instances. In the
event that the releaseAction is set to SOME, and an expiry period was
specified on the
<LockFeature> or <GetFeatureWithLock> elements using the expiry attribute,
the
expiry counter must be reset to zero after each transaction unless all
feature instances in
the locked set have been operated upon.
For example, i*f a client application locks 20 feature instances and then
submits a*
*transaction request that only operates on 10 of those locked feature
instances, a*
*releaseAction of SOME would mean that the 10 remaining unaltered feature
instances*
*should remain locked when the transaction terminates. *Subsequent
transaction operations
can then be submitted by the client application, using the same lock
identifier to modify
the remaining 10 feature instances
-----------------------------------------
Long story short, the features modified by the transaction should be
unlocked, and the lock life should be extended for the others.
In the test results above you can see that instead one feature gets
modified, but apparently its lock
is not released.
I've been looking at the code in Transaction, and in JDBCDataStore, and
InProcessLockManager, so far I don't
see how we can even release a lock on a specific feature id, there is
a unLockFeatureID method,
but nothing in GeoTools or GeoServer is calling it.
And the code Mauro modified only called assertAccess, which by itself does
not release locks
I'm going to look into this more, but if anybody has a clue, please share
Cheers
Andrea
--
==
Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.
==
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
-------------------------------------------------------
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
GeoTools-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel