prisma1 icon indicating copy to clipboard operation
prisma1 copied to clipboard

prisma on json field with empty\invalid content throws internal error

Open aldarund opened this issue 6 years ago • 0 comments

Describe the bug Invalid json in json field not handled properly To Reproduce

type Consultancy {
  id: ID! @id
  rates: Json
}
const { prisma } = require('./src/model/generated/prisma-client')
async function main () {
  const organizations = await prisma.consultancies()
  console.log(organizations)
}

main().catch(e => console.error(e))

Expected behavior Properly handled error with a proper error text.

Screenshots Maybe empty string should be interpreted as empty json too

Versions (please complete the following information):

  • Connector: Postgres
  • Prisma Server: 1.31-beta5
  • other dependencies: prisma-client 1.31-beta5

Additional context

{ Error: Whoops. Looks like an internal server error. Search your server logs for request ID: local:cjugveq4i002c0702agofn2s5
    at BatchedGraphQLClient.<anonymous> (C:\Dev\PycharmProjects\otechieapi\node_modules\http-link-dataloader\dist\src\BatchedGraphQLClient.js:77:35)
    at step (C:\Dev\PycharmProjects\otechieapi\node_modules\http-link-dataloader\dist\src\BatchedGraphQLClient.js:40:23)
    at Object.next (C:\Dev\PycharmProjects\otechieapi\node_modules\http-link-dataloader\dist\src\BatchedGraphQLClient.js:21:53)
    at fulfilled (C:\Dev\PycharmProjects\otechieapi\node_modules\http-link-dataloader\dist\src\BatchedGraphQLClient.js:12:58)
    at processTicksAndRejections (internal/process/next_tick.js:81:5) result: { data: null, errors: [ [Object] ], status: 200 } }
{"key":"error/unhandled","requestId":"local:cjugupkw800200702tsmga9mu","clientId":"default$default","payload":{"exception":"com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input\n at [Source: (String)\"\"; line: 1, column: 0]","query":"{\n  organizations {\n    consultancy {\n      rates\n    }\n  }\n}\n","variables":"{}","code":"0","stack_trace":"com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)\\n com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4133)\\n com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3959)\\n com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2264)\\n play.api.libs.json.jackson.JacksonJson$.parseJsValue(JacksonJson.scala:235)\\n play.api.libs.json.StaticBinding$.parseJsValue(StaticBinding.scala:16)\\n play.api.libs.json.Json$.parse(Json.scala:171)\\n com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$ResultSetExtensions$.getJsonGCValue$extension(JdbcExtensions.scala:84)\\n com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$ResultSetExtensions$.getGcValue$extension(JdbcExtensions.scala:70)\\n com.prisma.api.connector.jdbc.database.ResultSetReaders.$anonfun$readPrismaNode$1(ResultSetReaders.scala:29)\\n scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)\\n scala.collection.Iterator.foreach(Iterator.scala:937)\\n scala.collection.Iterator.foreach$(Iterator.scala:937)\\n scala.collection.AbstractIterator.foreach(Iterator.scala:1425)\\n scala.collection.IterableLike.foreach(IterableLike.scala:70)\\n scala.collection.IterableLike.foreach$(IterableLike.scala:69)\\n scala.collection.AbstractIterable.foreach(Iterable.scala:54)\\n scala.collection.TraversableLike.map(TraversableLike.scala:233)\\n scala.collection.TraversableLike.map$(TraversableLike.scala:226)\\n scala.collection.AbstractTraversable.map(Traversable.scala:104)\\n com.prisma.api.connector.jdbc.database.ResultSetReaders.readPrismaNode(ResultSetReaders.scala:29)\\n com.prisma.api.connector.jdbc.database.ResultSetReaders.$anonfun$readsPrismaNode$1(ResultSetReaders.scala:25)\\n com.prisma.slick.ReadsResultSet$$anon$1.read(ResultSetExtensions.scala:16)\\n com.prisma.slick.ResultSetExtensionsValueClasses$ResultSetExtensions2$.readWith$extension(ResultSetExtensions.scala:31)\\n com.prisma.api.connector.jdbc.database.NodeManyQueries.$anonfun$getNodes$2(NodeManyQueries.scala:20)\\n com.prisma.connector.shared.jdbc.SharedSlickExtensions.$anonfun$queryToDBIO$1(SharedSlickExtensions.scala:18)\\n com.prisma.connector.shared.jdbc.SharedSlickExtensions.$anonfun$jooqToDBIO$1(SharedSlickExtensions.scala:56)\\n slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:70)\\n slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:69)\\n slick.basic.BasicBackend$DatabaseDef$$anon$2.liftedTree1$1(BasicBackend.scala:275)\\n slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:275)\\n java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\\n java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\\n java.lang.Thread.run(Thread.java:748)","message":"No content to map due to end-of-input\n at [Source: (String)\"\"; line: 1, column: 0]"}}
com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
        at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
        at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4133)
        at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3959)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2264)
        at play.api.libs.json.jackson.JacksonJson$.parseJsValue(JacksonJson.scala:235)
        at play.api.libs.json.StaticBinding$.parseJsValue(StaticBinding.scala:16)
        at play.api.libs.json.Json$.parse(Json.scala:171)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$ResultSetExtensions$.getJsonGCValue$extension(JdbcExtensions.scala:84)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$ResultSetExtensions$.getGcValue$extension(JdbcExtensions.scala:70)
        at com.prisma.api.connector.jdbc.database.ResultSetReaders.$anonfun$readPrismaNode$1(ResultSetReaders.scala:29)
        at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
        at scala.collection.Iterator.foreach(Iterator.scala:937)
        at scala.collection.Iterator.foreach$(Iterator.scala:937)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
        at scala.collection.IterableLike.foreach(IterableLike.scala:70)
        at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
        at scala.collection.TraversableLike.map(TraversableLike.scala:233)
        at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
        at scala.collection.AbstractTraversable.map(Traversable.scala:104)
        at com.prisma.api.connector.jdbc.database.ResultSetReaders.readPrismaNode(ResultSetReaders.scala:29)
        at com.prisma.api.connector.jdbc.database.ResultSetReaders.$anonfun$readsPrismaNode$1(ResultSetReaders.scala:25)
        at com.prisma.slick.ReadsResultSet$$anon$1.read(ResultSetExtensions.scala:16)
        at com.prisma.slick.ResultSetExtensionsValueClasses$ResultSetExtensions2$.readWith$extension(ResultSetExtensions.scala:31)
        at com.prisma.api.connector.jdbc.database.NodeManyQueries.$anonfun$getNodes$2(NodeManyQueries.scala:20)
        at com.prisma.connector.shared.jdbc.SharedSlickExtensions.$anonfun$queryToDBIO$1(SharedSlickExtensions.scala:18)
        at com.prisma.connector.shared.jdbc.SharedSlickExtensions.$anonfun$jooqToDBIO$1(SharedSlickExtensions.scala:56)
        at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:70)
        at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:69)
        at slick.basic.BasicBackend$DatabaseDef$$anon$2.liftedTree1$1(BasicBackend.scala:275)
        at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:275)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

aldarund avatar Apr 14 '19 11:04 aldarund