openvstorage / alba

Open vStorage ALBA (alternate backend) creates a replicated or flexible network raid’ed object storage backend out of Seagate Kinetic drives and local disk supporting compression, encryption.
Other
28 stars 10 forks source link

Local backend is disqualified because on namespace already exists #737

Closed jeroenmaelbrancke closed 7 years ago

jeroenmaelbrancke commented 7 years ago

On the global proxies we see following error:

Disqualifying osd 1: Albamgr_protocol.Protocol.Error.Albamgr_exn(4, "Albamgr_protocol.Protocol.Error.Namespace_already_exists"); backtrace:; Raised at file "map.ml", line 122, characters 16-25; Called from file "src0/sexp_conv.ml", line 149, characters 10-37

similar issue: #550

Why do we get these errors? Can you improve this error?

wimpers commented 7 years ago

@jeroenmaelbrancke any idea why the namespace was created multiple times?

domsj commented 7 years ago

My current best guess: possibly multiple different namespaces were created on the main backend around the same time. This could cause a race in the osd message delivery where 2 proxies try to create the same local backend namespace simultaneously. Alba will/should correctly recover from the race, but a local-backend-osd might be temporarily disqualified. If the hypothesis is correct this can be solved by suppressing the Namespace_already_exists error here: https://github.com/openvstorage/alba/blob/1.3.16/ocaml/src/alba_osd.ml#L193-L197.