Hi Claus,

thanks for your reply. I forgot to mention, that I am using Camel in Karaf.

Along with Camel I also upgraded Karaf (4.2.9 => 4.3.0).


When using Camel 2.7.1 with Karaf 4.2.9, the camel-ssh component is working 
without problems.


Also, the camel features URLs for installing Camel into Karaf both specify 
mvn:org.apache.sshd/sshd-core/2.0.0 as dependency for camel-ssh

https://repo1.maven.org/maven2/org/apache/camel/karaf/apache-camel/3.4.0/apache-camel-3.4.0-features.xml

https://repo1.maven.org/maven2/org/apache/camel/karaf/apache-camel/3.7.1/apache-camel-3.7.1-features.xml


So it seems to be a Karaf-related issue.


Using "feature:install camel-ssh" results in the following in a clean Karaf 
4.2.9:


karaf@root()> bundle:list -t 0 | grep -i ssh
 35 x Active   x  30 x 4.2.9    x Apache Karaf :: Shell :: SSH
 38 x Active   x  30 x 1.7.0    x Apache Mina SSHD :: Core
 79 x Active   x  50 x 3.7.1    x camel-ssh
101 x Active   x  50 x 2.0.0    x Apache Mina SSHD :: Core


And in a clean Karaf 4.3.0 it results in:

karaf@root()> bundle:list -t 0 | grep -i ssh
 44 x Active   x  30 x 4.3.0              x Apache Karaf :: Shell :: SSH
 46 x Active   x  30 x 2.5.1              x Apache Mina SSHD :: OSGi
 47 x Active   x  30 x 2.5.1              x Apache Mina SSHD :: SCP
 48 x Active   x  30 x 2.5.1              x Apache Mina SSHD :: SFTP
121 x Active   x  50 x 3.7.1              x camel-ssh


I'm too tired right now to persue this any further. Maybe I can resolve it 
tomorrow.



Regards
--
Jan Schulze
Eberhard Karls Universität Tübingen
________________________________
Von: Claus Ibsen <claus.ib...@gmail.com>
Gesendet: Dienstag, 26. Januar 2021 13:26:16
An: users@camel.apache.org
Betreff: Re: Component "camel-ssh" broken? - NoSuchMethodError: 
ConnectFuture.getSession()

Hi

Thanks for reporting. Can you create a JIRA ticket.
And would you be able to try test with switching to use mina 2.0 JAR
on the classpath but keep using the 3.7.1 camel version.

On Tue, Jan 26, 2021 at 1:20 PM Schulze, Jan
<jan.schu...@uni-tuebingen.de> wrote:
>
> Hi,
>
> "camel-ssh" component is throwing a CamelExecutionException when it is used 
> to write a file via SSH.
> It used to be working in Camel 3.4.0, but after upgrading to 3.7.1, I observe 
> the following stack trace:
>
> org.apache.camel.CamelExecutionException: Exception occurred during execution 
> on the exchange: Exchange[F2205BFA0B31B1C-0000000000000000]
>         at 
> org.apache.camel.CamelExecutionException.wrapCamelExecutionException(CamelExecutionException.java:45)
>  ~[!/:3.7.1]
>         at 
> org.apache.camel.support.DefaultExchange.setException(DefaultExchange.java:425)
>  ~[!/:3.7.1]
>         at 
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:69)
>  ~[!/:3.7.1]
>         at 
> org.apache.camel.processor.SendProcessor.lambda$process$2(SendProcessor.java:188)
>  ~[!/:3.7.1]
>         at 
> org.apache.camel.support.cache.DefaultProducerCache.doInAsyncProducer(DefaultProducerCache.java:317)
>  ~[!/:3.7.1]
>         at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:187) 
> ~[!/:3.7.1]
>         at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:714)
>  [!/:3.7.1]
>         at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:623)
>  [!/:3.7.1]
>         at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>  [!/:3.7.1]
>         at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>  [!/:3.7.1]
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:147) 
> [!/:3.7.1]
>         at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:312)
>  [!/:3.7.1]
>         at 
> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:207)
>  [!/:3.7.1]
>         at 
> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:76) 
> [!/:3.7.1]
>         at java.util.TimerThread.mainLoop(Timer.java:556) [?:?]
>         at java.util.TimerThread.run(Timer.java:506) [?:?]
> Caused by: java.lang.NoSuchMethodError: 
> 'org.apache.sshd.client.session.ClientSession 
> org.apache.sshd.client.future.ConnectFuture.getSession()'
>         at 
> org.apache.camel.component.ssh.SshHelper.sendExecCommand(SshHelper.java:84) 
> ~[?:?]
>         at 
> org.apache.camel.component.ssh.SshProducer.process(SshProducer.java:74) ~[?:?]
>         at 
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
>  ~[!/:3.7.1]
>         ... 13 more
>
> The Camel route for writing the file is very simple (and has not changed 
> during the Camel upgrade):
>
> .setHeader("currentDate", simple("${date:now:yyyy-MM-dd}", String.class))
> .setHeader("filename", simple("/tmp/test.text", String.class))
> .setBody(simple("echo ${header.currentDate} > ${header.filename};"))
> .to("ssh://username:password@hostname")
>
> It seems, that some changes to Mina SSHD in 
> "org.apache.sshd.client.future.ConnectFuture.java" related to the following 
> JIRA are responsible:
> https://issues.apache.org/jira/browse/SSHD-842
>
> Camel 3.4.0 (working) uses Mina 2.0.0, whereas Camel 3.7.1 uses Mina 2.5.1.
> The changes from the mentioned JIRA are in effect since Mina 2.1.0.
>
> Can anyone confirm?
>
>
> Regards
> --
> Jan Schulze
> Eberhard Karls Universität Tübingen



--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to