----
BUG (Chad): On the CN, the metacat mn.create method should be atomic and fail if either the system metadata or science metadata aren't stored. However, the method should also support writing system metadata only in the case where the identifier refers to a dataset (since data are not stored on the CNs).
Example:
objectList = http://cn-dev.dataone.org/knb/object
get("MD_ORNLDAAC_645_03032010095920") http://cn-dev.dataone.org/cn/object/MD_ORNLDAAC_645_03032010095920 = OK
get("BAYXXX_015ADCP015R00_2005121550"), http://cn-dev.dataone.org/cn/object/BAYXXX_015ADCP015R00_2005121550 = ERROR
because the EML could not be written:
nb 20100713-08:22:43: [WARN]: MetaCatServlet.handleInsertOrUpdateAction - General error when writing eml document to the database: Error processing keyrefs: //additionalMetadata/describes : Error in xml document. This EML instance is invalid because referenced id BAYXXX_015ADCP015R00_2005121540 does not exist in the given keys. [edu.ucsb.nceas.metacat.MetaCatServlet]
Note:
- Should add some invalid test data to ensure that failures are graceful
- Add some examples of data in the test cases (i.e. only sysmeta stored in metacat)
----
BUG: (Chad, Robert). Performing a search through the metacat web interface on cn-dev.dataone.org/knb generats an error:
javax.servlet.ServletException: Service problem while intializing MetaCat Servlet: ServiceService.registerService - Service:
PropertyService is already registered. Use ServiceService.reregister() to replace the service.
edu.ucsb.nceas.metacat.MetaCatServlet.init(MetaCatServlet.java:309)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:301)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:115)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
java.lang.Thread.run(Thread.java:619)
Chad indicates that this may be solved by replacing the apt installed Tomcat6 with a hand installed Tomcat from the Apache site. However the error message suggests that the error is being caused by re-initialization of metacat, perhaps by the cn-service, or perhaps somehow through the metacat service. This issues needs to be debugged and tracked down. If necessary then a new copy of Tomcat received from the distributors should be installed, though this is a less desirable course of action as it decreases maintainability of the CN-service.
I receive this error when i hit http://cn-rpw/knb/metacat . without the cn service layer running -rpw
----
BUG (Roger) The python MN needs to raise NotImplemented for methods that are not implemented but are part of the API.
----
BUG (Roger) The Python MN should stub out the login method with the same signature as Metacat so that tests will work on both Metacat and the Python MN services.
----
BUG: (Dave) Architecture docs are not building on Hudson
----
STORY: Service endpoints that do not exhibit any defined action should provide the caller with hints about the service URLs that are available on the node. This applies for both CNs and MNs and is useful for guiding outside users towards appropriate use of the system. The response should be an exception of type InvalidRequest. The description of the error message should include references to supported collectiosn on the system (even if authentication is required to access those collections). For example, the description in the error response of GET /cn could be:
No action is available for the specified URL. Available actions include:
object
List objects available on this node
object/ID
Retrieve the specified object
meta/ID
Retrieve system metadata for the specified object
checksum/ID
Retrieve the checksum for the specified object
log
Access the use logs
resolve/ID
Return a list of locations from which the specified object can be retieved
- TASK: (Robert)KK Add an "index.html" file for the /cn location that provides pointers to supported paths on the coordinating node.
- TASK: (Robert) When a request is made against a CN /cn/object, the response is currently undefined. Options are:
a) raise an exception (InvalidRequest) indicating that the query is invalid
b) behave like the MN /object collection and support paging across the entire collection
Option a) should be implemented with a reasonably high priority. Option b) is a target for completion for the year 1 milestone if time permits.
( - for a hit against /cn/object what do we wish to return? if not query string then forward to /metacat/cn/object )
- TASK: (Roger) Return an InvalidRequest error for the /mn location that provides pointers to supported paths on the python member node.
- TASK: (Chad) Return an InvalidRequest error for the /mn location that provides pointers to supported paths on the metacat member node.
----
BUG #706 continued (Chad) Need to work around this sooner than later. Very hard to get correct exceptions on get() because of this. ( https://trac.dataone.org/ticket/706 )
----
Packager output:
Packager output will be placed in folders following the pattern:
node id will not work, for expediency i am using the node's name
/datanet/-