Merge pull request #19644 from akka/wip-19637-fix-BC-AsyncWriteJournal-RK

This commit is contained in:
Roland Kuhn 2016-01-29 19:06:51 +01:00
commit a6aee310ba
3 changed files with 115 additions and 107 deletions

View file

@ -47,7 +47,6 @@ trait AsyncWriteJournal extends Actor with WriteJournalBase with AsyncRecovery {
private def isReplayFilterEnabled: Boolean = replayFilterMode != ReplayFilter.Disabled
private val replayFilterWindowSize: Int = config.getInt("replay-filter.window-size")
private val replayFilterMaxOldWriters: Int = config.getInt("replay-filter.max-old-writers")
private val replayDebugEnabled: Boolean = config.getBoolean("replay-filter.debug")
private val resequencer = context.actorOf(Props[Resequencer]())
private var resequencerCounter = 1L
@ -55,6 +54,10 @@ trait AsyncWriteJournal extends Actor with WriteJournalBase with AsyncRecovery {
final def receive = receiveWriteJournal.orElse[Any, Unit](receivePluginInternal)
final val receiveWriteJournal: Actor.Receive = {
// cannot be a val in the trait due to binary compatibility
val replayDebugEnabled: Boolean = config.getBoolean("replay-filter.debug")
{
case WriteMessages(messages, persistentActor, actorInstanceId)
val cctr = resequencerCounter
resequencerCounter += messages.foldLeft(0)((acc, m) acc + m.size) + 1
@ -159,6 +162,7 @@ trait AsyncWriteJournal extends Actor with WriteJournalBase with AsyncRecovery {
case _ if (publish) context.system.eventStream.publish(d)
}
}
}
//#journal-plugin-api
/**
@ -274,4 +278,3 @@ private[persistence] object AsyncWriteJournal {
}
}
}

View file

@ -30,6 +30,13 @@ private[akka] object ReplayFilter {
Props(new ReplayFilter(persistentActor, mode, windowSize, maxOldWriters, debugEnabled))
}
// for binary compatibility
def props(
persistentActor: ActorRef,
mode: Mode,
windowSize: Int,
maxOldWriters: Int): Props = props(persistentActor, mode, windowSize, maxOldWriters, debugEnabled = false)
sealed trait Mode
case object Fail extends Mode
case object Warn extends Mode
@ -46,6 +53,10 @@ private[akka] class ReplayFilter(persistentActor: ActorRef, mode: ReplayFilter.M
import JournalProtocol._
import ReplayFilter.{ Warn, Fail, RepairByDiscardOld, Disabled }
// for binary compatibility
def this(persistentActor: ActorRef, mode: ReplayFilter.Mode,
windowSize: Int, maxOldWriters: Int) = this(persistentActor, mode, windowSize, maxOldWriters, debugEnabled = false)
val buffer = new LinkedList[ReplayedMessage]()
val oldWriters = LinkedHashSet.empty[String]
var writerUuid = ""

View file

@ -590,12 +590,6 @@ object MiMa extends AutoPlugin {
// #19133 change in internal actor
ProblemFilters.exclude[MissingMethodProblem]("akka.remote.ReliableDeliverySupervisor.gated"),
// #19200 debug logging in ReplayFilter, change of internal actor
ProblemFilters.exclude[MissingMethodProblem]("akka.persistence.journal.ReplayFilter.this"),
ProblemFilters.exclude[MissingMethodProblem]("akka.persistence.journal.AsyncWriteJournal.akka$persistence$journal$AsyncWriteJournal$_setter_$akka$persistence$journal$AsyncWriteJournal$$replayDebugEnabled_="),
ProblemFilters.exclude[MissingMethodProblem]("akka.persistence.journal.AsyncWriteJournal.akka$persistence$journal$AsyncWriteJournal$$replayDebugEnabled"),
ProblemFilters.exclude[MissingMethodProblem]("akka.persistence.journal.ReplayFilter.props"),
// #18758 report invalid association events
ProblemFilters.exclude[MissingTypesProblem]("akka.remote.InvalidAssociation$"),
ProblemFilters.exclude[MissingMethodProblem]("akka.remote.InvalidAssociation.apply"),