#1139932 plm: progress-tracking commits fail when commit.gpgsign is enabled (jgit signing)

Package:
plm
Source:
plm
Submitter:
Juan M. Méndez Rey
Date:
2026-06-13 18:05:02 UTC
Severity:
normal
#1139932#5
Date:
2026-06-13 16:06:11 UTC
From:
To:
Dear Maintainer,

PLM tracks student progress in an embedded jgit repository (plm.core.model.
tracking.GitSpy / GitUtils). Each run creates a commit.

If the user's git configuration enables commit signing (commit.gpgsign = true,
common on developer machines), jgit tries to sign these internal commits and
fails, dumping a stack trace to the student console on every run, in every
language mode (Java, Scala, ...):

org.eclipse.jgit.api.errors.ServiceUnavailableException: Signing service is
not available
at org.eclipse.jgit.api.CommitCommand.sign(CommitCommand.java:329)
at org.eclipse.jgit.api.CommitCommand.call(CommitCommand.java:283)
at plm.core.model.tracking.GitUtils.commit(...)
at plm.core.model.tracking.GitSpy.executed(...)
at plm.core.model.Game.fireProgressSpy(...)
at plm.core.model.LessonRunner.run(...)

To reproduce:
1. git config --global commit.gpgsign true (or have it set already)
2. Launch plm, run any exercise -> the stack trace above is printed.

Root cause: PLM's CommitCommand inherits the ambient commit.gpgsign setting.
Its internal bookkeeping commits should never be signed.

Fix: call setSign(false) on each CommitCommand in GitUtils (three call sites:
the empty initial commit, the manual-merge commit, and the per-run tracking
commit). A patch doing exactly this is prepared and will be forwarded upstream
(https://github.com/oster/PLM).

Thanks,
Juan

#1139932#10
Date:
2026-06-13 17:55:04 UTC
From:
To:
Both are fixed and verified on a current Debian system (default-jdk is now
OpenJDK 26):

- #1139932: PLM's internal progress-tracking commits now call setSign(false), so
an enabled commit.gpgsign no longer makes jgit fail with
ServiceUnavailableException and dump a stack trace to the console on every run.

- #1139926: LessonRunner.stopAll() now uses cooperative Thread.interrupt()
instead of the deprecated-for-removal Thread.stop(), so PLM's in-process
recompilation of its framework sources no longer fails and Java exercises run
again.

Both fixes are forwarded upstream as
https://github.com/BuggleInc/PLM/pull/528 and are part of the PLM packaging
update at

https://salsa.debian.org/java-team/plm/-/merge_requests/4,

which also ports PLM to Scala 2.12. They will land with that upload.

Best,
Juan