Prisma1: Internal server errors for specific DateTime values

Created on 13 Jul 2018  路  3Comments  路  Source: prisma/prisma1

@jon-ht commented on Thu Jul 12 2018

Hi,

It seems that's not possible to use a datetime before 1970-01-01.

Here is my simplified request :

mutation {
  createPerson(
    data: {
      dateOfBirth: "1969-01-01T10:33:59.828Z"
    }
  ) {
    id
    dateOfBirth
  }
}
{
  "data": {
    "createPerson": null
  },
  "errors": [
    {
      "message": "Whoops. Looks like an internal server error. Search your server logs for request ID: local:api:cjjiw6k85002k076838g1qn78",
      "locations": [],
      "path": [
        "createDefunct"
      ],
      "requestId": "local:api:cjjiw6k85002k076838g1qn78"
    }
  ]
}

If I change datetime value by 1970-01-01T10:33:59.828Z, it works as expected

bu2-confirmed areengine

All 3 comments

Thanks @jon-ht, I can reproduce this error on 1.12-beta-1. However, your conclusion that dates before 1970 are not supported is not correct. Let me elaborate:

Works:

mutation b {
  createPerson(data: {
    dateOfBirth: "1969-01-01T10:33:59"
  }) {
    id
    dateOfBirth
  }
}

Doesn't work:

mutation a {
  createPerson(data: {
    dateOfBirth: "1969-01-01T10:33:59.828Z"
  }) {
    id
    dateOfBirth
  }
}

It seems that using the millisecond part (828Z in this example) is causing the error.
Here are the internal server error logs:

java.time.DateTimeException: Invalid value for NanoOfSecond (valid values 0 - 999999999): -172000000
        at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
        at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)
        at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:418)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$.jodaDateTimeToSqlTimestampUTC(JdbcExtensions.scala:33)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setLeafValue$extension(JdbcExtensions.scala:53)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setGcValue$extension(JdbcExtensions.scala:40)
        at com.prisma.api.connector.jdbc.extensions.SlickExtensionsValueClasses$PositionedParameterExtensions$.setGcValue$extension(SlickExtensions.scala:17)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4(NodeActions.scala:37)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4$adapted(NodeActions.scala:34)
        at scala.collection.immutable.List.foreach(List.scala:389)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3(NodeActions.scala:34)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3$adapted(NodeActions.scala:32)
        at com.prisma.api.connector.jdbc.database.BuilderBase.$anonfun$jooqToDBIO$1(BuilderBase.scala:86)
        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)
java.time.DateTimeException: Invalid value for NanoOfSecond (valid values 0 - 999999999): -172000000
        at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
        at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)
        at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:418)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$.jodaDateTimeToSqlTimestampUTC(JdbcExtensions.scala:33)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setLeafValue$extension(JdbcExtensions.scala:53)
        at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setGcValue$extension(JdbcExtensions.scala:40)
        at com.prisma.api.connector.jdbc.extensions.SlickExtensionsValueClasses$PositionedParameterExtensions$.setGcValue$extension(SlickExtensions.scala:17)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4(NodeActions.scala:37)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4$adapted(NodeActions.scala:34)
        at scala.collection.immutable.List.foreach(List.scala:389)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3(NodeActions.scala:34)
        at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3$adapted(NodeActions.scala:32)
        at com.prisma.api.connector.jdbc.database.BuilderBase.$anonfun$jooqToDBIO$1(BuilderBase.scala:86)
        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)
{"key":"error/unhandled","requestId":"local:api:cjjo2xnrz00200a14zev75twl","clientId":"r-2768$dev","payload":{"exception":"java.time.DateTimeException: Invalid value for
NanoOfSecond (valid values 0 - 999999999): -172000000","query":"mutation a {\n  createPerson(data: {dateOfBirth: \"1969-01-01T10:33:59.828Z\"}) {\n    id\n    dateOfBirth
\n  }\n}\n\nmutation b {\n  createPerson(data: {dateOfBirth: \"1969-01-01T10:33:59\"}) {\n    id\n    dateOfBirth\n  }\n}\n","variables":"{}","code":"0","stack_trace":"ja
va.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)\\n java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)\\n java.time.LocalDateTime.ofEpoc
hSecond(LocalDateTime.java:418)\\n com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$.jodaDateTimeToSqlTimestampUTC(JdbcExtensions.scala:33)\\n com.pris
ma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setLeafValue$extension(JdbcExtensions.scala:53)\\n com.prisma.api.connector.jdbc.
extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setGcValue$extension(JdbcExtensions.scala:40)\\n com.prisma.api.connector.jdbc.extensions.SlickExtensio
nsValueClasses$PositionedParameterExtensions$.setGcValue$extension(SlickExtensions.scala:17)\\n com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4(N
odeActions.scala:37)\\n com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4$adapted(NodeActions.scala:34)\\n scala.collection.immutable.List.foreach(
List.scala:389)\\n com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3(NodeActions.scala:34)\\n com.prisma.api.connector.jdbc.database.NodeActions.$a
nonfun$createNode$3$adapted(NodeActions.scala:32)\\n com.prisma.api.connector.jdbc.database.BuilderBase.$anonfun$jooqToDBIO$1(BuilderBase.scala:86)\\n slick.jdbc.SimpleJd
bcAction.run(StreamingInvokerAction.scala:70)\\n slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:69)\\n slick.basic.BasicBackend$DatabaseDef$$anon$2.liftedTr
ee1$1(BasicBackend.scala:275)\\n slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:275)\\n java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolE
xecutor.java:1149)\\n java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\\n java.lang.Thread.run(Thread.java:748)","message":"Invalid value f
or NanoOfSecond (valid values 0 - 999999999): -172000000"}}
[Bugsnag - local / testing] Error report: com.bugsnag.Report@169ab84a
        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)

Hello @marktani.

That's a good news ! I'm a bit confused about why 1970-01-01T10:33:59.828Z works and 1969-01-01T10:33:59.828Z doesn't. Thanks for your help :)

Ah good point, so this error does seem to only affect times pre 1970. 馃挕

Was this page helpful?
0 / 5 - 0 ratings

Related issues

sorenbs picture sorenbs  路  3Comments

MitkoTschimev picture MitkoTschimev  路  3Comments

schickling picture schickling  路  3Comments

tbrannam picture tbrannam  路  3Comments

hoodsy picture hoodsy  路  3Comments