Blog

January 2015 DOI Outage: Followup Report

Background

On January 20th, 2015 the main DOI HTTP proxy at doi.org experienced a partial, rolling global outage. The system was never completely down, but for at least part of the subsequent 48 hours, up to 50% of DOI resolution traffic was effectively broken. This was true for almost all DOI registration agencies, including Crossref, DataCite and mEDRA.

At the time we kept people updated on what we knew via Twitter, mailing lists and our technical blog at CrossTech. We also promised that, once we’d done a thorough investigation, we’d report back. Well, we haven’t finished investigating all implications of the outage. There are both substantial technical and governance issues to investigate. But last week we provided a preliminary report to the Crossref board on the basic technical issues, and we thought we’d share that publicly now.

Problems with dx.doi.org on January 20th 2015- what we know.

Hell’s teeth.

So today (January 20th, 2015) the DOI HTTP resolver at dx.doi.org started to fail intermittently around the world. The doi.org domain is managed by CNRI on behalf of the International DOI Foundation. This means that the problem affected all DOI registration agencies including Crossref, DataCite, mEDRA etc. This also means that more popularly known end-user services like FigShare and Zenodo were affected. The problem has been fixed, but the fix will take some time to propagate throughout the DNS system. You can monitor the progress here:

https://www.whatsmydns.net/#A/doi.org

Now for the embarrassing stuff…

Yer Basic One-Liner

Tony Hammond

Tony Hammond – 2008 October 14

In Handle

Here’s your basic one-line handle client (all of it) for the browser: OpenHandle.Util().getHandleData("10.1038/nature05826", function(data) { alert(OpenHandle.Util().helloWorld(data)); }); Can’t see how to make that much shorter (bar tossing spaces). But here’s one attempt (shorter though now it’s not strictly a one-liner): var u = OpenHandle.Util(); u.getHandleData("10.1038/nature05826", function(_) { alert(u.helloWorld(_)); }); Here I’ve used two utility convenience methods from the OpenHandle client library: OpenHandle.Util().getHandleData(handle, callback, [server]) OpenHandle.Util().helloWorld(JSON) You will though need to include a couple of libraries: openhandle.

OpenHandle JavaScript API

Tony Hammond

Tony Hammond – 2008 October 08

In Handle

(Click figure for PDF.) I just posted updated versions of the OpenHandle JavaScript Client Library (v0.2.2) and Utilities (v0.2.2) to the project site. Mainly this post is just by way of saying that there’s now a “cheat sheet” for the API (see figure above, click for PDF) which will give some idea of scope. The JavaScript API attempts to reflect the Java Client Library API for Handle data structures, and has in excess of 100 methods.

Handle Clients #1, #2, #3

Tony Hammond

Tony Hammond – 2008 October 01

In Handle

Three alternate clients for viewing a Handle (or DOI): #1 (sky - text), #2 (black - tuples), #3 (white - cards) - the image above is clickable. When Handle clients become JavaScript-able, one really can have it one’s own way. (The JavaScript library is here, the demo service interface here - the code for setting up a new service interface can be got from the OpenHandle project.) Noted: As of February 2023, most of the links in this blog are not longer available.

The Last Mile

Tony Hammond

Tony Hammond – 2008 October 01

In Handle

The figure above (click to enlarge) is probably self-explanatory but a few words may be in order. With no end-to-end delivery of data from the Handle System to the user’s application (browser or reader), getting data out of the Handle System has traditionally meant using the Web (ie. HTTP) as a courier - in effect, this is the “last mile” for Handle data. Typically an upstream (Handle) client provides services to the user.

Look Ma, No Plugins!

Tony Hammond

Tony Hammond – 2008 September 22

In Handle

var f = function (OpenHandleJson) { var h = new OpenHandle(OpenHandleJson); var hv = h.getHandleValues(); for (var i = 0; i < hv.length; i++) { var v = new HandleValue(hv[i]); if (v.hasType(‘URL’)) { print(v.getData()); } else if (v.hasType(‘HS_ADMIN’)) { var a = new AdminRecord(v.getData()); print(a.getAdminPermissionString()) } } } "And that, gentlemen, is how we do that." - Apollo 13 Following on from my earlier Client Handle Demo post, this entry is just to mention the availability of a port of (part of) the Handle client library (in Java) to JavaScript: openhandle-0.

Client Handle Demo

Tony Hammond

Tony Hammond – 2008 July 01

In Handle

This test form shows handle value data being processed by JavaScript in the browser using an OpenHandle service. This is different from the handle proxy server which processes the handle data on the server - the data here is processed by the client. Enter a handle and the standard OpenHandle “Hello World” document is printed. Other processing could equally be applied to the handle values. (Note that the form may not work in web-based feed readers.

Dark Side of the DOI

Tony Hammond

Tony Hammond – 2008 May 29

In Handle

(Click to enlarge.) For infotainment only (and because it’s a pretty printing). Glimpse into the dark world of DOI. Here, the handle contents for doi:10.1038/nature06930 exposed as a standard OpenHandle ‘Hello World’ document. Browser image courtesy of Processing.js and Firefox 3 RC1.

OpenHandle: Languages Support

Tony Hammond

Tony Hammond – 2008 April 21

In Handle

Following up the earlier post on OpenHandle, there are now a number of language examples which have been contributed to the project. The diagram below shows the OpenHandle service in schematic with various languages support. Briefly, OpenHandle aims to provide a web services interface to the Handle System to simplify access to the data stored for a given Handle. (Note that the diagram is an HTML imagemap and all elements are “clickable”.