It's an interesting idea. That would solve the problem for
configuration files (or other external representations of a
configuration, like JMX or whatnot). As for the Java API, we could
model durations with java.time.Duration instances, so it would be

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

If the number of instances/allocations is a problem, we could apply
something like the Flyway pattern to cache the durations somewhere
inside configuration-related infrastructure code.

пн, 26 дек. 2022 г. в 21:12, Alexei Scherbakov <alexey.scherbak...@gmail.com>:
>
> What about specifying dimensions in config, like
>
> joinTimeout=5s
>
> Internally it is always stored in millis.
>
>
> пт, 23 дек. 2022 г. в 11:53, Pavel Tupitsyn <ptupit...@apache.org>:
>
> > Agree with the proposal.
> > Those properties go into config files (json/hocon), and it is difficult to
> > navigate to relevant docs from there.
> >
> > I would go with point 3 - longer suffixes like Millis - to make it
> > unambiguous.
> >
> > On Fri, Dec 23, 2022 at 10:06 AM Roman Puchkovskiy <
> > roman.puchkovs...@gmail.com> wrote:
> >
> > > 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?
> > >
> >
>
>
> --
>
> Best regards,
> Alexei Scherbakov

Reply via email to