Skip to content

Instantly share code, notes, and snippets.

@mvdbeek
mvdbeek / README.md
Created October 26, 2026 11:55
Request fresh Pulsar job statuses using app.yml, with automatic manager detection

Request a fresh Pulsar job status

This script asks the running Pulsar service to publish its current status for each job again. It uses the AMQP settings from app.yml; RabbitMQ's management plugin is not required. Publishing a request is not confirmation that Galaxy has processed the response.

1. Copy the script to the Pulsar host

Download pulsar-status.py from this gist and copy it to the Pulsar host, for example as /tmp/pulsar-status.py.

Run it as the Pulsar service user, using the service's Python environment and working directory. Substitute your actual paths below:

@mvdbeek
mvdbeek / README.md
Created October 22, 2026 13:57
galaxyproject/galaxy#24299 review: screenshots and Playwright probe

galaxyproject/galaxy#24299 review screenshots

Taken on 2026-10-22 against PR head 5f224cb525855aa9a5e9b07485aafb6f53197c25, with a client built from that head.

test_zz_probe_pr24299.py is a throwaway Playwright-backend test. It subclasses TestWorkflowInvocationGraph, so it reuses that class's two-branch workflow. To run it, drop it into lib/galaxy_test/selenium/ and run:

PROBE_OUT=/some/dir GALAXY_TEST_DRIVER_BACKEND=playwright GALAXY_TEST_SELENIUM_HEADLESS=1 \
  pytest "lib/galaxy_test/selenium/test_zz_probe_pr24299.py::TestProbePr24299::test_probe"

The test writes each screenshot plus results.json, which records the duplicate ids, the popover counts and the pane heights for each shot.

@mvdbeek
mvdbeek / 0-README.md
Created October 8, 2026 10:45
apt 2.8 hangs when the first mirror in a mirror+file: source is down (GitHub ubuntu-24.04 runners); Acquire::Retries::Delay=false avoids it

apt hangs when the first mirror in a mirror+file: source is down

Reproduction of the 6-hour apt-get update hangs in galaxyproject/galaxy CI on 2026-10-07. The cause was an outage of azure.archive.ubuntu.com.

GitHub's ubuntu-24.04 runner image points every Ubuntu suite at mirror+file:/etc/apt/apt-mirrors.txt:

http://azure.archive.ubuntu.com/ubuntu/	priority:1
https://archive.ubuntu.com/ubuntu/	priority:2
@mvdbeek
mvdbeek / README.md
Created September 11, 2026 17:45
Galaxy #22098: realistic nested dynamic collection reproduction; passes on release_26.1

Galaxy #22098: nested dynamic output collection reproduction

Reproduction for galaxyproject/galaxy#22098, using the existing collection_split_on_column framework tool and normal Galaxy API calls. No mocks or manually constructed model objects are used.

The tool is mapped over two tabular inputs. A dynamic destination rule sends the first job through directory metadata and the second through extended metadata. One local runner worker ensures that the first sibling has persisted its datasets before the second job is prepared.

Results

  • Historical commit 3a56ddfc8fa, before the March 17 fixes: reproduces both the collection-builder AssertionError and the host-side Failed to find HDA with id [3] in [{}], through the same nested HDCA import path as the issue.
  • Plain release_26.1 at 94e49b14448: 1 passed. Both jobs succeed; the test verifies the nested collection structure, element counts, dataset states, and all four outp
@mvdbeek
mvdbeek / libmagic_thread_safety.py
Created July 28, 2026 16:27
Reproduction: libmagic cookie is not thread-safe (galaxyproject/galaxy#23146)
"""Reproduction for GALAXY-MAIN-14RZ / galaxyproject/galaxy#23146.
A libmagic cookie builds its description in a buffer it owns and returns a
pointer into that buffer, so one cookie cannot serve two threads at once.
`magic.detect_from_content()` / `magic.detect_from_filename()` are python-magic's
deprecated compatibility shims. They route through `magic/compat.py`, which holds
two process-wide cookies and takes no lock:
# magic/compat.py
@mvdbeek
mvdbeek / lint_skip_changes.md
Last active June 13, 2026 13:19
lint_skip changes summary across 294 commits in tools-iuc fix_testcase_validation branch

.lint_skip Changes — Last 294 Commits (fix_testcase_validation branch)

Full Change Table

Tool Action Rule(s) Commit
abricate Removed TestsCaseValidation 3a6544ef
artic Added OutputsFormatSourceReference 5b142410
b2btools Removed TestsCaseValidation c6d48ef7
b2btools Added TestsCaseValidation cce027b6
@mvdbeek
mvdbeek / planemo_upstreaming_plan.md
Created June 13, 2026 09:42
Upstreaming plan: galaxy-tool-refactor → planemo

Upstreaming plan: galaxy-tool-refactor → planemo

Date: 2026-06-13

This document records the analysis, decisions, and phased plan for moving galaxy-tool-refactor's auto-fix capabilities upstream into planemo (and its underlying galaxy.tool_util library). It is the output of a cross-codebase redundancy audit; the raw findings live in planemo_linter_parity.md.

@mvdbeek
mvdbeek / sorted-pondering-seahorse.md
Created April 1, 2026 08:56
Plan: Harden API parameter validation for galaxyproject/galaxy (#22341-#22350)

Harden API Parameter Validation — 10 Sentry Issues

Context

The last 10 GitHub issues filed on galaxyproject/galaxy (#22341–#22350) are all caused by malformed or malicious API inputs that bypass validation and crash deep inside application code, producing 500 errors logged to Sentry. Every one of these should be caught at the API frontier and returned as a 4xx response.


Fix 1 — #22350: ValueError parsing date b'file' in history controller

@mvdbeek
mvdbeek / diagnosis.md
Last active March 30, 2026 14:13
Root cause analysis: flaky test_swift_objectstore composite_output (galaxyproject/galaxy#21226)

Root Cause Analysis: Flaky test_swift_objectstore.py::test_tools[composite_output]

Issue: galaxyproject/galaxy#21226
Test: test/integration/objectstore/test_swift_objectstore.py::test_tools[composite_output]

Symptoms

The test transiently fails in two ways:

  1. IncompleteRead: IncompleteRead(5242880 bytes read, 24576 more expected) — the server sets Content-Length for the full file but the connection closes after exactly 5 MB (80 × 64 KB chunks).
@mvdbeek
mvdbeek / issue_21230_investigation.md
Created March 28, 2026 16:59
Investigation: flaky test_search_delete_hdca_output (#21230) — array_agg ORDER BY silently dropped by SQLAlchemy

Investigation: Flaky test_search_delete_hdca_output (Issue #21230)

Summary

func.array_agg(column, order_by=column) in SQLAlchemy silently drops the order_by keyword argument, generating array_agg(path_sig) instead of array_agg(path_sig ORDER BY path_sig). This means the HDCA signature arrays used for job search equivalence checking are unordered, causing non-deterministic comparison results on PostgreSQL.

Root Cause

In lib/galaxy/managers/jobs.py, the agg_expression method: