Merge pull request #1337 from LukasKorba/1336-Tweaks-for-sdk-metrics

[#1336] Tweaks for sdk metrics
This commit is contained in:
Lukas Korba 2023-12-15 09:10:08 +01:00 committed by GitHub
commit 0e4e1190e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 65 additions and 21 deletions

View File

@ -4,6 +4,21 @@ All notable changes to this library will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this library adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
# 2.0.5 - 2023-12-15
## Added
### [#1336] Tweaks for sdk metrics
Shielded verified and total balances are logged for every sync of `SDKMetrics`.
## Checkpoints
Mainnet
Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2330000.json
Testnet
Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2630000.json
# 2.0.4 - 2023-12-12
## Changed

View File

@ -635,7 +635,6 @@ extension CompactBlockProcessor {
private func syncFinished() async -> Bool {
logger.debug("Sync finished")
metrics.logCBPOverviewReport(logger)
let latestBlockHeightWhenSyncing = await context.syncControlData.latestBlockHeight
let latestBlockHeight = await latestBlocksDataProvider.latestBlockHeight
// If `latestBlockHeightWhenSyncing` is 0 then it means that there was nothing to sync in last sync process.
@ -652,6 +651,14 @@ extension CompactBlockProcessor {
await send(event: .finished(lastScannedHeight))
await context.update(state: .finished)
let verifiedBalance = Zatoshi((try? await rustBackend.getVerifiedBalance(account: 0)) ?? 0)
let totalBalance = Zatoshi((try? await rustBackend.getBalance(account: 0)) ?? 0)
let shieldedBalance = WalletBalance(
verified: verifiedBalance,
total: totalBalance
)
await metrics.logCBPOverviewReport(logger, shieldedBalance: shieldedBalance)
// If new blocks were mined during previous sync run the sync process again
if newerBlocksWereMinedDuringSync {
return true

View File

@ -12,7 +12,7 @@ protocol SDKMetrics {
func actionStart(_ action: CBPState)
func actionDetail(_ detail: String, `for` action: CBPState)
func actionStop()
func logCBPOverviewReport(_ logger: Logger)
func logCBPOverviewReport(_ logger: Logger, shieldedBalance: WalletBalance) async
}
final class SDKMetricsImpl: SDKMetrics {
@ -102,17 +102,25 @@ final class SDKMetricsImpl: SDKMetrics {
}
// swiftlint:disable string_concatenation
func logCBPOverviewReport(_ logger: Logger) {
func logCBPOverviewReport(_ logger: Logger, shieldedBalance: WalletBalance) async {
actionStop()
var resText = "SYNC (\(syncs)) REPORT\n"
resText += "finished in: \(Date().timeIntervalSince1970 - cbpStartTime)\n\n"
logger.sync(
"""
SYNC (\(syncs)) REPORT
finished in: \(Date().timeIntervalSince1970 - cbpStartTime)
verified balance: \(shieldedBalance.verified.amount)
total balance: \(shieldedBalance.total.amount)
"""
)
try? await Task.sleep(nanoseconds: 100_000)
for action in cbpOverview {
let report = action.value
resText += """
var resText = """
action: \(action.key)
runs: \(report.runs)
cummulativeTime: \(report.cummulativeTime)
@ -129,9 +137,7 @@ final class SDKMetricsImpl: SDKMetrics {
}
}
resText += "\n\n"
logger.sync(resText)
}
logger.sync(resText)
}
}

View File

@ -0,0 +1,8 @@
{
"network": "main",
"height": "2330000",
"hash": "0000000001d195df581327428b00c4f82044888a6ee68acb359ac5253ec64276",
"time": 1702482723,
"saplingTree": "0126ed3dd209d43bf638612427b9567eb0ef8979a01647a9f25aa4ed455a4bfd5f013824cf628a84ad045162039f226adcfe0e086826f88f306b7cbb1475db2cde061a0181d77e195f5f2d59ad63bbb1dc4fbf13e8fcc3d91dc7b3144f0bae96d5e6f21000010dcf7c71e9dc7d603dcae826c173d0dd7ba8b9a591eee845edb6cc9c982b95200165daadc73d20637af1c31a0cd54c370df5e58fa39db266abf3776458d037473b0196d5924cb71ea93a60ed37019398c2e24386e7871349b301f9fa7c82b1b8772b00000161dfcf0c14d510b080b36445d2c8ef647c356b4e2db24805fa4b7bdb09cbf66e0000000001e3e205657bfbd810bea16aa5962f5765cbe6d3c774eff68ed0c2e1791d94323100017c650876ee17479db2e11cb5385df4fc60ae8f8cc8d501fa5dc07a4438e5863a000001d1b36bbba8e6e1be8f09baf2b829bafc4ccd89ad25fb730d2b8a995b60fc3a6701d8ccea507421a590ed38116b834189cdc22421b4764179fa4e364803dfa66d56018cf6f5034a55fed59d1d832620916a43c756d2379e50ef9440fc4c3e7a29aa2300011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e",
"orchardTree": "01b7f76f7ebd83f3c2a5f5923e260086c6e8fb88e765b3dc747d10c4dca8c39231001f0180f6125b775f78fbf5a3cfaa2cff9ff001a71506b05bbaf788b8aa0daa5bd81b0127a9a88d40f1b21a267676b34f9b79ad5b030b65e5403384cd8c1c5b2577bc2a01f4dde4a4768bad6cf5d25572a56a9a214a377dfe58e7a8b3874912f6c503d60301cace4b9d73b07b4a89d32593337331606a60a77be2156859d79c181226f9031f01029bfe65a8cb3178fbe627d80fd91c0892517dd0ffde6b6a72601be1372fdd3f018fafad5e9183dc2130a82e75712e05f4cc66810745d0562e65292a77a0de1f070000010e4ff40941a33e49b9e7a321341d5b1bb2276286c201adc96c9b7fb35f2f921c0001ead5f2e9359e2a08f944445d98d06aa128ab66760183e369a1e6df737cdbbe3e00015b40eb9abd1efbc71e5f3b718a42650c8a9353438a71c4362de2f6d98280c72801d209b8b2dfd0ebb5e08e33d7d2d6ccedd61c67db8ea38cf33a695ab5a80fea1101dd3e61f3e1d497d923486bd000737ea0ffac885fa481316727d0d8f7fc2138100001cf3bf92f69798e68555548afcce1648add1fb2548d64fa9a1ec22a3e26e7890101e637281deb58dff0c44ba13149b784a95da1b493005efd057e6f4ac20ef5d81d000001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
}

View File

@ -0,0 +1,8 @@
{
"network": "test",
"height": "2630000",
"hash": "000e0eaa2eb7113fda5a55aefd5ebfd1b73af4c148a15c342b92b23d31feacc7",
"time": 1702405032,
"saplingTree": "01815f7e0dd2ae5da4766c086288cd0be39c6312518be4e75043893da3851af73b017b89fe831a1a7477427393e4e2c6117d0f30d1cd2624239471b3cb1283367d3f100183cf3d589ba4e89ad9668ac2f9b17544404abfde1b132a0eabaeae4732c1bd210137c418bee27709b7c25088987d16129b98092afc38cea2862c4afcbd1ff7446e0001833f32f8a56520c28af78289d4c6ce40dbdbaadfbfa1374008cd979a53df91680161ae6a6536a4928b9fe11aedb223fe58893f9c337d6c7b0e41cc82509cd780580132f6625f5568d5c36d820f3b5cdf7b9e20b6faa4ba27cc418f5828ab60ec6c2d0175a85ed94a7f19985be0ff968e0b1fa0cb25c1792c4990ab5e6b30d5cfa57f30013aeaf03c22ca18f70275bf195ba855cffad97f3d2d40d1aa991711f2dbf4d52501285d51c9dd96d971a1c15b2af0693eff7b8002261be896f3b5b1965b2707642801229c65dcabf0d220239a425d9716c9d4ee45201f7e300f7cdc3e02e26af8504f00015f6c95e75f4601a0a31670a7deb970fc8988c611685161d2e1629d0a1a0ebd07015f8b9205e0514fa235d75c150b87e23866b882b39786852d1ab42aab11d31a4a0117ddeb3a5f8d2f6b2d0a07f28f01ab25e03a05a9319275bb86d72fcaef6fc01501f08f39275112dd8905b854170b7f247cf2df18454d4fa94e6e4f9320cca05f24011f8322ef806eb2430dc4a7a41c1b344bea5be946efc7b4349c1c9edb14ff9d39",
"orchardTree": "0173c10050c6cb1d64e5a4552e922cad6387a76cf4385ae8c7ca212d99267eb62e01e925514d92ef5f27f19f6314d00bda50fdaeac24ad7cce8542d91f25f5d523141f0000016219cc01738c79fdadb026ab4f36f02a6a9bebec9e89ff96ea6d58cc24893f060001c9851bb75b703e0d30a1cb1c6073989fc85114ff6e43c5464ad33c789c054a1701a14e51730f1aac956ca02793a6c274f1bca3a81d368f0ba52ecf14f13b947b3d00012bbdeb10ce1ba239547d675779168586ceab869467a8a36642e0af67ce1bca3301cf1d91dab12c89f04b9f6a2f650544c23cb24c7fc8c9b7d10830e9c1623cff370178a68d439d45f555fd4fe08eeeab4545091b53d73da118b6084042c4a4c44d3a00013bf8b923e4187754e85175748d9cce4824a6787e4258977b5bfe1ba59012c032000001f3bbdc62260c4fca5c84bf3487246d4542da48eeeec8ec40c1029b6908eef83c00000000000000000000000000000000"
}

View File

@ -1191,17 +1191,17 @@ class SDKMetricsMock: SDKMetrics {
// MARK: - logCBPOverviewReport
var logCBPOverviewReportCallsCount = 0
var logCBPOverviewReportCalled: Bool {
return logCBPOverviewReportCallsCount > 0
var logCBPOverviewReportShieldedBalanceCallsCount = 0
var logCBPOverviewReportShieldedBalanceCalled: Bool {
return logCBPOverviewReportShieldedBalanceCallsCount > 0
}
var logCBPOverviewReportReceivedLogger: Logger?
var logCBPOverviewReportClosure: ((Logger) -> Void)?
var logCBPOverviewReportShieldedBalanceReceivedArguments: (logger: Logger, shieldedBalance: WalletBalance)?
var logCBPOverviewReportShieldedBalanceClosure: ((Logger, WalletBalance) async -> Void)?
func logCBPOverviewReport(_ logger: Logger) {
logCBPOverviewReportCallsCount += 1
logCBPOverviewReportReceivedLogger = logger
logCBPOverviewReportClosure!(logger)
func logCBPOverviewReport(_ logger: Logger, shieldedBalance: WalletBalance) async {
logCBPOverviewReportShieldedBalanceCallsCount += 1
logCBPOverviewReportShieldedBalanceReceivedArguments = (logger: logger, shieldedBalance: shieldedBalance)
await logCBPOverviewReportShieldedBalanceClosure!(logger, shieldedBalance)
}
}