Attendees:
Arun M. Krishnakumar
Charan Reddy Guttapalem
- Enrico Olivelli
- Matteo Merli
- Rithin Shetty
- Sijie Guo
- JV Jujjuri
- Yiming Zang
NOTES
Background Introduction
the interface, wire protocol and storage all support 64 bits ledger id.
- however, the ledger id generation on zookeeper only generate 32 bits ledger id.
- the zookeeper-based ledger metadata store uses 2-4-4 split to store 32 bits ledger id.
- we need to find a solution to support 64 bits in zookeeper-based ledger metadata store.
Problems
- there are 3 major concerns for this problem
- how to store metadata for 64-bits-id ledgers in zookeeper?
- how to generate 64-bits ledger id using zookeeper?
- how to achieve backward compatibility?
- how to store?
- Salesforce built a Long Hierarchical Ledger Manager
- Ledger ID is split in 3-4-4-4-4 components.
- No backward compatible on initial built
- backward compatibility?
- for ledger id whose higher 32 bits are zero, use split 2-4-4
- for ledger id whose higher 32 bits are higher than zero, use split 3-4-4-4-4
- since the first component has different characters (2 vs 3), it is easy to achieve backward compatibility
- negative ledger id discussion
how to generate?
use zookeeper sequence znode to create lower 32 bits
- use another znode to create sequential buckets, the buckets are used for higher 32 bits.
- when to create bucket?
- when lower 32-bits generation is approaching 31 bits, create a new bucket.
- creating a new bucket and the id generation will happen under one zookeeper 'multi' transaction call to guarantee there is only one bucket is created.
128 bits
we also discussed 128 bits support. but it will touch a lot - interface, wire protocol and storage
- we decided to move to a separated discussion
- there are 3 major concerns for this problem