Error while 'cbtransfer' : struct.error: unpack requires a string argument of length 18


#1

I got the following error while executing ‘cbtransfer’

struct.error: unpack requires a string argument of length 18
Traceback (most recent call last):
File “_ctypes/callbacks.c”, line 314, in 'calling callback function’
File “/opt/couchbase/lib/python/couchstore.py”, line 408, in callback
fn(DocumentInfo._fromStruct(docInfoPtr.contents, self))
File “/opt/couchbase/lib/python/pump_sfd.py”, line 218, in change_callback
cas, exp, flg, flex_meta, dtype = struct.unpack(SFD_REV_META, doc_info.revMeta)

When I looked at ‘Operation per Second’, it seems like the data from fail-over node properly pushed into the running cluster.
But I got very long list of the above error after ‘cbtransfer’ execution, so I am worrying about any data loss.

Would there be any data loss after the error?


#2

Hey Dynamicscope,

Are you using cbtransfer from a 3.X against the files from a 2.X node? It looks like you are running into this defect.


#3

Yes, I was trying to transfer data from 2.2.0 CE into 3.0.1 CE.

More exactly… what I did is force-stop three 2.2.0 nodes and offline upgrade them to 3.0.1 and start the nodes back up.
(I had to force-stop them because of the rebalancing issue that I posted on this forum: Server down while removing nodes + rebalancing)

I tried rebalancing the cluster with those offline upgraded nodes. But failed to rebalance the cluster because of disk full issue of offline upgraded nodes. Server always in pending state

So I failed over the nodes and tried ‘cbtransfer’…

So in result, does this mean I failed to transfer the data from the storage?
If so, is there any other way to restore data from 2.2.0 CE into 3.0.1 CE?


#4

No data would have been transferred. If you use the cbtransfer from a 2.X and point it at 3.X cluster it will work.