Protocol Message Graph

Started by Agent Mover 19 years ago4 messages
#1Agent M
agentm@themactionfaction.com

I have created a directed graph using graphviz that shows the message
flow/event stream. Perhaps this will be helpful to someone. Of course,
corrections are also welcome.

http://www.themactionfaction.com/pg/PGXProtocol.dot
http://www.themactionfaction.org/pg/PGXProtocol.svg
http://www.themactionfaction.org/pg/PGXProtocol.pdf

(Messages in ellipses are sent from the server, rectangle message are
sent from the client.)

-M

¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬
AgentM
agentm@themactionfaction.com
¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬

#2Alvaro Herrera
alvherre@commandprompt.com
In reply to: Agent M (#1)
Re: Protocol Message Graph

Agent M wrote:

I have created a directed graph using graphviz that shows the message
flow/event stream. Perhaps this will be helpful to someone. Of course,
corrections are also welcome.

Interesting. I'm not sure how to read the graph however -- for example
what does it mean to have ReadyForQuery in both a rectangle and an
ellipse? What do the standalone boxes mean? (e.g. the SSLRequest and
CancelRequest? and why are they wrapped in two boxes? why
Close/CloseComplete appear from nowhere and they don't lead anywhere?)

Maybe it would make more sense to have a graph of states, and the edges
would indicate what messages are sent to change from one state to
another.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#3Agent M
agentm@themactionfaction.com
In reply to: Alvaro Herrera (#2)
Re: Protocol Message Graph

On Apr 23, 2006, at 6:43 PM, Alvaro Herrera wrote:

Agent M wrote:

I have created a directed graph using graphviz that shows the message
flow/event stream. Perhaps this will be helpful to someone. Of course,
corrections are also welcome.

Interesting. I'm not sure how to read the graph however -- for example
what does it mean to have ReadyForQuery in both a rectangle and an
ellipse? What do the standalone boxes mean? (e.g. the SSLRequest and
CancelRequest? and why are they wrapped in two boxes? why
Close/CloseComplete appear from nowhere and they don't lead anywhere?)

Maybe it would make more sense to have a graph of states, and the edges
would indicate what messages are sent to change from one state to
another.

I tried to group the messages by functionality: asynchronous, simple,
extended, copy, function, etc. Since ReadyForQuery shows up in multiple
modes, I put it in its own mode (hence the additional bounding box). I
agree that the graph isn't perfect, but I also ran up against certain
limitations in graphiz itself (e.g., only one level of subgraph is
supported). So it's useful as a guide, but it clearly isn't a state
machine.

-M

¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬
AgentM
agentm@themactionfaction.com
¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬ ¬

#4Simon Riggs
simon@2ndquadrant.com
In reply to: Alvaro Herrera (#2)
Re: Protocol Message Graph

On Sun, 2006-04-23 at 18:43 -0400, Alvaro Herrera wrote:

Agent M wrote:

I have created a directed graph using graphviz that shows the message
flow/event stream. Perhaps this will be helpful to someone. Of course,
corrections are also welcome.

Thats a good start.

Maybe it would make more sense to have a graph of states, and the edges
would indicate what messages are sent to change from one state to
another.

Yes, that would be better.

It would be good to do the same for LWLock states, to help check for
deadlock possibilities.

--
Simon Riggs
EnterpriseDB http://www.enterprisedb.com