• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tari-project / tari / 18399107786

10 Oct 2025 07:04AM UTC coverage: 58.589% (-1.0%) from 59.571%
18399107786

push

github

web-flow
feat: custom db timeout for grpc (#7544)

Description
---
Grpc create transaction calls have a timeout while waiting for a
database write. This timeout is 100ms, and should be sufficient, but can
be too long. This creates a custom config option to make this longer, or
shorter.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added a configurable timeout for wallet gRPC database write operations
to control how long the system waits before reporting a timeout.
  * Default timeout set to 100 ms; adjustable via wallet configuration.
* Helps avoid premature timeouts on slower systems and permits tighter
responsiveness on faster setups.
* Preset configuration updated to include the new option for easier
setup.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

0 of 1 new or added line in 1 file covered. (0.0%)

1138 existing lines in 32 files now uncovered.

66489 of 113484 relevant lines covered (58.59%)

228871.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/base_layer/core/src/base_node/proto/rpc.rs
1
//  Copyright 2020, The Tari Project
2
//
3
//  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
4
//  following conditions are met:
5
//
6
//  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
7
//  disclaimer.
8
//
9
//  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
10
//  following disclaimer in the documentation and/or other materials provided with the distribution.
11
//
12
//  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote
13
//  products derived from this software without specific prior written permission.
14
//
15
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
16
//  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
//  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18
//  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
//  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
20
//  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
21
//  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22

23
use std::convert::{TryFrom, TryInto};
24

25
use tari_node_components::blocks::Block;
26
use tari_transaction_components::rpc::models::FeePerGramStat;
27
use tari_utilities::ByteArray;
28

29
use crate::proto::base_node as proto;
30

31
impl TryFrom<Block> for proto::BlockBodyResponse {
32
    type Error = String;
33

UNCOV
34
    fn try_from(block: Block) -> Result<Self, Self::Error> {
×
35
        Ok(Self {
UNCOV
36
            hash: block.hash().to_vec(),
×
UNCOV
37
            body: Some(block.body.try_into()?),
×
38
        })
UNCOV
39
    }
×
40
}
41

42
impl From<Vec<FeePerGramStat>> for proto::GetMempoolFeePerGramStatsResponse {
43
    fn from(stats: Vec<FeePerGramStat>) -> Self {
×
44
        Self {
×
45
            stats: stats.into_iter().map(Into::into).collect(),
×
46
        }
×
47
    }
×
48
}
49

50
impl From<FeePerGramStat> for proto::MempoolFeePerGramStat {
51
    fn from(stat: FeePerGramStat) -> Self {
×
52
        Self {
×
53
            order: stat.order,
×
54
            min_fee_per_gram: stat.min_fee_per_gram.as_u64(),
×
55
            avg_fee_per_gram: stat.avg_fee_per_gram.as_u64(),
×
56
            max_fee_per_gram: stat.max_fee_per_gram.as_u64(),
×
57
        }
×
58
    }
×
59
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc