Hi Igniters!

In Ignite 3, in configuration schemas, we have some properties that
define durations/intervals (usually, these are timeout durations).
Almost always they are defined without mentioning the duration unit,
like this:

/** Node join timeout. */
@Value(hasDefault = true)
public int joinTimeout = 5_000;

This makes a user puzzled about the unit of measure: it might be
milliseconds (as it often is), but who knows.
It seems beneficial to include the unit of measure in names of such
properties, like joinTimeoutMs or joinTimeoutMillis.

We might try to solve this via documentation, but, when a property
name speaks by itself, we don't need to reach for the documentation at
all, so it still seems better to have it in a name (and, if you edit a
config file, reaching for documentation might be a bit more
time-consuming than navigating to a method javadoc in an IDE).

We could do one of the following:

1. Do not change the naming schema, just improve the documentation; we
might also establish a strong convention of always having all
durations in the same unit (like milliseconds) [there is a
disadvantage: if we add a property that is naturally measured in, say,
hours, we would still have to use millis, which would make
configuration very cumbersome with all these zeros]
2. Use short suffixes (ns/ms/sec/min/hr/days): joinTimeoutMs. There is
a problem with microseconds if we ever need them (how do we abbreviate
it according to this style?)
3. Use longer suffixes (nanos/micros/millis/secs/mins/hours/days):
joinTimeoutMillis. A bit longer than the previous one.
4. ... or something else?

What do you think?

Reply via email to