These are chat archives for atomix/atomix
172.17.0.2, and what I see is all the partitions successfully applying
KeepAliveEntry, but that’s it
import sys inpath = sys.argv outpath = sys.argv match = sys.argv with open(inpath, 'r') as infile: with open(outpath, 'w+') as outfile: for line in infile: if match in line: outfile.write(line.split('|').strip(' /'))
python split_logs.py karaf.log karaf_clean.log partition-1
import sys inpath = sys.argv outpath = sys.argv match = sys.argv indent = 25 with open(inpath, 'r') as infile: with open(outpath, 'w+') as outfile: for line in infile: if match in line: split = line.split('|') cls = split.strip() log = split.strip(' /') buf = ''.join([' ' for i in range(indent - len(cls))]) outfile.write(cls + buf + log)
KeepAliveEntry. All that seems to be happening is many of the clients stop submitting operations to the cluster. It's not clear from the logs whether or not that's intentional. The last commands/queries/events from those clients are successful and seem to be correctly sequenced. So, they should have completed, but my only idea is that for some reason the client-side sequencer hangs, but it seems unlikely. All the indexes look correct and al the necessary information seems to have been received by clients. It simply seems as if the clients just stopped doing things.
@Experimentaluntil the new test framework is done and those more complex state machines are better tested.
6682 2017-02-11 10:04:33,146 | ERROR | sh for user onos | ShellUtil | 27 - org.apache.karaf.shell.console - 3.0.8 | Exception caught while executing command
2017-02-11 10:04:32,856 | DEBUG | ycat-client-io-1 | ClientSession | 90 - io.atomix.all - 1.0.1.SNAPSHOT | 86746 - Sending QueryRequest[session=86746, sequence=113, index=87281, query=InstanceQuery[resource=88, query=ResourceQuery[query=org.onosproje ct.store.primitives.resources.impl.AtomixLeaderElectorCommands$GetAllLeaderships@621542ce], consistency=null]]
Received QueryRequest[session=86746, sequence=113, index=87281, query=InstanceQuery[resource=88, query=ResourceQuery[query=org.onosproject.store.primitives.resources.impl.AtomixLeaderElectorCommands$GetAllLeaderships@63f92679], consistency=null]]
commandSequence=113and is successfully applied
commandSequencebe changed? just when a command is applied to the state machine?
So, with each command a client sends to the cluster, it increments a
sequence number in the
CommandRequest. That’s used for linearizable semantics. When the state machine applies a command, it will store the command’s output keyed by the
sequence number. Then, once the client gets a response for that command, it keeps track of the highest
commandSequence for which it received a response and sends that in
KeepAliveRequest so the state machines can remove the command output since the client has already seen it.
CommandRequest increments on each command from a client, and
KeepAliveRequest is incremented when the client receives a response for a command.