Skip to content

Conversation

raboof
Copy link
Contributor

@raboof raboof commented Nov 2, 2018

Compatiblity note: MemberEvent is a sealed trait, so it is debatable whether
it is acceptable to introduce a new member.

Compatiblity note: MemberEvent is a sealed trait, so it is debatable whether
it is acceptable to introduce a new member.
@akka-ci akka-ci added the validating PR is currently being validated by Jenkins label Nov 2, 2018
@@ -317,6 +317,8 @@ object ClusterSingletonManager {
case state: CurrentClusterState ⇒ handleInitial(state)
case MemberUp(m) ⇒ add(m)
case MemberRemoved(m, _) ⇒ remove(m)
case MemberDowned(m) if m.uniqueAddress != cluster.selfUniqueAddress ⇒
remove(m)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is a too scary change.
Note that MemberDowned will happen immediately since Down is an external/user action, while in contrast MemberExited is after convergence on leader and such.
Let's ignore MemberDowned in singleton.

@@ -247,6 +247,7 @@ final class ClusterSingletonProxy(singletonManagerPath: String, settings: Cluste
case state: CurrentClusterState ⇒ handleInitial(state)
case MemberUp(m) ⇒ add(m)
case MemberExited(m) ⇒ remove(m)
case MemberDowned(m) ⇒ remove(m)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's skip it here also

@raboof
Copy link
Contributor Author

raboof commented Nov 2, 2018

Agreed, will change things to be more conservative.

I guess we could make this more compatible by making MemberLeft a normal class (with manual 'case class sugar') and make MemberDowned a subclass of MemberLeft. Not sure if worth it?

@akka-ci akka-ci added needs-attention Indicates a PR validation failure (set by CI infrastructure) and removed validating PR is currently being validated by Jenkins labels Nov 2, 2018
@akka-ci
Copy link

akka-ci commented Nov 2, 2018

Test FAILed.

@akka-ci akka-ci added validating PR is currently being validated by Jenkins needs-attention Indicates a PR validation failure (set by CI infrastructure) and removed needs-attention Indicates a PR validation failure (set by CI infrastructure) validating PR is currently being validated by Jenkins labels Nov 2, 2018
@akka-ci
Copy link

akka-ci commented Nov 2, 2018

Test FAILed.

Copy link
Contributor

@patriknw patriknw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@akka-ci akka-ci added tested PR that was successfully built and tested by Jenkins and removed needs-attention Indicates a PR validation failure (set by CI infrastructure) labels Nov 2, 2018
@akka-ci
Copy link

akka-ci commented Nov 2, 2018

Test PASSed.

@dwijnand
Copy link
Contributor

dwijnand commented Nov 4, 2018

Compatiblity note: MemberEvent is a sealed trait, so it is debatable whether
it is acceptable to introduce a new member.

In lightbend-labs/mima#200 I argue that it's a form of binary breakage, one that MiMa should warn against.

But in Montreal Adriaan didn't really agree with me, while Seth did, so current it's 2 vs 1. 😉

@raboof
Copy link
Contributor Author

raboof commented Nov 5, 2018

@dwijnand yes, I agree it'd be helpful if MiMa warned against it, but whether it is acceptable to ignore that warning is a harder question

@patriknw patriknw added the 2 - pick next Used to mark issues which are next up in the queue to be worked on. The tag is non-binding label Nov 5, 2018
Copy link
Contributor

@chbatey chbatey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@chbatey chbatey added this to the 2.5.18 milestone Nov 5, 2018
@chbatey chbatey merged commit 079aa46 into master Nov 5, 2018
@chbatey chbatey deleted the introduceMemberDownedEvent branch November 5, 2018 10:03
@dwijnand
Copy link
Contributor

dwijnand commented Nov 6, 2018

Btw, I got paranoid that https://github.com/lightbend/reactive-lib/blob/master/akka-cluster-bootstrap/src/main/scala/com/lightbend/rp/akkaclusterbootstrap/ClusterStatusCheck.scala would break from this. But that's MemberStatus, not MemberEvent.

So I checked and it doesn't look like there is any exhaustive pattern matching on MemberEvent in https://github.com/lightbend/reactive-lib or https://github.com/akka/akka-management (checked by searching for MemberEvent and MemberRemoved in GitHub search, to find case branches for it).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2 - pick next Used to mark issues which are next up in the queue to be worked on. The tag is non-binding tested PR that was successfully built and tested by Jenkins
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants