Skip to content

Conversation

@darrnshn
Copy link
Contributor

@darrnshn darrnshn commented Jul 4, 2016

This was a major refactor to make the comms system faster 🚀

Major Changes:

  • Renamed worker to agent and minion to worker.
  • We now use a binary protocol for all messages.
  • Extracted cpp worker to its own separate repo.
  • Requesters cannot specify job types. Batch jobs uses all job types.
  • Single address for messages. Before, we used a vector<string> for messages, but we never actually needed more than one address.
  • Heartbeats
    • Heartbeats are negotiated with a HELLO/WELCOME exchange. Before, there were 3 magic numbers for heartbeat settings per router. Now it's only 1 number: how long before a timeout. Poll rates are automatically determined from the heartbeat timeouts.
    • Heartbeats run in the same thread as the rest. Less context switches and no need for running flag.
    • Heartbeats run at the socket level, so it's somewhat transparent.
  • Routers now use CRTP to statically dispatch messages to message handlers. No more router.binds.
  • Added lots of tests. The interfaces are also more testable now.

Stuff left to do:

  • Job types for agent.
  • Add tests for heartbeating
  • Add tests for timeouts
  • Add tests for sad paths for delegator and agent
  • Simpler job scheduling
  • Add server bin
  • Remove ununsed files
  • Remove zmq_addon since we don't use it that much.
  • Use meta::apply for router poll to avoid function lookup.
  • Syntactic sugar for serialising and deserialising.

@darrnshn darrnshn added this to the 0.3 Release milestone Jul 4, 2016
Use HDF5 as output format
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants