Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Orders with spendAssetId == receiveAssetId cause the node to crash #109

Closed
PyWaves opened this issue Jan 15, 2017 · 1 comment
Closed

Orders with spendAssetId == receiveAssetId cause the node to crash #109

PyWaves opened this issue Jan 15, 2017 · 1 comment
Assignees

Comments

@PyWaves
Copy link

PyWaves commented Jan 15, 2017

Posting an order with spendAssetId equal to receiveAssetId causes the matcher and the node to crash with the following output:

2017-01-15 07:23:02 ERROR [t-dispatcher-26] c.w.actor.RootActorSystem$ - Root actor got exception, escalate
java.lang.IllegalArgumentException: requirement failed
at scala.Predef$.require(Predef.scala:212)
at scorex.transaction.assets.exchange.AssetPair.(AssetPair.scala:8)
at scorex.transaction.assets.exchange.Order.assetPair(Order.scala:43)
at com.wavesplatform.matcher.market.MatcherActor$$anonfun$forwardToOrderBook$1.applyOrElse(MatcherActor.scala:55)
at akka.actor.Actor$class.aroundReceive(Actor.scala:496)
at com.wavesplatform.matcher.market.MatcherActor.akka$persistence$Eventsourced$$super$aroundReceive(MatcherActor.scala:25)
at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:664)
at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)
at com.wavesplatform.matcher.market.MatcherActor.aroundReceive(MatcherActor.scala:25)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
at akka.actor.ActorCell.invoke(ActorCell.scala:495)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
at akka.dispatch.Mailbox.run(Mailbox.scala:224)
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2017-01-15 07:23:02 ERROR [t-dispatcher-23] a.a.LocalActorRefProvider(akka://wavesplatform) - guardian failed, shutting down system
java.lang.IllegalArgumentException: requirement failed
at scala.Predef$.require(Predef.scala:212)
at scorex.transaction.assets.exchange.AssetPair.(AssetPair.scala:8)
at scorex.transaction.assets.exchange.Order.assetPair(Order.scala:43)
at com.wavesplatform.matcher.market.MatcherActor$$anonfun$forwardToOrderBook$1.applyOrElse(MatcherActor.scala:55)
at akka.actor.Actor$class.aroundReceive(Actor.scala:496)
at com.wavesplatform.matcher.market.MatcherActor.akka$persistence$Eventsourced$$super$aroundReceive(MatcherActor.scala:25)
at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:664)
at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)
at com.wavesplatform.matcher.market.MatcherActor.aroundReceive(MatcherActor.scala:25)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
at akka.actor.ActorCell.invoke(ActorCell.scala:495)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
at akka.dispatch.Mailbox.run(Mailbox.scala:224)
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2017-01-15 07:23:02 ERROR [t-dispatcher-23] a.actor.OneForOneStrategy - requirement failed
java.lang.IllegalArgumentException: requirement failed
at scala.Predef$.require(Predef.scala:212)
at scorex.transaction.assets.exchange.AssetPair.(AssetPair.scala:8)
at scorex.transaction.assets.exchange.Order.assetPair(Order.scala:43)
at com.wavesplatform.matcher.market.MatcherActor$$anonfun$forwardToOrderBook$1.applyOrElse(MatcherActor.scala:55)
at akka.actor.Actor$class.aroundReceive(Actor.scala:496)
at com.wavesplatform.matcher.market.MatcherActor.akka$persistence$Eventsourced$$super$aroundReceive(MatcherActor.scala:25)
at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:664)
at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)
at com.wavesplatform.matcher.market.MatcherActor.aroundReceive(MatcherActor.scala:25)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
at akka.actor.ActorCell.invoke(ActorCell.scala:495)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
at akka.dispatch.Mailbox.run(Mailbox.scala:224)
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

I don't see a case where spendAssetId needs to be equal to receiveAssetId, so maybe spendAssetId != receiveAssetId should be added to the order validation rules.

@koloale koloale self-assigned this Jan 25, 2017
@koloale
Copy link
Contributor

koloale commented Jan 25, 2017

Fixed on Testnet.

@koloale koloale closed this as completed Jan 27, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants