Skip to content

start-message-move-task crashes the server #1041

@catpreneur

Description

@catpreneur

Related: #987

First - thank you for implementing the redrive actions. It was such a great help!!

I just had a chance to start using them and I ran into a bug

I have two queues, one is dead-letters, the other is default

image

My conf

include classpath("application.conf")

messages-storage {
  enabled = true
}

queues {
  default {
    defaultVisibilityTimeout = 10 seconds
    # delay = 5 seconds
    receiveMessageWait = 0 seconds
    deadLettersQueue {
      name = "dead-letters"
      maxReceiveCount = 3 # from 1 to 1000
    }
    fifo = false
    contentBasedDeduplication = false
  }
  dead-letters { }
}

When I try to run the following

aws sqs start-message-move-task --endpoint-url http://localhost:9324 --source-arn arn:aws:sqs:elasticmq:000000000000:dead-letters --destination-arn arn:aws:sqs:elasticmq:000000000000:default

The server crashes with the following logs



elasticmq-1  | Uncaught error from thread [elasticmq-pekko.actor.default-dispatcher-8]: null, shutting down JVM since 'pekko.jvm-exit-on-fatal-error' is enabled for ActorSystem[elasticmq]
elasticmq-1  | java.lang.ExceptionInInitializerError
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskDirectives.$anonfun$startMessageMoveTask$1(StartMessageMoveTaskDirectives.scala:21)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$.$anonfun$addByNameNullaryApply$2(Directive.scala:184)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$.$anonfun$Empty$1(Directive.scala:170)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$$anon$1.tapply(Directive.scala:165)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$.$anonfun$addByNameNullaryApply$1(Directive.scala:184)
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskDirectives.startMessageMoveTask(StartMessageMoveTaskDirectives.scala:20)
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskDirectives.startMessageMoveTask$(StartMessageMoveTaskDirectives.scala:19)
elasticmq-1  | 	at org.elasticmq.rest.sqs.TheSQSRestServerBuilder$$anon$1.startMessageMoveTask(SQSRestServerBuilder.scala:144)
elasticmq-1  | 	at org.elasticmq.rest.sqs.TheSQSRestServerBuilder.rawRoutes$1(SQSRestServerBuilder.scala:217)
elasticmq-1  | 	at org.elasticmq.rest.sqs.TheSQSRestServerBuilder.$anonfun$start$8(SQSRestServerBuilder.scala:244)
elasticmq-1  | 	at org.elasticmq.rest.sqs.directives.AnyParamDirectives.$anonfun$anyParamsMap$3(AnyParamDirectives.scala:76)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.util.ApplyConverterInstances$$anon$1.$anonfun$apply$1(ApplyConverterInstances.scala:23)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.ConjunctionMagnet$$anon$2.$anonfun$apply$3(Directive.scala:255)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.directives.BasicDirectives.$anonfun$mapRouteResult$2(BasicDirectives.scala:80)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.directives.FutureDirectives.$anonfun$onComplete$3(FutureDirectives.scala:47)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.util.FastFuture$.$anonfun$transformWith$1(FastFuture.scala:45)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.util.FastFuture$.strictTransform$1(FastFuture.scala:49)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.util.FastFuture$.$anonfun$transformWith$3(FastFuture.scala:59)
elasticmq-1  | 	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:484)
elasticmq-1  | 	at org.apache.pekko.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:73)
elasticmq-1  | 	at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:110)
elasticmq-1  | 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
elasticmq-1  | 	at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)
elasticmq-1  | 	at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:110)
elasticmq-1  | 	at org.apache.pekko.dispatch.TaskInvocation.run(AbstractDispatcher.scala:59)
elasticmq-1  | 	at org.apache.pekko.dispatch.ForkJoinExecutorConfigurator$PekkoForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:57)
elasticmq-1  | 	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
elasticmq-1  | 	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
elasticmq-1  | 	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
elasticmq-1  | 	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
elasticmq-1  | 	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
elasticmq-1  | 	at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
elasticmq-1  | 	at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
elasticmq-1  | Caused by: scala.MatchError: [Ljava.lang.String;@5155c82 (of class [Ljava.lang.String;)
elasticmq-1  | 	at spray.json.ProductFormatsInstances.jsonFormat3(ProductFormatsInstances.scala:68)
elasticmq-1  | 	at spray.json.ProductFormatsInstances.jsonFormat3$(ProductFormatsInstances.scala:67)
elasticmq-1  | 	at spray.json.DefaultJsonProtocol$.jsonFormat3(DefaultJsonProtocol.scala:30)
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskActionRequest$.<clinit>(StartMessageMoveTaskDirectives.scala:74)
elasticmq-1  | 	... 33 more
elasticmq-1  | 23:53:37.994 [elasticmq-pekko.actor.default-dispatcher-7] ERROR o.apache.pekko.actor.ActorSystemImpl - Uncaught error from thread [elasticmq-pekko.actor.default-dispatcher-8]: null, shutting down JVM since 'pekko.jvm-exit-on-fatal-error' is enabled for ActorSystem[elasticmq]
elasticmq-1  | java.lang.ExceptionInInitializerError: null
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskDirectives.$anonfun$startMessageMoveTask$1(StartMessageMoveTaskDirectives.scala:21)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$.$anonfun$addByNameNullaryApply$2(Directive.scala:184)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$.$anonfun$Empty$1(Directive.scala:170)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$$anon$1.tapply(Directive.scala:165)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.Directive$.$anonfun$addByNameNullaryApply$1(Directive.scala:184)
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskDirectives.startMessageMoveTask(StartMessageMoveTaskDirectives.scala:20)
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskDirectives.startMessageMoveTask$(StartMessageMoveTaskDirectives.scala:19)
elasticmq-1  | 	at org.elasticmq.rest.sqs.TheSQSRestServerBuilder$$anon$1.startMessageMoveTask(SQSRestServerBuilder.scala:144)
elasticmq-1  | 	at org.elasticmq.rest.sqs.TheSQSRestServerBuilder.rawRoutes$1(SQSRestServerBuilder.scala:217)
elasticmq-1  | 	at org.elasticmq.rest.sqs.TheSQSRestServerBuilder.$anonfun$start$8(SQSRestServerBuilder.scala:244)
elasticmq-1  | 	at org.elasticmq.rest.sqs.directives.AnyParamDirectives.$anonfun$anyParamsMap$3(AnyParamDirectives.scala:76)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.util.ApplyConverterInstances$$anon$1.$anonfun$apply$1(ApplyConverterInstances.scala:23)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.ConjunctionMagnet$$anon$2.$anonfun$apply$3(Directive.scala:255)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.directives.BasicDirectives.$anonfun$mapRouteResult$2(BasicDirectives.scala:80)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.server.directives.FutureDirectives.$anonfun$onComplete$3(FutureDirectives.scala:47)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.util.FastFuture$.$anonfun$transformWith$1(FastFuture.scala:45)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.util.FastFuture$.strictTransform$1(FastFuture.scala:49)
elasticmq-1  | 	at org.apache.pekko.http.scaladsl.util.FastFuture$.$anonfun$transformWith$3(FastFuture.scala:59)
elasticmq-1  | 	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:484)
elasticmq-1  | 	at org.apache.pekko.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:73)
elasticmq-1  | 	at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:110)
elasticmq-1  | 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
elasticmq-1  | 	at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)
elasticmq-1  | 	at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:110)
elasticmq-1  | 	at org.apache.pekko.dispatch.TaskInvocation.run(AbstractDispatcher.scala:59)
elasticmq-1  | 	at org.apache.pekko.dispatch.ForkJoinExecutorConfigurator$PekkoForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:57)
elasticmq-1  | 	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
elasticmq-1  | 	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
elasticmq-1  | 	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
elasticmq-1  | 	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
elasticmq-1  | 	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
elasticmq-1  | 	at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
elasticmq-1  | 	at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
elasticmq-1  | Caused by: scala.MatchError: [Ljava.lang.String;@5155c82 (of class [Ljava.lang.String;)
elasticmq-1  | 	at spray.json.ProductFormatsInstances.jsonFormat3(ProductFormatsInstances.scala:68)
elasticmq-1  | 	at spray.json.ProductFormatsInstances.jsonFormat3$(ProductFormatsInstances.scala:67)
elasticmq-1  | 	at spray.json.DefaultJsonProtocol$.jsonFormat3(DefaultJsonProtocol.scala:30)
elasticmq-1  | 	at org.elasticmq.rest.sqs.StartMessageMoveTaskActionRequest$.<clinit>(StartMessageMoveTaskDirectives.scala:74)
elasticmq-1  | 	... 33 common frames omitted
elasticmq-1  | 23:53:37.998 [Thread-1] INFO  org.elasticmq.server.Main$ - ElasticMQ server stopping ...
elasticmq-1  | 23:53:58.840 [elasticmq-pekko.actor.default-dispatcher-10] INFO  o.apache.pekko.actor.ActorSystemImpl - Request timeout encountered for request [POST / Strict(128 bytes)]
elasticmq-1  | 23:53:58.985 [elasticmq-pekko.actor.default-dispatcher-10] WARN  o.a.pekko.actor.CoordinatedShutdown - Could not addJvmShutdownHook, due to: Shutdown in progress
elasticmq-1  | 23:53:58.985 [elasticmq-pekko.actor.default-dispatcher-10] INFO  o.a.pekko.actor.CoordinatedShutdown - Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
elasticmq-1  | 23:53:59.031 [Thread-1] INFO  org.elasticmq.server.Main$ - === ElasticMQ server stopped ===
elasticmq-1 exited with code 255

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions