Skip to content

Commit a608012

Browse files
committed
Use protobuf in networkdb core messages
Convert all networkdb core message types from go message types to protobuf message types. This faciliates future modification of the message structure without breaking backward compatibility. Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
1 parent 1fd218c commit a608012

8 files changed

Lines changed: 2578 additions & 215 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ check: ${build_image}.created
4747

4848
check-code:
4949
@echo "Checking code... "
50-
test -z "$$(golint ./... | tee /dev/stderr)"
50+
test -z "$$(golint ./... | grep -v .pb.go: | tee /dev/stderr)"
5151
go vet ./...
5252
@echo "Done checking code"
5353

networkdb/broadcast.go

Lines changed: 8 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,6 @@ import (
55
"github.com/hashicorp/serf/serf"
66
)
77

8-
type networkEventType uint8
9-
10-
const (
11-
networkJoin networkEventType = 1 + iota
12-
networkLeave
13-
)
14-
15-
type networkEventData struct {
16-
Event networkEventType
17-
LTime serf.LamportTime
18-
NodeName string
19-
NetworkID string
20-
}
21-
228
type networkEventMessage struct {
239
id string
2410
node string
@@ -37,15 +23,15 @@ func (m *networkEventMessage) Message() []byte {
3723
func (m *networkEventMessage) Finished() {
3824
}
3925

40-
func (nDB *NetworkDB) sendNetworkEvent(nid string, event networkEventType, ltime serf.LamportTime) error {
41-
nEvent := networkEventData{
42-
Event: event,
26+
func (nDB *NetworkDB) sendNetworkEvent(nid string, event NetworkEvent_Type, ltime serf.LamportTime) error {
27+
nEvent := NetworkEvent{
28+
Type: event,
4329
LTime: ltime,
4430
NodeName: nDB.config.NodeName,
4531
NetworkID: nid,
4632
}
4733

48-
raw, err := encodeMessage(networkEventMsg, &nEvent)
34+
raw, err := encodeMessage(MessageTypeNetworkEvent, &nEvent)
4935
if err != nil {
5036
return err
5137
}
@@ -58,24 +44,6 @@ func (nDB *NetworkDB) sendNetworkEvent(nid string, event networkEventType, ltime
5844
return nil
5945
}
6046

61-
type tableEventType uint8
62-
63-
const (
64-
tableEntryCreate tableEventType = 1 + iota
65-
tableEntryUpdate
66-
tableEntryDelete
67-
)
68-
69-
type tableEventData struct {
70-
Event tableEventType
71-
LTime serf.LamportTime
72-
NetworkID string
73-
TableName string
74-
NodeName string
75-
Value []byte
76-
Key string
77-
}
78-
7947
type tableEventMessage struct {
8048
id string
8149
tname string
@@ -96,9 +64,9 @@ func (m *tableEventMessage) Message() []byte {
9664
func (m *tableEventMessage) Finished() {
9765
}
9866

99-
func (nDB *NetworkDB) sendTableEvent(event tableEventType, nid string, tname string, key string, entry *entry) error {
100-
tEvent := tableEventData{
101-
Event: event,
67+
func (nDB *NetworkDB) sendTableEvent(event TableEvent_Type, nid string, tname string, key string, entry *entry) error {
68+
tEvent := TableEvent{
69+
Type: event,
10270
LTime: entry.ltime,
10371
NodeName: nDB.config.NodeName,
10472
NetworkID: nid,
@@ -107,7 +75,7 @@ func (nDB *NetworkDB) sendTableEvent(event tableEventType, nid string, tname str
10775
Value: entry.value,
10876
}
10977

110-
raw, err := encodeMessage(tableEventMsg, &tEvent)
78+
raw, err := encodeMessage(MessageTypeTableEvent, &tEvent)
11179
if err != nil {
11280
return err
11381
}

networkdb/cluster.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010

1111
"github.com/Sirupsen/logrus"
1212
"github.com/hashicorp/memberlist"
13-
"github.com/hashicorp/serf/serf"
1413
)
1514

1615
const reapInterval = 2 * time.Second
@@ -222,21 +221,13 @@ func (nDB *NetworkDB) gossip() {
222221
}
223222

224223
// Send the compound message
225-
if err := nDB.memberlist.SendToUDP(mnode, compound.Bytes()); err != nil {
224+
if err := nDB.memberlist.SendToUDP(mnode, compound); err != nil {
226225
logrus.Errorf("Failed to send gossip to %s: %s", mnode.Addr, err)
227226
}
228227
}
229228
}
230229
}
231230

232-
type bulkSyncMessage struct {
233-
LTime serf.LamportTime
234-
Unsolicited bool
235-
NodeName string
236-
Networks []string
237-
Payload []byte
238-
}
239-
240231
func (nDB *NetworkDB) bulkSyncTables() {
241232
var networks []string
242233
nDB.RLock()
@@ -331,8 +322,8 @@ func (nDB *NetworkDB) bulkSyncNode(networks []string, node string, unsolicited b
331322
}
332323

333324
params := strings.Split(path[1:], "/")
334-
tEvent := tableEventData{
335-
Event: tableEntryCreate,
325+
tEvent := TableEvent{
326+
Type: TableEventTypeCreate,
336327
LTime: entry.ltime,
337328
NodeName: entry.node,
338329
NetworkID: nid,
@@ -341,7 +332,7 @@ func (nDB *NetworkDB) bulkSyncNode(networks []string, node string, unsolicited b
341332
Value: entry.value,
342333
}
343334

344-
msg, err := encodeMessage(tableEventMsg, &tEvent)
335+
msg, err := encodeMessage(MessageTypeTableEvent, &tEvent)
345336
if err != nil {
346337
logrus.Errorf("Encode failure during bulk sync: %#v", tEvent)
347338
return false
@@ -356,15 +347,15 @@ func (nDB *NetworkDB) bulkSyncNode(networks []string, node string, unsolicited b
356347
// Create a compound message
357348
compound := makeCompoundMessage(msgs)
358349

359-
bsm := bulkSyncMessage{
350+
bsm := BulkSyncMessage{
360351
LTime: nDB.tableClock.Time(),
361352
Unsolicited: unsolicited,
362353
NodeName: nDB.config.NodeName,
363354
Networks: networks,
364-
Payload: compound.Bytes(),
355+
Payload: compound,
365356
}
366357

367-
buf, err := encodeMessage(bulkSyncMsg, &bsm)
358+
buf, err := encodeMessage(MessageTypeBulkSync, &bsm)
368359
if err != nil {
369360
return fmt.Errorf("failed to encode bulk sync message: %v", err)
370361
}

0 commit comments

Comments
 (0)