tarantool / vshard

The new generation of sharding based on virtual buckets
Other
100 stars 31 forks source link

upgrade to support takes_raw_args for rebalancing #422

Open olegrok opened 1 year ago

olegrok commented 1 year ago

Initially issue with varbinary was fixed here https://github.com/tarantool/vshard/commit/dc10edf06eda7ae4cd17547f298855c3fcf3e4ff#diff-4e141700ad3735ecbe66de5316a0f222647ac7813857dc919bb49f56ec15407dR586

But our customers faced with issue when require('vshard.util').feature.msgpack_object is true but takes_raw_args: false.

telegram-cloud-photo-size-2-5434034709739981452-x

Manually copy-pasted migration code was fixed an issue but that should be done automatically. Please revise migration part once again.

Gerold103 commented 1 year ago

Are you doing the upgrade during the rebalancing? There is no way to update bucket_recv function on all storages at once. You have to upgrade all the nodes without rebalancing, and then enable it again.

olegrok commented 1 year ago

I expected that after instance restart/reload function definition is updated.

I had only question from customers: "we created varbinary field and now we have an error". They used Tarantool 2.11 and vshard 0.1.23.

I suggested them to run upgrade script manually and it seems to help. But I don't understand why it didn't happen automatically...

Serpentian commented 1 year ago

According to the code, it's not updated on hot-reload. Only the first cfg of vshard applies these changes, which is justified by the fact, that new features can occur only after updating tarantool executable.

Maybe we shoud not check, if this is the first cfg or not, just try to update it anyway. Doesn't seem to be very expensive. They probably somehow managed to update tarantool on the fly.

olegrok commented 1 year ago

According to the code, it's not updated on hot-reload

I'm not sure that that project uses hot-reload. I expect that after restart changes will be applied automatically. Or... we need log message ("You need to upgrade your instance with..." or something similar) and a way how to apply it (similar to box.schema.upgrade())

Gerold103 commented 1 year ago

This was supposed to be updated automatically on restart. Otherwise it makes sense to check if the script depends on box.schema.upgrade() anyhow.