Hi, I use 1.9.2.
I've just took a look at 2.0 but it will require to rewrite the code I use to communicate with Swift. As far as I understand with the new API I cannot use BlobStoreContext.
Is there a way to fix it in 1.9.2? Best, Aleksandra W dniu 23.11.2016 o 23:28, Zack Shoylev pisze:
There were some bugfixes in 2.0.0 that can potentially fix your problem based on exactly what is failing. Have you tried that? ________________________________________ From: Aleksandra Nowak <aleksandra.no...@man.poznan.pl> Sent: Wednesday, November 23, 2016 5:08 AM To: user@jclouds.apache.org Subject: put operation is not repeatable Hi, I use jclouds to communicate with Openstack Swift (authentication is provided by Keystone). Every once in a while I get this exception: Cannot retry after server error, command is not replayable: [method=org.jclouds.openstack.swift.SwiftKeystoneClient.public abstract java.lang.String org.jclouds.openstack.swift.CommonSwiftClient.putObject(java.lang.String,org.jclouds.openstack.swift.domain.SwiftObject)... Server rejected operation connecting to PUT http://swift... (full exception here: http://pastebin.com/WVtc0U3f) Here is the code which I run to upload objects: http://pastebin.com/GKr1CaSQ After the error the application can be "fixed" by a restart or by executing a GET request to an existing object. I figured that this happens because the key from Keystone expires before the PUT command is executed. And while GET method is requesting a new key from Keystone, PUT is not. And I confirmed it using ngrep on Keystone port. During PUT there is no communication to Keystone, but during GET I can see that it requested key renewal: http://pastebin.com/Wi2xzWZ9 I turned on jclouds logging on TRACE level. Here is the log when I try PUT method: http://pastebin.com/RxRBTXDH and here is log for GET first: http://pastebin.com/WhvG4Wy9 So, it looks like PUT method is not repeatable/replayable for InputStream. Can somebody tell me why? Or point to a point in documentation where it is described? Is there a why to upload InputStream to Swift in a repeatable way? My could is wrapped by a REST call which uses Multipart, so I really would like to use InputStream. Or is it any other way to renew the key? Thanks in advance! Kind regards, Aleksandra