Someone investigated it some time ago. You might be interested in this: https://github.com/akka/akka/issues/13962
On Wed, Dec 2, 2015 at 4:48 AM, Harit Himanshu < [email protected]> wrote: > hmm, interesting, I will probably test it again in sometime and update the > results here. Thanks a lot Patrik > > On Tue, Dec 1, 2015 at 10:41 AM, Patrik Nordwall < > [email protected]> wrote: > >> Leveldb doesn't delete immediately. It will be done by a delayed >> (sometimes long) compaction process. >> /Patrik >> sön 29 nov. 2015 kl. 16:10 skrev Harit Himanshu < >> [email protected]>: >> >>> Hello there >>> >>> This is interesting as I was learning about snapshotting and deleting >>> messages in Akka-Persistence. I ran the same class with and without the line >>> >>> deleteMessages(metadata.sequenceNr - eventDeleteOffset) >>> >>> in the following code. I am running this with leveldb. The following are >>> the results - first without deleting messages and then after deleting >>> messages >>> >>> Harits-MacBook-Pro-2:akka101 harit$ sbt clean >>> [info] Loading project definition from >>> /Users/harit/IdeaProjects/akka101/project >>> [info] Set current project to akka101 (in build >>> file:/Users/harit/IdeaProjects/akka101/) >>> [success] Total time: 1 s, completed Nov 29, 2015 7:00:30 AM >>> Harits-MacBook-Pro-2:akka101 harit$ ls -ltr target/example/snapshots/; >>> ls -ltr target/example/journal/ >>> total 1544 >>> -rw-r--r-- 1 harit staff 789102 Nov 29 07:01 >>> snapshot-snapshot-persistence-id-100000-1448809284249 >>> total 39808 >>> -rw-r--r-- 1 harit staff 0 Nov 29 07:00 LOCK >>> -rw-r--r-- 1 harit staff 16 Nov 29 07:00 CURRENT >>> -rw-r--r-- 1 harit staff 3780054 Nov 29 07:01 000005.sst >>> -rw-r--r-- 1 harit staff 3782685 Nov 29 07:01 000007.sst >>> -rw-r--r-- 1 harit staff 3782685 Nov 29 07:01 000009.sst >>> -rw-r--r-- 1 harit staff 3782686 Nov 29 07:01 000011.sst >>> -rw-r--r-- 1 harit staff 1048576 Nov 29 07:01 MANIFEST-000002 >>> -rw-r--r-- 1 harit staff 4194304 Nov 29 07:01 000010.log >>> >>> Harits-MacBook-Pro-2:akka101 harit$ sbt clean >>> [info] Loading project definition from >>> /Users/harit/IdeaProjects/akka101/project >>> [info] Set current project to akka101 (in build >>> file:/Users/harit/IdeaProjects/akka101/) >>> [success] Total time: 0 s, completed Nov 29, 2015 7:02:03 AM >>> >>> Harits-MacBook-Pro-2:akka101 harit$ ls -ltr target/example/snapshots/; >>> ls -ltr target/example/journal/ >>> total 1544 >>> -rw-r--r-- 1 harit staff 789102 Nov 29 07:02 >>> snapshot-snapshot-persistence-id-100000-1448809373502 >>> total 40224 >>> -rw-r--r-- 1 harit staff 0 Nov 29 07:02 LOCK >>> -rw-r--r-- 1 harit staff 16 Nov 29 07:02 CURRENT >>> -rw-r--r-- 1 harit staff 3780054 Nov 29 07:02 000005.sst >>> -rw-r--r-- 1 harit staff 3782685 Nov 29 07:02 000007.sst >>> -rw-r--r-- 1 harit staff 3782685 Nov 29 07:02 000009.sst >>> -rw-r--r-- 1 harit staff 3782686 Nov 29 07:02 000011.sst >>> -rw-r--r-- 1 harit staff 378 Nov 29 07:03 MANIFEST-000002 >>> -rw-r--r-- 1 harit staff 5451539 Nov 29 07:03 000010.log >>> Harits-MacBook-Pro-2:akka101 harit$ >>> >>> >>> To my surprise, I found out that the file sizes are almost similar, even >>> after deleting the most of the data >>> >>> snapshot saved. seqNum:100000, timeStamp:1448809373502 >>> message deleted till sequenceNumber: 99990 >>> >>> I may be making mistake since I am new to this. I wanted to learn about >>> >>> - What is that I am doing wrong? >>> - What is the best way to test if deleteMessages is actually working >>> rather than checking file sizes manually >>> >>> Thanks everyone. >>> >>> My complete code is >>> >>> import akka.actor.{Props, ActorSystem, ActorLogging} >>> import akka.event.LoggingReceive >>> import akka.persistence._ >>> >>> case class Command(data: String) >>> >>> case class Event(data: String) >>> >>> case object InternalState >>> >>> case object TakeSnapshot >>> >>> case object ShutDown >>> >>> case object Fail >>> >>> case class State(queue: List[String] = Nil) { >>> def updated(event: Event): State = copy(event.data :: queue) >>> >>> def size: Int = queue.length >>> >>> override def toString: String = queue.reverse.toString >>> } >>> >>> class PersistentSnapshotActor extends PersistentActor with ActorLogging { >>> override def persistenceId = "snapshot-persistence-id" >>> >>> val eventDeleteOffset = 10 // this is to make sure we have some past >>> events >>> var state = State() >>> >>> def updateState(event: Event) = state = state.updated(event) >>> >>> def numberOfEvents = state.size >>> >>> def receiveRecover = LoggingReceive { >>> case event: Event => updateState(event) >>> case SnapshotOffer(_, snapshot: State) => >>> println(s"offered state: $snapshot") >>> state = snapshot >>> } >>> >>> def receiveCommand = LoggingReceive { >>> case Command(data) => persist(Event(data))(updateState) >>> case Fail => throw new Exception("killing persistent actor.") >>> case ShutDown => context.stop(self) >>> case InternalState => println(state) >>> case TakeSnapshot => saveSnapshot(state) >>> case SaveSnapshotSuccess(metadata) => >>> println(s"snapshot saved. seqNum:${metadata.sequenceNr}, >>> timeStamp:${metadata.timestamp}") >>> deleteMessages(metadata.sequenceNr - eventDeleteOffset) >>> >>> case SaveSnapshotFailure(_, reason) => println(s"failed to save >>> snapshot: $reason") >>> case DeleteMessagesSuccess(toSequenceNr) => println(s"message >>> deleted till sequenceNumber: $toSequenceNr") >>> case DeleteMessagesFailure(reason, toSequenceNr) => println(s"Error >>> in deleting message till sequenceNr $toSequenceNr: $reason") >>> } >>> } >>> >>> object PersistentSnapshotActorApp extends App { >>> val system = ActorSystem("snapshotSystem") >>> val persistentActor = system.actorOf(Props[PersistentSnapshotActor], >>> "persistentSnapshotActor") >>> >>> for (i <- 1 to 100000) { >>> persistentActor ! Command(i.toString) >>> } >>> persistentActor ! TakeSnapshot >>> persistentActor ! InternalState >>> Thread.sleep(60000) >>> system.terminate() >>> } >>> >>> My configuration looks like >>> >>> akka.persistence.journal.plugin = "akka.persistence.journal.leveldb" >>> akka.persistence.snapshot-store.plugin = >>> "akka.persistence.snapshot-store.local" >>> >>> akka.persistence.journal.leveldb.dir = "target/example/journal" >>> akka.persistence.snapshot-store.local.dir = "target/example/snapshots" >>> >>> # DO NOT USE THIS IN PRODUCTION !!! >>> # See also https://github.com/typesafehub/activator/issues/287 >>> akka.persistence.journal.leveldb.native = false >>> >>> -- >>> >>>>>>>>>> Read the docs: http://akka.io/docs/ >>> >>>>>>>>>> Check the FAQ: >>> http://doc.akka.io/docs/akka/current/additional/faq.html >>> >>>>>>>>>> Search the archives: >>> https://groups.google.com/group/akka-user >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Akka User List" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/akka-user. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> >>>>>>>>>> Read the docs: http://akka.io/docs/ >> >>>>>>>>>> Check the FAQ: >> http://doc.akka.io/docs/akka/current/additional/faq.html >> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "Akka User List" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/akka-user/aRFIzlw8X80/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/akka-user. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > >>>>>>>>>> Read the docs: http://akka.io/docs/ > >>>>>>>>>> Check the FAQ: > http://doc.akka.io/docs/akka/current/additional/faq.html > >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user > --- > You received this message because you are subscribed to the Google Groups > "Akka User List" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/akka-user. > For more options, visit https://groups.google.com/d/optout. > -- Patrik Nordwall Typesafe <http://typesafe.com/> - Reactive apps on the JVM Twitter: @patriknw -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
