Uploaded image for project: 'Clowder'
  1. Clowder
  2. CATS-922

POST /api/extractors should validate document

XMLWordPrintableJSON

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Normal Normal
    • None
    • None
    • API

      We had an extractor accidentally write the wrong extroctor json definition to Clowder. It was accepted fine but when querying for the list of extractors we got the error below. For some reason the serialization for the ExtractorInfo model was fine with that particular document when writing to mongo but not when querying.

      bing can you add the JSON document that was posted and created the issue to this description?

      This is the result of /api/extractors endpoint in Clowder

      "@7953m0381: Execution exception in null:null\n at play.api.Application$class.handleError(Application.scala:293)\n at play.api.DefaultApplication.handleError(Application.scala:399)\n at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$13$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:170)\n at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$13$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:167)\n at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)\n at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:185)\n at scala.util.Try$.apply(Try.scala:161)\n at scala.util.Failure.recover(Try.scala:185)\n at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324)\n at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324)\n at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)\n at play.api.libs.iteratee.Execution$$anon$1.execute(Execution.scala:43)\n at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)\n at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)\n at scala.concurrent.Promise$class.complete(Promise.scala:55)\n at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153)\n at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)\n at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)\n at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)\n at play.api.libs.iteratee.Execution$$anon$2.execute(Execution.scala:70)\n at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)\n at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)\n at scala.concurrent.Promise$class.complete(Promise.scala:55)\n at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153)\n at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)\n at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)\n at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)\n at play.api.libs.iteratee.Execution$$anon$2.execute(Execution.scala:70)\n at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)\n at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)\n at scala.concurrent.Promise$class.complete(Promise.scala:55)\n at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153)\n at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)\n at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)\n at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)\n at play.api.libs.iteratee.Execution$$anon$2.execute(Execution.scala:70)\n at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)\n at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)\n at scala.concurrent.Promise$class.complete(Promise.scala:55)\n at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153)\n at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:23)\n at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42)\n at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)\n at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)\n at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)\n at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)\n at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)\nCaused by: java.lang.IllegalArgumentException: BasicBSONList can only work with numeric keys, not: [dataset]\n at org.bson.types.BasicBSONList._getInt(BasicBSONList.java:161)\n at org.bson.types.BasicBSONList._getInt(BasicBSONList.java:152)\n at org.bson.types.BasicBSONList.get(BasicBSONList.java:104)\n at com.mongodb.casbah.commons.MongoDBObject.get(MongoDBObject.scala:79)\n at com.novus.salat.ConcreteGrater$$anonfun$5.apply(Grater.scala:263)\n at com.novus.salat.ConcreteGrater$$anonfun$5.apply(Grater.scala:259)\n at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)\n at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)\n at scala.collection.immutable.List.foreach(List.scala:318)\n at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)\n at scala.collection.AbstractTraversable.map(Traversable.scala:105)\n at com.novus.salat.ConcreteGrater.asObject(Grater.scala:259)\n at com.novus.salat.transformers.in.DBObjectToInContext$class.transform0(Injectors.scala:397)\n at com.novus.salat.transformers.in.DBObjectToInContext$class.transform(Injectors.scala:403)\n at com.novus.salat.transformers.in.package$$anon$36.transform(Injectors.scala:273)\n at com.novus.salat.transformers.Transformer$$anonfun$1.apply(Transformer.scala:97)\n at com.novus.salat.transformers.Transformer$$anonfun$1.apply(Transformer.scala:97)\n at scala.Option.flatMap(Option.scala:170)\n at com.novus.salat.transformers.Transformer.transform_$bang(Transformer.scala:97)\n at com.novus.salat.Field.in_$bang(Field.scala:64)\n at com.novus.salat.ConcreteGrater$$anonfun$5$$anonfun$apply$2.apply(Grater.scala:274)\n at com.novus.salat.ConcreteGrater$$anonfun$5$$anonfun$apply$2.apply(Grater.scala:274)\n at scala.Option.flatMap(Option.scala:170)\n at com.novus.salat.ConcreteGrater$$anonfun$5.apply(Grater.scala:274)\n at com.novus.salat.ConcreteGrater$$anonfun$5.apply(Grater.scala:259)\n at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)\n at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)\n at scala.collection.immutable.List.foreach(List.scala:318)\n at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)\n at scala.collection.AbstractTraversable.map(Traversable.scala:105)\n at com.novus.salat.ConcreteGrater.asObject(Grater.scala:259)\n at com.novus.salat.dao.SalatMongoCursorBase$class.next(SalatMongoCursor.scala:45)\n at com.novus.salat.dao.SalatMongoCursor.next(SalatMongoCursor.scala:156)\n at scala.collection.Iterator$class.foreach(Iterator.scala:727)\n at com.novus.salat.dao.SalatMongoCursor.foreach(SalatMongoCursor.scala:156)\n at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)\n at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:176)\n at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:45)\n at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)\n at com.novus.salat.dao.SalatMongoCursor.to(SalatMongoCursor.scala:156)\n at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:257)\n at com.novus.salat.dao.SalatMongoCursor.toList(SalatMongoCursor.scala:156)\n at services.mongodb.MongoDBExtractorService.listExtractorsInfo(MongoDBExtractorService.scala:137)\n at api.Extractions$$anonfun$listExtractors$1.apply(Extractions.scala:447)\n at api.Extractions$$anonfun$listExtractors$1.apply(Extractions.scala:446)\n at play.api.mvc.ActionBuilder$$anonfun$apply$10.apply(Action.scala:221)\n at play.api.mvc.ActionBuilder$$anonfun$apply$10.apply(Action.scala:220)\n at api.ApiController$$anon$4.invokeBlock(ApiController.scala:62)\n at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:309)\n at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:109)\n at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:109)\n at play.utils.Threads$.withContextClassLoader(Threads.scala:18)\n at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:108)\n at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:107)\n at scala.Option.map(Option.scala:145)\n at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:107)\n at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:100)\n at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:481)\n at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:481)\n at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:517)\n at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:517)\n at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:493)\n at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:493)\n at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)\n at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)\n ... 6 more\n"

              Unassigned Unassigned
              lmarini Luigi Marini
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: