fluo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kenneth Mcfarland <kennethpaulmcfarl...@gmail.com>
Subject Oracle Server Javadoc
Date Fri, 22 Dec 2017 06:35:13 GMT
Here is what the oracle server says right now as from OracleServer.java:

 * Oracle server is the responsible for providing incrementing logical
timestamps to clients. It
 * should never give the same timestamp to two clients and it should always
provide an incrementing
 * timestamp.
 * <p>
 * If multiple oracle servers are run, they will choose a leader and
clients will automatically
 * connect to that leader. If the leader goes down, the client will
automatically fail over to the
 * next leader. In the case where an oracle fails over, the next oracle
will begin a new block of
 * timestamps.

I'd like to add some information to the first paragraph, and this might be
useful just because.
The conditions in the first paragraph create what is known as a strict
ordering [1].
There are 3 conditions for a strict ordering on a set, let S be a set:

1) irreflexive:  a < a is false for all a the timestamp gives out, TFAE: a
is unique, and a != a for any a in S

2) antisymmetric: if a < b then ! b < a, for all a,b in S. This is pretty
obvious but fundamental.

3) transitive: a < b and b < c then a < c, for all a,b,c in S. Again this
is intuitive. Note by 1 that a != b and b !=c (and to be silly a != c is
obvious), there must be three unique time stamps.

Another equivalent definition is 'strictly increasing' [3], 'monotonic
increasing' [2].

Calling the allocateTimestamp function strictly increasing or a strictly
increasing function is also a pretty intuitive and mathematically sound
statement. This would make precise what is being said in the first
paragraph. Please give comments if this is too much geek/math or if its ok.

[1] http://mathworld.wolfram.com/StrictOrder.html
[2] http://mathworld.wolfram.com/MonotoneIncreasing.html
[3] http://mathworld.wolfram.com/StrictlyIncreasingFunction.html

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message