emqx / eip

EMQX Improvement Proposals
20 stars 19 forks source link

feat(0013): Add initial version of configuration migration EIP #46

Closed k32 closed 3 years ago

zmstone commented 3 years ago

It's great that you proposed to handle hop beam upgrade cases, which is a 'nice to have' feature. I'd propose to confine the scope with only table schema transformation.

During patch releases: For patch releases, we should avoid doing table schema changes, and for data changes, code will have to be backward compatible, i.e. no need to do table transformation. For configs, we'll have to write backward compatible schema (and perhaps code which makes use of the configs). i.e. no need to do config transformation

to sum up, the requirement is straightforward: provide a script which can:

k32 commented 3 years ago

@zmstone Thanks for the review, applied remarks

zmstone commented 3 years ago

For 5.0 to 5.1 upgrade, we may want to perform rolling upgrade for the cluster instead of upgrading the nodes into a different cluster. To meet this requirement, I wonder if it's possible at all to change Mnesia schema the way in this proposal.

zmstone commented 3 years ago

For 5.0 to 5.1 upgrade, we may want to perform rolling upgrade for the cluster instead of upgrading the nodes into a different cluster. To meet this requirement, I wonder if it's possible at all to change Mnesia schema the way in this proposal.

  1. if we do mnesia:transform_table on the fly, do we still need the BUP (we may need BUP for backup/restore, but not necessary for upgrade purposes)?
  2. mnesia:transform_table probably enables schema change for the core nodes, what about the replicant nodes ?