Skip to content
Jingyu Zhou edited this page Nov 17, 2021 · 9 revisions

Demo Steps

TOML -> shards (PR #4843)

[configuration]
config = 'triple'
storageEngineType = 3
processesPerMachine = 3
coordinators = 3
machineCount = 15
splits = "a:b:c"

=> TestConfig => SimulationConfig => DatabaseConfiguration: shards

newSeedServers() add shard info into InitializeStorageRequest

storageServer() adds req.storageTeamId and req.shardInfo

modify storage server by adding req.shardInfo

Demo limitations

  • Proxy broadcasts to all TLog groups due to private mutations

    • Move private mutation generation to Resolvers PR 5969
    • Assign private mutations to TLog groups and track group versions at Resolvers. Then sending these private mutations to commit proxies along with TLogGroup's Previous Commit Versions (TPCVs). Note if there are shard changes, then we fall back to broadcast, because proxy's pre-computed (before resolution) TLog Group set is no longer accurate.
  • 1 SS : 1 team (1 TLog group)

    • SS tag is mapped to a team at ApplyMetadataMutation: git commit
    • 1 SS : n teams -- needs merge cursor support
  • Recruit SS with teamID, and shard info Team can be dynamically assigned

  • 1 TLog group : 1 or many? TLog

Proxy -> TLog TLogCommitRequest req.reply.send(logData->durableKnownCommittedVersion);

Proxy

Proxy -> master ReportRawCommittedVersionRequest max()

Note "keySplits" was introduced for demo purpose and predefining splits can become a feature in the future, so that loading data into DB can be faster----without load balancing across storage servers later.

Seed

r -r simulation --crash --logsize 1024MB --knob_tlog_new_interface=1 -f src/foundationdb/tests/ptxn/CycleTest.toml -s 100 -b off

cmr | grep -E 'SSTeam' | s | less cmr | grep StorageMetrics | s | sed -e 's/Elapse.BytesInput=/Input=/' -e 's/BytesFetche.//' | less TestSetupComplete|TestComplete|CheckingResults|TestFetchingMetrics

Type="ServerTag" Machine="2.0.1.3:1:tls" ID="98995bbcca0a0877" Server="345ac520e5ba8396" Tag="0:4"