git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Move JGit off JSch?

From
Shawn O. Pearce <spearce@spearce.org>
Date
Jun 25, 2009, 18:14 UTC
Message-ID
<20090625181428.GM11191@spearce.org>
I'm fed up with JSch.

The remote.<name>.timeout stuff I added recently to JGit causes JSch to throw NPE on timeout[1] and the original author seems to think that's a reasonable thing to do[2].

MINA SSHD[3] contains a different client implementation, licensed under the Apache License 2.0. Its currently missing public key support[4] but the library is actually a pretty solid library, and the author seems to have a decent clue.

I'm really starting to consider adding the public key support the client side of MINA SSHD, and then rewriting TransportGitSsh to use it instead of JSch. The downside is, that really increases our dependency chain, and SSH key management under Eclipse becomes a unique EGit problem as we can't piggy-back onto the existing JSch key management already done by the workbench.

But, I just spent the last ~3 hours digging around JSch trying to fix this NPE bug... and realized the code is very thread unsafe, uses at least 2 threads per connection (your thread, and a thread it spawns for you) so you have no choice but to use threads, and the author seems to think random NPEs are OK (see [2] and all of the NPE bugs on sourceforge).

[1] http://jira.source.android.com/jira/browse/GERRIT-233 [2] http://www.mail-archive.com/jsch-users@lists.sourceforge.net/msg00520.html [3] http://mina.apache.org/sshd/ [4] https://issues.apache.org/jira/browse/SSHD-25

-- 
Shawn.
Next: Ferry Huberts
Message 1 of 3 in “Move JGit off JSch?”
  1. Shawn O. PearceJun 25, 2009
  2. Ferry HubertsJun 25, 2009
  3. Robin RosenbergJun 25, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.