Philipp Shergalis created IGNITE-24791:
------------------------------------------
Summary: Add range validations for timeout configurations
Key: IGNITE-24791
URL: https://issues.apache.org/jira/browse/IGNITE-24791
Project: Ignite
Issue Type: Improvement
Reporter: Philipp Shergalis
We have a lot of timeouts without validations / partial validations. I.e:
{code:java}
/** * Timeout value (in milliseconds) for which the Raft client will try to
receive a successful response from a remote peer. */
@Value(hasDefault = true)
public long retryTimeout = 10_000;{code}
1) Timeouts must be positive
2) Timeouts are often used with subtractPhysicalTime(). Argument must be less
than 2^48 (PHYSICAL_TIME_BITS_SIZE = 48)
{code:java}
public HybridTimestamp subtractPhysicalTime(long millis) {
if (millis >= (1L << PHYSICAL_TIME_BITS_SIZE)) {
throw new IllegalArgumentException("Physical time is out of bounds: " + millis);
}
return new HybridTimestamp(time - (millis << LOGICAL_TIME_BITS_SIZE));
}{code}
3) Subtracting a timeout from clock.now() should not cause "Time is out of
bounds" exception
{code:java}
private HybridTimestamp(long time) {
this.time = time;
// Negative time breaks comparison, we don't allow overflow of the physical
time.
// "0" is a reserved value for "NULL_HYBRID_TIMESTAMP".
if (time <= 0) {
throw new IllegalArgumentException("Time is out of bounds: " + time);
}
}{code}
At leastÂ
{code:java}
@Range(min = 1, max = 1L << PHYSICAL_TIME_BITS_SIZE - 1){code}
should be added for timeout configurations
--
This message was sent by Atlassian Jira
(v8.20.10#820010)