Bug #2418
CNCore.setObsoletedBy() returns with InvalidRequest
100%
Description
When I attempt a setObsoletedBy method call on the CN, I receive the following error from metacat:
The 'obsoletedByPid' must be provided as a parameter and was not.
I am able to see the correct parameter go through on the wire via debugging statements from the dataone_libclient_java library.
On another note, the only subject on a CN that is authorized to call this method is the CN itself. This function is only called by synchronization when it finds that an object on an MN has been updated. All other subjects should receive a NotAuthorized error. Otherwise, an object on the CN may be obsoleted but remain available for update on an MN.
History
#1 Updated by Ben Leinfelder almost 13 years ago
I don't think the proxy is actually letting this through to Metacat. When I use the d1_libclient_java class CNode.setObsoletedBy() I see this in the cn-dev logs:
[ WARN] 2012-03-01 22:59:29,831 (DispatcherServlet:noHandlerFound:947) No mapping found for HTTP request with URI [/cn/v1/obsoletedBy/MNReplicationIT.2012188039573] in DispatcherServlet with name 'metacatCNCore'
#2 Updated by Ben Leinfelder almost 13 years ago
- Assignee changed from Ben Leinfelder to Robert Waltz
After some investigation, it appears that the parameters are not getting to the proxy wrapper (and therefore not getting to Metacat which is even further downstream).
#3 Updated by Ben Leinfelder almost 13 years ago
- Category changed from Metacat to d1_cn_service
#4 Updated by Robert Waltz almost 13 years ago
- Status changed from New to Closed
PUT method of setObsoletedBy needed the DataoneMultipartResolver class and MultipartHttpServletRequest to handle form parameters.