tree 02d862957024633cecdc2c293eec6d10d00c8b44
parent b8374f77a19e8e3271331d7e2ff75fcaf62796a2
author Luca Milanesio <luca.milanesio@gmail.com> 1671411099 +0000
committer Luca Milanesio <luca.milanesio@gmail.com> 1672870938 +0000

Instantiate JSCH SSH Session Factory explicitily

The JGit's SSH loading of the default session factory may lead to a
non-deterministic instance if more than one factory is available.

See below the current logic:

private static SshSessionFactory loadSshSessionFactory() {
 ServiceLoader<SshSessionFactory> loader =
                         ServiceLoader.load(SshSessionFactory.class);
 Iterator<SshSessionFactory> iter = loader.iterator();
 if(iter.hasNext()) {
  return iter.next();
 }
 return null;
}

If the first service is the Apache Mina SSHD Session Factory, then
it would never be possible to configure the JSCH in clientImplementation
when configured in gerrit.config.

Manage expicitly the JSCH option for assuring that the desired session
manager is always instantiated when requested.

Release-Notes: Fix the ability to configure JSCH as client implementation in gerrit.config
Change-Id: Ifafd717e16b5fc1853553bd1b6e3c60bb048b57e
