> If it is client level configuration, in theory it is possible to have latest 
> client create v3 ledger while bookies are still running in the older version 
> right?

Yes, autorecovery would likely just break in this case.

> If we go with cluster level, I think using it part of LAYOUT_ZNODE is not
clean.
> I think we need to have a form of "cluster version number", or even better
with a combination of  capability/feature bit-map which can dictate
the cluster behavior.

I used the LAYOUT znode because that is what already exists. If we
create another znode for this, /ledgers/CLUSTER for example, then, for
consistency, the contents of the layout znode should really be moved
into this new znode. But this creates a lot more BC issues than just
using the LAYOUT znode. Old versions of the software ignore anything
other than the first two lines in LAYOUT. So, it's not clean nor
ideal, but it does work well within the constraints of BC.

> I am assuming that the tool Ivan is talking about is used for existing 
> clusters to update the cluster version number.
> Otherwise the maxLedgerMetadataFormat is used only for new clusters; that is 
> fine.

The maxLedgerMetadataFormat is only written when writing a new LAYOUT
node, so either during metaformat, or when using the proposed tool.
When it is absent from the layout node, it defaults to version 2,
which matches current behaviour.

The important thing for the 4.9 release is that the client can read
binary metadata, so that in 4.10 or 4.11, if we add a field to the
metadata, then we are able to use it with 4.9 clients and newer. It is
only that that point that maxLedgerMetadataFormat comes into play.

So, for the sake of getting 4.9 out the door, I propose that we:
a. Rollback the 2 changes around max metadata format version.
b. Pin serde to use V2 for now.
c. Continue this discussion to find the long term solution.

-Ivan

Reply via email to