Opened 9 months ago

Closed 5 months ago

#5471 closed enhancement (complete)

HA: failover state machine (v6)

Reported by: tomek Owned by: marcin
Priority: medium Milestone: Kea1.4
Component: high-availability Version: git
Keywords: Cc:
CVSS Scoring: Parent Tickets:
Sensitive: no Defect Severity: N/A
Sub-Project: DHCP Feature Depending on Ticket:
Estimated Difficulty: 0 Add Hours to Ticket: 0
Total Hours: 0 Internal?: no

Description

This is a tricky one. It covers implementing failover state machine. For details, see HADesign, in particular HADesign.

For v4, see #5470.

Subtickets

Change History (7)

comment:1 Changed 5 months ago by marcin

  • Owner set to marcin
  • Status changed from new to accepted

comment:2 Changed 5 months ago by marcin

  • Owner changed from marcin to UnAssigned
  • Status changed from accepted to reviewing

This ticket is now ready for review. The changes to be reviewed are on the branch trac5471 of the premium repository. Until #5458 is merged, it MUST be built with branch trac5458a of the main repository!

Proposed ChangeLog:

XX.	[func]		marcin
	Implemented high availability state machine for the DHCPv6
	server.
	(Trac #5471, git cafe)

The state machine has been manually system tested.

comment:3 Changed 5 months ago by tmark

  • Owner changed from UnAssigned to tmark

comment:4 follow-up: Changed 5 months ago by tmark

  • Owner changed from tmark to marcin

Changes look good overall, unit tests (HA tests only) pass under Ubuntu 16.04.

I fixed some typos, please pull first

---

src/hooks/dhcp/high_availability/query_filter.cc

QueryFilter::loadBalance(const dhcp::Pkt6Ptr& query6)

This method returns a -1 to indicate an error but I did not see where
this would ever surface as error message. Granted a v6 packet should
always have a DUID and I'm assuming we would see that logged somewhere.
Help me out here, what does happen if there's no DUID?

(Similar construct in the v4 version, it returns -1 if there's no

client id or hwaddr)

I'm not sure there are unit tests for this.

comment:5 in reply to: ↑ 4 Changed 5 months ago by marcin

Replying to tmark:

Changes look good overall, unit tests (HA tests only) pass under Ubuntu 16.04.

I fixed some typos, please pull first

Thanks.

---

src/hooks/dhcp/high_availability/query_filter.cc

QueryFilter::loadBalance(const dhcp::Pkt6Ptr& query6)

This method returns a -1 to indicate an error but I did not see where
this would ever surface as error message. Granted a v6 packet should
always have a DUID and I'm assuming we would see that logged somewhere.
Help me out here, what does happen if there's no DUID?

(Similar construct in the v4 version, it returns -1 if there's no

client id or hwaddr)

I'm not sure there are unit tests for this.

Good point. I slightly modified the code and added some tests.

comment:6 Changed 5 months ago by tmark

Changes look good! Please merge.

comment:7 Changed 5 months ago by marcin

  • Resolution set to complete
  • Status changed from reviewing to closed

Merged with commit 0001d85645aeaf83b275e69d4dbec2ff2d15de82

Note: See TracTickets for help on using tickets.