DataONE Tasks: Issueshttps://redmine.dataone.org/https://redmine.dataone.org/favicon.ico2019-06-19T01:44:19ZDataONE Tasks
Redmine Infrastructure - Bug #8822 (New): Account queries in STAGE-2 failing from web browserhttps://redmine.dataone.org/issues/88222019-06-19T01:44:19ZBryce Mecummecum@nceas.ucsb.edu
<p>Steps to reproduce:</p>
<ol>
<li>Visit <a href="https://search-stage-2.test.dataone.org/">https://search-stage-2.test.dataone.org/</a></li>
<li>Log in</li>
<li>Navigate to <a href="https://search-stage-2.test.dataone.org/data">https://search-stage-2.test.dataone.org/data</a></li>
<li>Observe an HTTP 500 in the Network pane of whichever browser you're using to <a href="https://search-stage-2.test.dataone.org/cn/v2/accounts/?query=%7BYOUR_DN%7D">https://search-stage-2.test.dataone.org/cn/v2/accounts/?query={YOUR_DN}</a></li>
</ol>
<p>Response body:</p>
<pre><?xml version="1.0" encoding="UTF-8"?>
<error detailCode="500" errorCode="500" name="ServiceFailure">
<description>Internal Server Error: The server encountered an unexpected condition which prevented it from fulfilling the request.</description>
</error>
</pre>
<p>Some notes:</p>
<ul>
<li>I notice this in multiple browsers</li>
<li>I notice this only when the request is issued from MetacatUI, not when I visit the URL in my browser or hit it with curl</li>
<li>I don't notice this error on search.dataone.org</li>
<li>MetacatUI on search.dataone.org doesn't even issue this request</li>
<li>MetacatUI on stage-2 is at v2.4.2 and on search is at 2.6.1</li>
</ul>
<p>It seems like a bug to me that we see a service failure but I'm not sure if this is a MetacatUI bug or an issue in the CN stack (i.e., Apache config or something) but I wanted to file it for someone to take a look.</p>
Infrastructure - Decision #8693 (In Progress): Support Google Dataset Search on search.dataone.or...https://redmine.dataone.org/issues/86932018-09-07T00:16:59ZBryce Mecummecum@nceas.ucsb.edu
<a name="Background"></a>
<h2 >Background<a href="#Background" class="wiki-anchor">¶</a></h2>
<p>Yesterday, <a href="https://toolbox.google.com/datasetsearch" class="external">Google Dataset Search</a> launched. We previoiusly attempted to make MetacatUI (and by extension, DataONE Search) compatible with it by <a href="https://github.com/NCEAS/metacatui/issues/482" class="external">injecting Schema.org JSON-LD into appropriate pages</a>. During development and testing, we checked our compatibility with the upcoming Google Dataset Search using Google's <a href="https://search.google.com/structured-data/testing-tool" class="external">Structured Data Testing Tool</a>. During development, this was all working fine and the feature appeared to be compatible but, after launching the feature on search.dataone.org, behavior changed on Google's end making it so Google no longer saw this JSON-LD. The reason for this is likely that, because MetacatUI follows a single page application architecture and we inject the JSON-LD on the client side, Google's JSON-LD crawler only saw what was sent from the server (a nearly empty index.html) and not our full page (with JSON-LD). I was able to test this theory and, while Google's crawler does execute JavaScript, it limits execution to about or exactly five seconds and MetacatUI <em>usually</em> doesn't finish injecting JSON-LD and rendering all content until after that timeout.</p>
<p>Potential paths forward to get DataONE Search compatible with Google's Dataset Search include (none of which are mutually exclusive):</p>
<ol>
<li>The assets that make up MetacatUI and the asset loading strategies could be optimized: <a href="https://github.com/NCEAS/metacatui/issues/224">https://github.com/NCEAS/metacatui/issues/224</a></li>
<li>Move the code (and any dependencies) that injects JSON-LD further up in the app boot so that Google sees it</li>
<li>Inject the appropriate JSON-LD on the server side to guarantee that Google sees it (originally Matt Jones' idea!)</li>
</ol>
<p>(1) is being worked on for sure, and (2) may not be needed if (1) is successful. I want to talk about option (3) because:</p>
<ul>
<li>It's a quicker solution (I already have something working) which would help get us involved in the project faster</li>
<li>It paves the way for future features and/or improvements to MetacatUI (we could be rendering more on the server side than just JSON-LD, like other metadata, more page content, etc)</li>
</ul>
<a name="What-I-did"></a>
<h2 >What I did<a href="#What-I-did" class="wiki-anchor">¶</a></h2>
<p>To test this idea, I modified a <a href="https://github.com/amoeba/backbone-pushstate-example" class="external">previous project</a> which is just a simple Node (Express.js) app that hosts MetacatUI by intercepting every request and serving the appropriate asset. In injects Schema.org JSON-LD, when appropriate, by querying the CN Solr index before sending MetacatUI's index.html to the client. <a href="https://github.com/amoeba/metacatui-ssr" class="external">Code is here</a> and its deployed <a href="http://neutral-cat.nceas.ucsb.edu/" class="external">here</a>. View source on any /view/... pages and you'll see a minimal Schema.org/Dataset description in the head. More properties can be added later. I did it quick and dirty: The app pre-loads MetacatUI's index.html as a <code>String</code> at app boot and injects the JSON-LD into it. No templating language or other magic.</p>
<a name="Things-to-address"></a>
<h2 >Things to address<a href="#Things-to-address" class="wiki-anchor">¶</a></h2>
<ul>
<li>How do we feel abouts switching from hosting MetacatUI via Apache (simple, bullet proof) to a Node based deployment just to support this feature (new territory, at least for me)?</li>
<li>If we do switch, we'd want to make really sure the Node app doesn't have weird failure cases where it doesn't return index.html (e.g., when Solr is down, or slow). The app needs to return index.html (and every other static asset) on every request and do it very fast and we should decide what the cutoff is so that it doesn't hold up app boot if Solr is slow/down.</li>
<li>Can this type of deployment easily be integrated with CN buildouts? I've deployed Node apps before by fronting them with Apache/nginx (via reverse proxy) and then keeping the node process up with Upstart</li>
<li>Is this performant enough for DataONE? I think my implementation is non-blocking but I'm not a Node expert so we'd want to code review and probably benchmark </li>
<li>We could wait on (1) and stick with our current deployment strategy</li>
</ul>
<a name="Other-notes"></a>
<h2 >Other notes<a href="#Other-notes" class="wiki-anchor">¶</a></h2>
<p>Unrelated to the Google Dataset Search issue but related to Google's crawling for Google Search, we've also identified:</p>
<ul>
<li>That the Metacat View Service is often unreasonably slow: <a href="https://github.com/NCEAS/metacat/issues/1234">https://github.com/NCEAS/metacat/issues/1234</a> and are planning to figure out why</li>
<li>That we can and should make use of sitemaps to help Google crawl our pages: <a href="https://github.com/NCEAS/metacat/issues/1263">https://github.com/NCEAS/metacat/issues/1263</a></li>
</ul>
Infrastructure - Story #7807 (New): cn.synchronize should support synchronization failure correct...https://redmine.dataone.org/issues/78072016-05-13T16:56:25ZRob Nahfrnahf@epscor.unm.edu
<p>cn.synchronize(session, identifier) works well for its original purpose (supporting MN-driven system metadata updates, and MN-driven push synchronization), but doesn't seem to work for manual synchronization failure workflows. The main problem is that the request can only be made by the MN itself (using the MN client certificate). </p>
<p>As we envision a centralized dashboard for monitoring failed synchronization items, how do we address this situation? </p>
<p>The synchronization processing queue needs both the pid and a nodeId from where to retrieve the object. the NodeId is not specified directly in the method call, but gleaned from the session by a reverse lookup from the certificate. (It uses the first node found in the NodeList where the Node.subject field matches the certificate subject).</p>
<p>Should we allow node.contactSubjects into the algorithm?<br>
Should we add nodeId as a parameter?</p>
Member Nodes - MNDeployment #7758 (New): Polar Rock Repository (PRR) at Ohio Statehttps://redmine.dataone.org/issues/77582016-05-02T23:50:40ZLaura Moyerslmoyers1@utk.edu
<p>The Polar Rock Repository (PRR) at the Ohio State University holds over 40,000 physical specimens which are available to be "checked out" by users. Laura/Mark met with Anne Grunow and Wes Haines 4/28/16 to discuss DataONE, the PRR, and how we might work together. See <a href="https://epad.dataone.org/pad/p/PRR_and_DataONE">https://epad.dataone.org/pad/p/PRR_and_DataONE</a></p>
Infrastructure - Bug #7698 (New): Exclude SLF4J jars in d1_solr_extensions.jarhttps://redmine.dataone.org/issues/76982016-03-28T16:22:54ZRobert Waltz
<p>Dave reported:<br>
when running “service solr status” on a CN, I see a complaint about multiple SLF4J bindings:<br>
(12:05:53 PM) vieglais: SLF4J: Class path contains multiple SLF4J bindings.<br>
(12:05:53 PM) vieglais: SLF4J: Found binding in <a href="12:05:55 PM" class="external">jar:file:/var/solr/server/solr-webapp/webapp/WEB-INF/lib/d1_solr_extensions.jar!/org/slf4j/impl/StaticLoggerBinder.class</a> vieglais: SLF4J: Found binding in <a href="12:05:56 PM" class="external">jar:file:/var/solr/server/lib/ext/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class</a> vieglais: SLF4J: See <a href="http://www.slf4j.org/codes.html#multiple_bindings">http://www.slf4j.org/codes.html#multiple_bindings</a> for an explanation.<br>
(12:05:56 PM) vieglais: SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]</p>
<p>looks like a class conflict due to the shaded d1_solr_extensions.jar that includes SLF4J and solr jetty that also includes SLF4J.</p>
<p>try excluding SLF4J jars in d1_solr_extensions.jar.</p>
DataONE API - Bug #7684 (New): Call to MNStorage.update() via REST API returns java.lang.StackOve...https://redmine.dataone.org/issues/76842016-03-21T23:07:39ZBryce Mecummecum@nceas.ucsb.edu
<p>I was trying to update an object via the REST API via cURL and forgot to enter the correct URL. The cURL command I used and response is:</p>
<p>$ curl -X PUT -H "Authorization: Bearer $TOKEN" -F "pid=resourceMap_doi:10.5065/D6G44NFV" -F "object=@object.xml" -F "sysmeta=@sysmeta.xml" -F "newPid=resourceMap_doi:10.5065/D6G44NFV_v3" $URL<br>
<?xml version="1.0" encoding="UTF-8"?><br>
java.lang.StackOverflowError<br>
</p>
<p>Where $URL was '<a href="https://arcticdata.io/metacat/d1/mn/v2/object">https://arcticdata.io/metacat/d1/mn/v2/object</a>' instead of '<a href="https://arcticdata.io/metacat/d1/mn/v2/object/resourceMap_doi:10.5065/D6G44NFV">https://arcticdata.io/metacat/d1/mn/v2/object/resourceMap_doi:10.5065/D6G44NFV</a>'</p>
<p>I expected to receive some sort of warning/error that I had forgotten to specify the URL properly for this call but instead saw a StackOverflowError.</p>
Python GMN - Task #7162 (New): Member node does not check with coordinating node before replicatinghttps://redmine.dataone.org/issues/71622015-06-05T23:49:44ZMark Flynnflynnm@dataone.unm.edu
<p>Replication is supposed to follow a sequence:<br>
CN — MN.replicate( ) —> newReplicaMN<br>
newReplicatMN —- MN.getReplica( ) —> sourceMN<br>
sourceMN — CN.isNodeAuthorized() —> CN<br>
newReplicaMN — CN.setReplicationStatus( ) —> CN</p>
<p>However, CN.isNodeAuthorized is not called before sourceMN replicates to newReplicaMN</p>
Member Nodes - MNDeployment #7145 (New): PlutoFhttps://redmine.dataone.org/issues/71452015-06-03T12:52:55ZLaura Moyerslmoyers1@utk.edu
<p>PlutoF is hosted at the University of Tartu in Estonia and "provides cloud database and computing services for the taxonomical, ecological, phylogenetical, etc. research. The purpose of the platform is to provide synergy through common modules for the classifications, taxon names, analytical tools, etc. It allows to address integrated questions in ecology and coevolution of taxa. Different types of the species occurrences, viz. preserved specimens, DNA sequences, human observations, references can be stored in PlutoF as well. PlutoF has no restrictions on taxon and geographic coverage and therefore can be used for the databasing interacting taxa. It includes also collection management module. Few examples of the public web outputs from PlutoF are Estonian eBiodiversity (<a href="http://elurikkus.ut.ee">http://elurikkus.ut.ee</a>), and molecular key for fungi (<a href="https://unite.ut.ee)">https://unite.ut.ee)</a>."</p>
<p>Anticipate GMN for this implementation. They currently hold ~500,000 biodiversity records.</p>
<p>For more information about PlutoF, see references in these articles: <a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3023303/">http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3023303/</a>, </p>
<p><a href="http://www.la-press.com/plutofa-web-based-workbench-for-ecological-and-taxonomic-research-with-article-a2406">http://www.la-press.com/plutofa-web-based-workbench-for-ecological-and-taxonomic-research-with-article-a2406</a></p>
Member Nodes - MNDeployment #3691 (New): National Institute for Amazon Researchhttps://redmine.dataone.org/issues/36912013-03-22T17:04:37ZLaura Moyerslmoyers1@utk.edu
<p>From DataONE website "contact us" – How to contribute, I have something to offer</p>
<p>Website: <a href="http://www.inpa.gov.br/">http://www.inpa.gov.br/</a> (in Portuguese)<br>
Entity: National Institute for Amazon Research<br>
POC: <a href="mailto:lcampos@inpa.gov.br">lcampos@inpa.gov.br</a><br>
Date of inquiry: 6/26/12<br>
Responder: Matt Jones<br>
Date of response: 7/19/12<br>
Response: Let's meet and discuss</p>
Member Nodes - MNDeployment #3683 (New): Purdue University Librarieshttps://redmine.dataone.org/issues/36832013-03-22T16:56:43ZLaura Moyerslmoyers1@utk.edu
<p>From DataONE website "contact us" – Want to be DUG member 2nd request</p>
<p>Website: <a href="http://www.lib.purdue.edu/">http://www.lib.purdue.edu/</a><br>
Entity: Purdue University Libraries<br>
POC: <a href="mailto:jcarlso9@gmail.com">jcarlso9@gmail.com</a><br>
Date of inquiry: 12/19/12<br>
Responder: Amber Budden<br>
Date of response: 1/2/13<br>
Response: Added to list. Please send welcome letter.</p>
Member Nodes - MNDeployment #3241 (New): ALA - Atlas of Living Australia member nodehttps://redmine.dataone.org/issues/32412012-09-07T01:46:59ZDave Vieglaisdave.vieglais@gmail.com
<p>The Atlas of Living Australia has been identified as a potential member node. This issue track progress towards that goal.</p>
<p>ALA - <a href="http://www.ala.org.au/">http://www.ala.org.au/</a></p>
Member Nodes - MNDeployment #3240 (New): AZGS - Arizona Geological Survey member nodehttps://redmine.dataone.org/issues/32402012-09-07T01:45:24ZDave Vieglaisdave.vieglais@gmail.com
<p>The Arizona Geological Survey (AZGS) has been identified as a potential member node. This issue track progress towards that goal.</p>
<p>Lee Allison has been identified as an initial contact.</p>
<p><a href="http://www.azgs.az.gov/">http://www.azgs.az.gov/</a></p>
Member Nodes - MNDeployment #3235 (New): LITS - Long-Term Individual base Time Series project me...https://redmine.dataone.org/issues/32352012-09-07T01:19:49ZDave Vieglaisdave.vieglais@gmail.com
<p>LITS - the UK Long-term Individual based Time Series project has been identified as a potential member node. This issue track progress towards that goal.</p>
<p><a href="http://lits.bio.ic.ac.uk:8080/litsproject/">http://lits.bio.ic.ac.uk:8080/litsproject/</a></p>
Infrastructure - Task #991 (New): implement HEAD /resolve/<guid>https://redmine.dataone.org/issues/9912010-10-11T17:41:17ZRob Nahfrnahf@epscor.unm.edu
<p>The resolution service supports the HEAD method:<br>
HEAD Returns basic information resolve response document<br>
Last-Modified: Date the resolve information was last updated for that identifier. This is helpful to clients that may cache resolve responses.</p>
Requirements - Requirement #387 (New): (Requirement) Implement a Member Node based on Metacathttps://redmine.dataone.org/issues/3872010-03-17T13:48:37ZDave Vieglaisdave.vieglais@gmail.com
<p>Metacat was one of the four targets identified for participation as a member node for the year one milestone (<a class="issue tracker-8 status-1 priority-5 priority-high3" title="Requirement: (Requirement) Sponsor required Y1 functionality (New)" href="https://redmine.dataone.org/issues/318">#318</a>, <a class="issue tracker-8 status-1 priority-3 priority-lowest" title="Requirement: (Requirement) Deploy at least three Member Nodes (New)" href="https://redmine.dataone.org/issues/386">#386</a>). This decision was made at the source:/documents/Committees/CCIT/20091117_CCIT_Knoxville meeting.</p>
<p>Rationale</p>
<p>Metacat provides a good API for interaction with the <a class="wiki-page new" href="https://redmine.dataone.org/projects/d1req/wiki/DataONE">DataONE</a> cyberinfrastructure and significant holdings relevant to <a class="wiki-page new" href="https://redmine.dataone.org/projects/d1req/wiki/DataONE">DataONE</a> are available through the various Metacat instances around the world.</p>
<p>Fit Criteria</p>
<ul>
<li>The <a class="wiki-page new" href="https://redmine.dataone.org/projects/d1req/wiki/DataONE">DataONE</a> MN APIs are implemented on Metacat</li>
<li>Metacat is able to operate as a Member Node in the <a class="wiki-page new" href="https://redmine.dataone.org/projects/d1req/wiki/DataONE">DataONE</a> cyberinfrastructure</li>
</ul>