Skip to content

Commit

Permalink
[ETCM-177] Remove manual removal for ommers pool
Browse files Browse the repository at this point in the history
  • Loading branch information
mirkoAlic committed Oct 19, 2020
1 parent 8c4496b commit c86cbd5
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 62 deletions.
Expand Up @@ -13,7 +13,7 @@ import io.iohk.ethereum.ledger._
import io.iohk.ethereum.mpt.MerklePatriciaTrie.MissingNodeException
import io.iohk.ethereum.network.PeerId
import io.iohk.ethereum.network.p2p.messages.CommonMessages.NewBlock
import io.iohk.ethereum.ommers.OmmersPool.{AddOmmers, RemoveOmmers}
import io.iohk.ethereum.ommers.OmmersPool.AddOmmers
import io.iohk.ethereum.transactions.PendingTransactionsManager
import io.iohk.ethereum.transactions.PendingTransactionsManager.{AddUncheckedTransactions, RemoveTransactions}
import io.iohk.ethereum.utils.Config.SyncConfig
Expand Down Expand Up @@ -232,7 +232,6 @@ class BlockImporter(
blocksRemoved.foreach(block => pendingTransactionsManager ! AddUncheckedTransactions(block.body.transactionList))

blocksAdded.foreach { block =>
ommersPool ! RemoveOmmers(block.header :: block.body.uncleNodesList.toList)
pendingTransactionsManager ! RemoveTransactions(block.body.transactionList)
}
}
Expand Down
13 changes: 1 addition & 12 deletions src/main/scala/io/iohk/ethereum/ommers/OmmersPool.scala
Expand Up @@ -4,7 +4,7 @@ import akka.util.ByteString
import akka.actor.{Actor, ActorLogging, Props}
import org.bouncycastle.util.encoders.Hex
import io.iohk.ethereum.domain.{BlockHeader, Blockchain}
import io.iohk.ethereum.ommers.OmmersPool.{AddOmmers, GetOmmers, RemoveOmmers}
import io.iohk.ethereum.ommers.OmmersPool.{AddOmmers, GetOmmers}
import scala.annotation.tailrec

class OmmersPool(blockchain: Blockchain, ommersPoolSize: Int, ommerGenerationLimit: Int, returnedOmmersSizeLimit: Int)
Expand All @@ -18,11 +18,6 @@ class OmmersPool(blockchain: Blockchain, ommersPoolSize: Int, ommerGenerationLim
ommersPool = (ommers ++ ommersPool).take(ommersPoolSize).distinct
logStatus(event = "Ommers after add", ommers = ommersPool)

case RemoveOmmers(ommers) =>
val toDelete = ommers.map(_.hash).toSet
ommersPool = ommersPool.filter(b => !toDelete.contains(b.hash))
logStatus(event = "Ommers after remove", ommers = ommersPool)

case GetOmmers(parentBlockHash) =>
val ancestors = collectAncestors(parentBlockHash, ommerGenerationLimit)
val ommers = ommersPool
Expand Down Expand Up @@ -81,12 +76,6 @@ object OmmersPool {
def apply(b: BlockHeader*): AddOmmers = AddOmmers(b.toList)
}

case class RemoveOmmers(ommers: List[BlockHeader])

object RemoveOmmers {
def apply(b: BlockHeader*): RemoveOmmers = RemoveOmmers(b.toList)
}

case class GetOmmers(parentBlockHash: ByteString)

case class Ommers(headers: Seq[BlockHeader])
Expand Down
Expand Up @@ -19,7 +19,6 @@ import io.iohk.ethereum.domain.BlockHeaderImplicits._
import io.iohk.ethereum.network.p2p.messages.PV62._
import io.iohk.ethereum.network.p2p.messages.PV63.{GetNodeData, NodeData}
import io.iohk.ethereum.network.{EtcPeerManagerActor, Peer, PeerEventBusActor}
import io.iohk.ethereum.ommers.OmmersPool.RemoveOmmers
import io.iohk.ethereum.utils.Config.SyncConfig
import org.scalamock.scalatest.MockFactory
import org.scalatest.BeforeAndAfterEach
Expand Down Expand Up @@ -404,13 +403,6 @@ class RegularSyncSpec
case _ => false
}
}
"update ommers for imported block" in new OnTopFixture(testSystem) {
goToTop()

sendNewBlock()

ommersPool.expectMsg(RemoveOmmers(newBlock.header :: newBlock.body.uncleNodesList.toList))
}
"fetch hashes if received NewHashes message" in new OnTopFixture(testSystem) {
goToTop()

Expand Down Expand Up @@ -478,14 +470,6 @@ class RegularSyncSpec
case _ => false
}
}

"update ommers after successful import" in new OnTopFixture(testSystem) {
goToTop()

regularSync ! RegularSync.MinedBlock(newBlock)

ommersPool.expectMsg(RemoveOmmers(newBlock.header :: newBlock.body.uncleNodesList.toList))
}
}
}

Expand Down
33 changes: 1 addition & 32 deletions src/test/scala/io/iohk/ethereum/ommers/OmmersPoolSpec.scala
Expand Up @@ -5,7 +5,7 @@ import akka.testkit.{TestProbe, TestKit, ImplicitSender}
import io.iohk.ethereum.Fixtures.Blocks.Block3125369
import io.iohk.ethereum.Timeouts
import io.iohk.ethereum.domain.BlockchainImpl
import io.iohk.ethereum.ommers.OmmersPool.{AddOmmers, GetOmmers, RemoveOmmers}
import io.iohk.ethereum.ommers.OmmersPool.{AddOmmers, GetOmmers}
import io.iohk.ethereum.WithActorSystemShutDown
import org.scalamock.scalatest.MockFactory
import org.scalatest.freespec.AnyFreeSpecLike
Expand Down Expand Up @@ -137,37 +137,6 @@ class OmmersPoolSpec
}

}

"removes ommers properly" in new TestSetup {

/**
* 00 --> 11 --> 21 --> [31] (chain1)
* \ \ \-> (XX) (chain3)
* \ \--> (22) --> 32 (chain2)
* \-> 14 (chain4)
* [] new block, reference!
* () ommer given the new block
* XX removed block
*/
(blockchain.getBlockHeaderByHash _).expects(block2Chain1.hash).returns(Some(block2Chain1))
(blockchain.getBlockHeaderByHash _).expects(block1Chain1.hash).returns(Some(block1Chain1))
(blockchain.getBlockHeaderByHash _).expects(block0.hash).returns(Some(block0))

ommersPool ! AddOmmers(
block0,
block1Chain1,
block2Chain1,
block1Chain4,
block2Chain2,
block3Chain2,
block3Chain3
)

ommersPool ! RemoveOmmers(block3Chain3)

ommersPool ! GetOmmers(block3Chain1.parentHash)
expectMsg(Timeouts.normalTimeout, OmmersPool.Ommers(Seq(block2Chain2)))
}
}

trait TestSetup extends MockFactory {
Expand Down

0 comments on commit c86cbd5

Please sign in to comment.