You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jclouds.apache.org by Nipun Udara <y....@gmail.com> on 2014/06/16 05:52:15 UTC
Error on using JClouds SshClient
Hi all
FileInputStream inputStream=new FileInputStream("C:/Users/Udara/input.txt");
try{
ssh.connect();
Payload payload=new InputStreamPayload(inputStream);
ssh.put("input.txt",payload);
}finally {
if (ssh!=null){
ssh.disconnect();
}
}
when i use Jclouds sshClient put method above i got the following error,
[ERROR] <<
(ec2-user:rsa[fingerprint(f7:fd:af:ae:25:0b:d3:99:2a:c2:ee:8c:83:be:92:0c),sha1(0f:4b:9e:f7:a7:f8:b1:4e:f4:7c:68:3b:2e:e2:e7:68:f3:25:8c:32)]@
54.85.181.97:22) error acquiring Put(path=[input.txt]) (not retryable): null
java.lang.NullPointerException
at
org.jclouds.sshj.SshjSshClient$PutConnection$1.getLength(SshjSshClient.java:323)
at
net.schmizz.sshj.sftp.SFTPFileTransfer$Uploader.upload(SFTPFileTransfer.java:182)
at
net.schmizz.sshj.sftp.SFTPFileTransfer$Uploader.access$100(SFTPFileTransfer.java:172)
at net.schmizz.sshj.sftp.SFTPFileTransfer.upload(SFTPFileTransfer.java:70)
at net.schmizz.sshj.sftp.SFTPClient.put(SFTPClient.java:248)
at
org.jclouds.sshj.SshjSshClient$PutConnection.create(SshjSshClient.java:314)
at
org.jclouds.sshj.SshjSshClient$PutConnection.create(SshjSshClient.java:290)
at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:196)
at org.jclouds.sshj.SshjSshClient.put(SshjSshClient.java:346)
at org.apache.airavata.gfac.utils.JCloudsFileTransfer.uploadFileToEc2(JCl
I can put strings or StringPayLoads but when i use InputStreamPayloads i
got this error. Any help regarding this
Regards
Nipun Udara
Re: Error on using JClouds SshClient
Posted by Andrew Gaul <ga...@apache.org>.
Can you try calling payload.getContentMetadata().setContentLength(...)?
Also you might want to use a ByteSourcePayload instead, e.g.,
ByteSource byteSource = Files.asByteSource(
new File("C:/Users/Udara/input.txt"));
Payload payload = new ByteSourcePayload(byteSource);
payload.getContentMetadata().setContentLength(byteSource.size())
This will allow the jclouds retry mechanism to work in the presence of
network failures. InputStreamPayload are not retryable.
On Mon, Jun 16, 2014 at 09:22:15AM +0530, Nipun Udara wrote:
> Hi all
>
> FileInputStream inputStream=new FileInputStream("C:/Users/Udara/input.txt");
> try{
> ssh.connect();
> Payload payload=new InputStreamPayload(inputStream);
> ssh.put("input.txt",payload);
> }finally {
> if (ssh!=null){
> ssh.disconnect();
> }
> }
>
> when i use Jclouds sshClient put method above i got the following error,
>
> [ERROR] <<
> (ec2-user:rsa[fingerprint(f7:fd:af:ae:25:0b:d3:99:2a:c2:ee:8c:83:be:92:0c),sha1(0f:4b:9e:f7:a7:f8:b1:4e:f4:7c:68:3b:2e:e2:e7:68:f3:25:8c:32)]@
> 54.85.181.97:22) error acquiring Put(path=[input.txt]) (not retryable): null
> java.lang.NullPointerException
> at
> org.jclouds.sshj.SshjSshClient$PutConnection$1.getLength(SshjSshClient.java:323)
> at
> net.schmizz.sshj.sftp.SFTPFileTransfer$Uploader.upload(SFTPFileTransfer.java:182)
> at
> net.schmizz.sshj.sftp.SFTPFileTransfer$Uploader.access$100(SFTPFileTransfer.java:172)
> at net.schmizz.sshj.sftp.SFTPFileTransfer.upload(SFTPFileTransfer.java:70)
> at net.schmizz.sshj.sftp.SFTPClient.put(SFTPClient.java:248)
> at
> org.jclouds.sshj.SshjSshClient$PutConnection.create(SshjSshClient.java:314)
> at
> org.jclouds.sshj.SshjSshClient$PutConnection.create(SshjSshClient.java:290)
> at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:196)
> at org.jclouds.sshj.SshjSshClient.put(SshjSshClient.java:346)
> at org.apache.airavata.gfac.utils.JCloudsFileTransfer.uploadFileToEc2(JCl
>
> I can put strings or StringPayLoads but when i use InputStreamPayloads i
> got this error. Any help regarding this
>
> Regards
> Nipun Udara
--
Andrew Gaul
http://gaul.org/