Metacat: Issueshttps://projects.ecoinformatics.org/ecoinfo/https://projects.ecoinformatics.org/ecoinfo/ecoinfo/favicon.ico?14691340362013-06-14T00:37:23ZEcoinformatics Redmine
Redmine Bug #6003 (Closed): The "war" target in the metacat will build the metacat-index.war https://projects.ecoinformatics.org/ecoinfo/issues/60032013-06-14T00:37:23ZJing Taotao@nceas.ucsb.edu
<p>The "war" target in the metacat doesn't build the metacat-index.war in the dist directory. It only builds knb.war and geoserver.war.</p> Bug #5597 (Resolved): eml xsl templates incompletehttps://projects.ecoinformatics.org/ecoinfo/issues/55972012-05-06T01:32:07Zgastil gastilmarygastil@yahoo.com
<p>Some xslt templates for eml transform to html are incomplete in metacat 2.0.0 (on lava).</p>
<p>Attached are two screenshots showing how the link to a protocol document within methods disappears, as compared to Chris Jones and Margaret's stylesheets. The example docId is knb-lter-mcr.10.29</p>
<p>I looked at lava.lternet.edu so if there is a more recent version, just refer me to that and I'll re-test.</p>
<p>Also see knb-lter-mcr.5005.3 for an example where a ulink within an abstract does not transform to an a href link. Also in that example the abstract gets truncated. Also the methodStep paragraphs get truncated.</p>
<p>Also in knb-lter-mcr.5005.3 the enumerated domain display is empty. Note that both these docs look fine using the xslt at MCR, SBC, VCR or even the current LTER skin for metacat 1.9.5 at LNO. (Although that xslt does not handle the ulink.)</p> Bug #5572 (Resolved): Couldn't upload a kar file from kepler to metacathttps://projects.ecoinformatics.org/ecoinfo/issues/55722012-02-02T23:51:58ZJing Taotao@nceas.ucsb.edu
<p>I used "ant clean install" a metacat. Then I went through the web pages to configure the metacat with a fresh db.</p>
<p>When I tried upload a kar file from kepler.2.3, i got this error:<br />[ERROR]: MetacatHandler.handleUploadAction - Upload Error: Hazelcast Instance is not active! [edu.ucsb.nceas.metacat.MetacatHandler</p>
<p>Ben suggested to restart tomcat. So i restarted tomcat and uploaded another kar file. But got this error:<br />knb 20120202-15:42:37: [ERROR]: MetacatHandler.handleUploadAction - Upload Error: null [edu.ucsb.nceas.metacat.MetacatHandler]</p>
<p>Each time i chose to make the kar file public readable.</p> Bug #5569 (Resolved): The sanparks skin doesn't show welcome message when user login again (after...https://projects.ecoinformatics.org/ecoinfo/issues/55692011-12-21T21:41:01ZJing Taotao@nceas.ucsb.edu
<p>When user first time logins, the sanpark skin will show a welcome message, upload data link and search form.</p>
<p>However, if user logouts then logins again, the page only shows a search form, no welcome message and upload data link.</p> Bug #5568 (Resolved): Get an exception during startup metacathttps://projects.ecoinformatics.org/ecoinfo/issues/55682011-12-20T19:52:07ZJing Taotao@nceas.ucsb.edu
<p>I got an exception when i started metacat. However, it seems that metacat still can work.</p>
<p>SEVERE: /127.0.0.1:5701 [DataONE] null<br />java.lang.RuntimeException<br /> at edu.ucsb.nceas.metacat.dataone.hazelcast.SystemMetadataMap.load(SystemMetadataMap.java:70)<br /> at edu.ucsb.nceas.metacat.dataone.hazelcast.SystemMetadataMap.loadAll(SystemMetadataMap.java:79)<br /> at com.hazelcast.impl.concurrentmap.MapStoreWrapper.loadAll(MapStoreWrapper.java:148)<br /> at com.hazelcast.impl.FactoryImpl.loadKeys(FactoryImpl.java:586)<br /> at com.hazelcast.impl.FactoryImpl.checkInitialization(FactoryImpl.java:568)<br /> at com.hazelcast.impl.FactoryImpl.getOrCreateProxyByName(FactoryImpl.java:522)<br /> at com.hazelcast.impl.FactoryImpl.getMap(FactoryImpl.java:490)<br /> at com.hazelcast.impl.FactoryImpl$HazelcastInstanceProxy.getMap(FactoryImpl.java:224)<br /> at com.hazelcast.core.Hazelcast.getMap(Hazelcast.java:140)<br /> at edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService.init(HazelcastService.java:195)<br /> at edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService.<init>(HazelcastService.java:121)<br /> at edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService.getInstance(HazelcastService.java:141)<br /> at edu.ucsb.nceas.metacat.MetaCatServlet.initSecondHalf(MetaCatServlet.java:438)<br /> at edu.ucsb.nceas.metacat.MetaCatServlet.init(MetaCatServlet.java:310)<br /> at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)<br /> at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)<br /> at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4387)<br /> at org.apache.catalina.core.StandardContext.start(StandardContext.java:4700)<br /> at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)<br /> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)<br /> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)<br /> at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)<br /> at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)<br /> at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)<br /> at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)<br /> at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)<br /> at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)<br /> at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)<br /> at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)<br /> at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)<br /> at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)<br /> at org.apache.catalina.core.StandardService.start(StandardService.java:525)<br /> at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)<br /> at org.apache.catalina.startup.Catalina.start(Catalina.java:585)<br /> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br /> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br /> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br /> at java.lang.reflect.Method.invoke(Method.java:597)<br /> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)<br /> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)<br />Caused by: java.lang.NullPointerException<br /> at java.math.BigInteger.<init>(BigInteger.java:270)<br /> at java.math.BigInteger.<init>(BigInteger.java:447)<br /> at edu.ucsb.nceas.metacat.IdentifierManager.getSystemMetadata(IdentifierManager.java:276)<br /> at edu.ucsb.nceas.metacat.dataone.hazelcast.SystemMetadataMap.load(SystemMetadataMap.java:63)<br /> ... 39 more</p> Bug #5567 (Resolved): Click the schedule button on sankparks skin got an blank pagehttps://projects.ecoinformatics.org/ecoinfo/issues/55672011-12-15T18:31:35ZJing Taotao@nceas.ucsb.edu
<p>Click TPC worklfow link on the sanparks skin, user will get a list of workflows. Every workflow has three associated actions. One of them is Schedule. But click the button, it just shows a blank page. It worked, but i don't know why it doesn't work any more.</p> Bug #5561 (Resolved): Got a SQL error when click TPC workflows or TPC link on sanparks skinhttps://projects.ecoinformatics.org/ecoinfo/issues/55612011-12-02T18:31:43ZJing Taotao@nceas.ucsb.edu
<p>Clicked TPC status, I saw:</p>
<p>knb 20111202-10:30:51: [ERROR]: DBQuery.createResultDocument - SQL Error: The column index is out of range: 17, number of columns: 16. [edu.ucsb.nceas.metacat.DBQuery] on tomcat log.</p>
<p>Clicked TPC Workflows, I saw:<br />knb 20111202-10:31:36: [ERROR]: DBQuery.createResultDocument - SQL Error: The column index is out of range: 23, number of columns: 22. [edu.ucsb.nceas.metacat.DBQuery]</p> Bug #5560 (Resolved): Upgrade access control rules in Metacat DBhttps://projects.ecoinformatics.org/ecoinfo/issues/55602011-12-02T17:02:59Zben leinfelderleinfelder@nceas.ucsb.edu
<p>Metacat handles a single access control policy for ALL revisions of an object whereas DataONE allows different access control rules for each revision (revisions are not a closely tied to one another in the DataONE model as they are in the Metacat docid.rev approach).<br />After a lengthy discussion, Matt and I decided the upgrade procedure for Metacat 1.x to 2.x should duplicate access control rules for a document into every revision so that Metacat would have distinct access control policies for every revision -- matching DataONE's model for access control.<br />This is the general upgrade approach:<br />1. create GUID mappings in the 'identifier' table for every scope.docid.rev<br />2. alter xml_access table to include the GUID column.<br />3. insert xml_access rows for each GUID in the identifier table, copying the xml_access row that exists for that docid (no revision).<br />4. clean-up xml_access by removing the rows that have no GUID value (the rows we copied from).<br />5. alter the xml_access table to remove unused columns: accessfileid, ticket and node-based columns.</p>
<p>This means that Metacat 2.0 should only insert and read xml_access records using the GUID. If we are interacting with Metacat using the legacy API, we will first need to look up the GUID from the identifier table. This will ultimately simplify the acces DAO classes.</p>
<p>One question I have is whether the Metacat API should continue to (a) function as it has been where a call to "setaccess" will update access control rules for <em>every</em> revision of a document. Another possible policy would be (b) to only update the the given revision if the revision was provided in the docid parameter. If it was simply scope.docid we could update every revision since we wouldn't know which one to specifically update. Or (c) we could update only the latest revision if no docid were provided. Option (a) would effectively look as though Metacat access control handling had not changed from v1.x to v2.x.</p> Bug #5536 (Resolved): Restore replicated data files that are 0 byteshttps://projects.ecoinformatics.org/ecoinfo/issues/55362011-11-09T20:23:49Zben leinfelderleinfelder@nceas.ucsb.edu
<p>Due to a replication bug, some data files were not replicated fully. These should be tracked down and restored.</p> Bug #5532 (Resolved): Use strict build tag strategy for 2.0.0 releasehttps://projects.ecoinformatics.org/ecoinfo/issues/55322011-11-04T22:18:54Zben leinfelderleinfelder@nceas.ucsb.edu
<p>Currently Metacat relies on a number of external projects and repositories. We should take this opportunity to finalize many of those projects as true "releases" and do away with the "release candidate" tags that Metacat is using to build.</p>
<p>External SVN project dependencies include:<br />-eml schema 2.1.1 (tags/RELEASE_EML_2_1_1_RC_2)<br />-eml style sheets (tags/RELEASE_EML_UTILS_1_0_0_RC13)<br />-utilities (tags/UTILITIES_1_1_0_RC2)<br />-seek (tags/ECOGRID_1_2_2_RC4)</p>
<p>Not to forget the d1 jars:<br />-DataONE v1.0.0 jars (2 API jars + supporting libraries)</p> Bug #5523 (Resolved): setting authoritative MN and rightsHolder for KNB data on conversionhttps://projects.ecoinformatics.org/ecoinfo/issues/55232011-10-28T21:16:08ZMatt Jonesjones@nceas.ucsb.edu
<p>When EML and data in the NCEAS and LTER metacat is converted to use in the new KNB MN, we need to generate system metadata for each object.</p>
<p>For rightsHolder, I propose we use the current xml_documents.user_owner field.</p>
<p>For authoritativeNode, we should set that to the ID of either the KNB MN or the LTER Member Node (of course, we'll have to know what these node IDs are) as appropriate. This can probably be determine from the home server entry in our replication tables.</p> Bug #5520 (Resolved): Create replication integration test suitehttps://projects.ecoinformatics.org/ecoinfo/issues/55202011-10-27T01:59:15Zben leinfelderleinfelder@nceas.ucsb.edu
<p>Replication integration tests should include:<br /><del>force replication between two servers -</del> A, B (write, update, delete)<br /><del>timed replication between two servers -</del> A, B<br /><del>hub/non-hub replication -</del> A, B, C (three servers)<br /><del>invalid documents (not sure how they would get in the Metacat system to begin with) -</del> A, B<br /><del>access control transferred from source to target during initial replication -</del> A, B<br /><del>access control updates propagated from source to target -</del> A, B<br /><del>replication failure for insecure target -</del> A, D (fourth server that does not have certificate?)<br />-all of the above for both data and metadata</p>
<p>Additional test ideas are welcome.</p> Bug #5517 (Resolved): mark EcoGrid and Servlet APIs as deprecatedhttps://projects.ecoinformatics.org/ecoinfo/issues/55172011-10-26T20:20:58ZMatt Jonesjones@nceas.ucsb.edu
<p>EcoGrid and Servlet APIs in metacat are being replaced (gradally) by the DataONE services. Mark these older APIs as deprecated, and describe their status in the admin guide. We should support them for about 2 years max before fully dropping them.</p> Bug #5011 (Resolved): Add support for DataONE service APIhttps://projects.ecoinformatics.org/ecoinfo/issues/50112010-05-14T17:25:51ZMatt Jonesjones@nceas.ucsb.edu
<p>Metacat will be used within DataONE as both a Member Node and as a component of the Coordinating Node infrastructure. We need to add support for the proper REST APIs for DataONE, which are described here:</p>
<p><a class="external" href="http://mule1.dataone.org/ArchitectureDocs/index.html">http://mule1.dataone.org/ArchitectureDocs/index.html</a></p>
<p>Initial support should include the following methods:<br />MN.get()<br />MN.getSystemMetadata()<br />MN.listObjects()</p>
<p>CN.create()<br />CN.update()<br />CN.get()<br />CN.getSystemMetadata()<br />CN.resolve()</p>
<p>These tasks are a DataONE project, and so details are being tracked in the DataONE ticket system (<a class="external" href="http://trac.dataone.org">http://trac.dataone.org</a>). This is a tracking bug for the feature overall.</p> Bug #2084 (Resolved): Pathquery support for temporal search on date fieldshttps://projects.ecoinformatics.org/ecoinfo/issues/20842005-05-20T23:02:34ZDuane Costadcosta@lternet.edu
<p>Metacat pathquery relational search modes ("greater-than", "less-than", etc.) do<br />not currently support temporal searches on date fields. The reasons for this are<br />described in the email correspondence to metacat-dev below. This enhancement<br />would make it possible to do temporal searches using date ranges, which would be<br />a important feature in an "Advanced Search" form (such as the one currently<br />under development at LTER), and could also be added to the search dialog in Morpho.</p>
<p>---<br />On 5/17/2005, Duane Costa wrote:</p>
<p>Metacat supports the following pathquery search modes: contains, starts-with,<br />ends-with, equals, isnot-equal, greater-than, less-than, greater-than-equals,<br />less-than-equals.</p>
<p>For the search modes that are equivalent to relational operators (equals,<br />isnot-equal, greater-than, less-than, greater-than-equals, less-than-equals), is<br />it possible to use these search modes in EML fields that contain non-numeric<br />string values? In particular, is it possible to use the relational search modes<br />for date strings?</p>
<p>For example, here is a pathquery that attempts to find all documents with<br />temporal coverage between January 1, 1900 and January 1, 2005. It reads like<br />this: “Return all documents that have a beginDate or a singleDateTime greater<br />than or equal to 1900-01-01, and an endDate or a singleDateTime less than or<br />equal to 2005-01-01.”</p>
<p><query><br /><pathquery version="1.2"><br /> <querytitle>LTER Query</querytitle><br /> <returnfield>dataset/title</returnfield><br /> <returnfield>originator/individualName/surName</returnfield><br /> <returnfield>creator/individualName/surName</returnfield><br /> <returnfield>originator/organizationName</returnfield><br /> <returnfield>creator/organizationName</returnfield><br /> <returnfield>keyword</returnfield><br /> <querygroup operator="INTERSECT"><br /> <querygroup operator="INTERSECT"><br /> <querygroup operator="INTERSECT"><br /> <querygroup operator="UNION"><br /> <queryterm searchmode="greater-than-equals" casesensitive="false"><br /> <value>1900-01-01</value><br /> <pathexpr>temporalCoverage/rangeOfDates/beginDate/calendarDate</path<br />expr><br /> </queryterm><br /> <queryterm searchmode="greater-than-equals" casesensitive="false"><br /> <value>1900-01-01</value><br /> <pathexpr>temporalCoverage/singleDateTime/calendarDate</pathexpr><br /> </queryterm><br /> </querygroup><br /> <querygroup operator="UNION"><br /> <queryterm searchmode="less-than-equals" casesensitive="false"><br /> <value>2005-01-01</value><br /> <pathexpr>temporalCoverage/rangeOfDates/endDate/calendarDate</pathex<br />pr><br /> </queryterm><br /> <queryterm searchmode="less-than-equals" casesensitive="false"><br /> <value>2005-01-01</value><br /> <pathexpr>temporalCoverage/singleDateTime/calendarDate</pathexpr><br /> </queryterm><br /> </querygroup><br /> </querygroup><br /> </querygroup><br /> </querygroup><br /></pathquery><br /></query></p>
<p>When I run this against a test Metacat with an Oracle database, this pathquery<br />fails and the resultset contains zero documents. The Tomcat output shows that<br />the pathquery triggers a SQL error in Oracle:</p>
<pre><code>MetaCat: SQL Error in DBQuery.findDocuments: ORA-01722: invalid number</code></pre>
<p>So my question is this: can this problem with temporal search be fixed in the<br />same way that Sid fixed a similar bug for spatial search (Bug 1703, 1718), or is<br />this a different situation because of the fact that the temporal fields contain<br />non-numeric strings while the spatial fields contain numeric values? That is, is<br />it illegal to use the relational pathquery modes for EML fields that contain<br />non-numeric strings? If that is the case, it seems that there would be no<br />practical way to use pathquery for a temporal search involving date ranges: is<br />that correct?</p>
<hr />
<p>On 5/18/2005, Chris Jones wrote:</p>
<p>Duane,</p>
<p>I've thought about this myself, and it seems that an internal metacat solution<br />needs to happen where date/time strings are converted or linked to a universal<br />date representation in order to do comparisons. This might be tough. Each<br />vendor's database seems to store dates internally in very different ways. It<br />would be difficult to create another column in the xml_nodes table that is of<br />type 'date' (depending on the vendor), because an EML (or other XML) date string<br />isn't necessarily recognizable as a date, whereas an integer or float is much<br />more discernible (in the case of the nodedatanumerical column) in xml_nodes.</p>
<p>However, with strong typing used in XMLSchema, metacat could in theory glean<br />'date' strings as type 'date' by referring to the element definition in the<br />XMLSchema document to which the instance document adheres. In that case, a<br />nodedatadate column in xml_nodes might work out where, upon insert or update,<br />the leaf node values get put into that column as a converted date. Of course,<br />this leads to: which date formats will be supported for conversion?</p>
<p>Anyone have a better solution?</p>
<p>Chris</p>
<hr />
<p>On 5/20/2005, Matt Jones wrote:</p>
<p>Chris and Duane,</p>
<p>I think Chris' analysis of the issues with adding support for datetime<br />comparisons is just about right on. It would be a nice feature to have, but<br />implementation would need to accomodate multiple database systems.<br />I've even been contemplating adding support for Sleepycat XMLdb or other XML<br />databases instead of relational backends, and this would further complicate the<br />implementation issues for datetime values. But it would be worthwhile. Lets<br />get it into bugzilla as a feature request and we'll see where it falls out in<br />the priority order.</p>
<p>Matt</p>