Skip to content

Skip pathwayDownloadTest when Reactome answers 200 with an error body - #2081

Merged
jcschaff merged 1 commit into
masterfrom
fix/reactome-outage-skip
Sep 14, 2026
Merged

jcschaff merged 1 commit into
masterfrom
fix/reactome-outage-skip

Conversation

@jcschaff

Copy link
Copy Markdown
Member

What is failing

PathwaySearchTest.pathwayDownloadTest fails on every branch right now, including
#2080's run, which does not touch pathway code:

PathwaySearchTest.pathwayDownloadTest:83->pathwayDownload:181
  Response does not start with XML declaration ==> expected: <true> but was: <false>

Why

Reactome's legacy BioPAX exporter is broken on their side — every pathway id, Level2 and Level3:

$ curl -i https://reactome.org/ReactomeRESTfulAPI/RESTfulWS/biopaxExporter/Level2/5683177
HTTP/2 200
content-type: text/plain;charset=UTF-8

Error in biopax exporter: No operations allowed after connection closed.

That is a dead database connection in their backend, reported as 200 instead of 5xx, so the
outage-skip contract from 2c7def7 / b44f4c0 cannot see it: statusOrSkip passes the status
through and the content assertion on the next line fails the build. Master was last green on
2026-09-08, so this broke sometime after that.

The test carries the Fast tag, so it is in the required CI-Test-group-Fast check — while
Reactome stays in this state, no PR in the repo can merge without an admin override.

The change

The body decides what the status line cannot: at this endpoint a response that is not XML is
their failure, because a request of ours that was wrong comes back 404 and still fails.
Nothing else is relaxed — the parse, xml:base, namespace, owl:imports and bp:pathway
assertions are untouched.

Verification

Against a local server through the real helpers, using the checked-in
insulinPathway-5683177.xml fixture as the good response:

response result
200 + BioPAX XML passes all assertions
200 + the plain-text error skipped
404 fails (Unexpected HTTP status)
200 + well-formed but wrong XML fails (Missing xml:base)

Against the live services the class now reports 3 run, 2 skipped, 0 failures — PathwayCommons
/pc2/search is also timing out today, which the existing guard already handled.

Separately worth knowing

The same broken endpoint backs the desktop client's Reactome import
(vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/BioModelEditorPathwayCommonsPanel.java:386),
so that feature is currently broken for users. Reactome's newer ContentService has no drop-in
BioPAX replacement (/ContentService/exporter/event/{id}.biopax2 → 404), so this needs its own
decision; this PR only stops a third party's outage from failing our build.

🤖 Generated with Claude Code

https://claude.ai/code/session_01D71LBYmQNf5J94wPqr81Jx

Reactome's legacy BioPAX exporter has been failing on its side since
somewhere after 2026-09-08 (the last green master run): every pathway id,
Level2 and Level3 alike, returns

  HTTP 200, Content-Type text/plain
  Error in biopax exporter: No operations allowed after connection closed.

which is a dead database connection in their backend, not a VCell change.
Because it comes back as 200 rather than 5xx, the outage-skip contract
added in 2c7def7 / b44f4c0 could not see it: statusOrSkip passed the
status through, and the next line — assertTrue(startsWith("<?xml")) — failed
the build. PathwaySearchTest carries the Fast tag, so this sits in the
required CI-Test-group-Fast check and currently blocks every PR in the repo
(it is what turned #2080 red; that branch does not touch pathway code).

The body therefore has to decide what the status line cannot. At this
endpoint a response that is not XML is their failure: a request of ours
that was wrong comes back 404, which still fails. Nothing else is relaxed —
the parse, xml:base, namespace, owl:imports and bp:pathway assertions are
untouched.

Verified against a local server through the real helpers, with the checked-in
insulinPathway-5683177.xml fixture as the good response: 200 + BioPAX XML
passes all assertions, 200 + the plain-text error skips, 404 fails, and
200 + well-formed but wrong XML still fails on "Missing xml:base". Against
the live services the class now reports 3 run, 2 skipped, 0 failures
(PathwayCommons /pc2/search is also timing out today, which the existing
guard already handled).

Note the same endpoint backs the desktop client's Reactome import
(BioModelEditorPathwayCommonsPanel.java:386), so that feature is broken for
users while Reactome is in this state. Tracking that separately — this
commit only stops a third party's outage from failing our build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D71LBYmQNf5J94wPqr81Jx
@jcschaff
jcschaff merged commit d4fc7b1 into master Sep 14, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant