Prisma1: Prisma 1.34.7 breaks services with a service secret (token invalid)

Created on 28 Aug 2019  路  7Comments  路  Source: prisma/prisma1

Describe the bug
Prisma 1.34.7 breaks services with a service secret.

To Reproduce
Steps to reproduce the behavior:

  1. Deploy Prisma 1.34.7 (sample compose file):
version: '3'
services:
  prisma:
    image: prismagraphql/prisma:1.34.7
    restart: always
    ports:
      - "4466:4466"
    environment:
      PRISMA_CONFIG: |
        port: 4466
        databases:
          default:
            connector: mysql
            host: mysql
            port: 3306
            user: root
            password: prisma
            migrations: true
  mysql:
    image: mysql:5.7
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: prisma
    volumes:
      - data-mysql:/var/lib/mysql

volumes:
  data-mysql:
    driver: local
  1. Deploy a service with a secret, sample prisma.yml:
endpoint: http://localhost:4466
secret: devSecret
datamodel:
  - datamodel.prisma
  1. Run prisma token
  2. Explore the Prisma admin interface with this token or perform queries in the playground, which will return Your token is invalid. It might have expired or you might be using a token from a different project.

Reverting back to < 1.34.7 (e.g. 1.34.6) work fine.

Expected behavior
The query / actions work.

Versions (please complete the following information):

  • Connector: both Postgres and MySQL
  • Prisma Server: [e.g. 1.34.7]
  • prisma CLI: prisma/1.34.7 (windows-x64) node-v10.15.3
  • OS: Windows 10
bu2-confirmed kinbug

Most helpful comment

Fixed in 1.34.8

All 7 comments

Facing same issue, I'm downgrading to a prev version.

Experiencing the same issue

Prisma container logs output after docker-compose up

No log level set, defaulting to INFO.
[INFO] {} - Starting...
[INFO] {} - Start completed.
[INFO] {} - Starting...
[INFO] {} - Start completed.
[INFO] {} - Shutdown initiated...
[INFO] {} - Shutdown completed.
[INFO] Obtaining exclusive agent lock...
[INFO] Initializing workers...
[INFO] Successfully started 1 workers.
[INFO] Obtaining exclusive agent lock... Successful.
Server running on :4466
[INFO] Deployment worker initialization complete.

then after prisma deploy (from /prisma dir)

No log level set, defaulting to INFO.
[INFO] {} - Starting...
[INFO] {} - Start completed.
[INFO] {} - Starting...
[INFO] {} - Start completed.
[INFO] {} - Shutdown initiated...
[INFO] {} - Shutdown completed.
[INFO] Obtaining exclusive agent lock...
[INFO] Initializing workers...
[INFO] Successfully started 1 workers.
[INFO] Obtaining exclusive agent lock... Successful.
Server running on :4466
[INFO] Deployment worker initialization complete.
{"key":"error/handled","requestId":"local:ck1m5nrnz00020942nxyow038","payload":{"exception":"com.prisma.deploy.schema.InvalidToken: Authentication token is invalid: 'Authorization' header not provided","query":"{\n        listProjects {\n          name\n        }\n      }","variables":"{}","code":"3015","stack_trace":"com.prisma.deploy.server.auth.SymmetricManagementAuth.$anonfun$verify$1(SymmetricManagementAuth.scala:17)\\n scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)\\n scala.util.Try$.apply(Try.scala:209)\\n com.prisma.deploy.server.auth.SymmetricManagementAuth.verify(SymmetricManagementAuth.scala:15)\\n com.prisma.deploy.schema.SchemaBuilderImpl.verifyAuthOrThrow(SchemaBuilder.scala:297)\\n com.prisma.deploy.schema.SchemaBuilderImpl.$anonfun$listProjectsField$1(SchemaBuilder.scala:107)\\n sangria.execution.Resolver.resolveField(Resolver.scala:1024)\\n sangria.execution.Resolver.$anonfun$collectActionsPar$1(Resolver.scala:445)\\n scala.collection.TraversableOnce.$anonfun$foldLeft$1(TraversableOnce.scala:156)\\n scala.collection.TraversableOnce.$anonfun$foldLeft$1$adapted(TraversableOnce.scala:156)\\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.TraversableOnce.foldLeft(TraversableOnce.scala:156)\\n scala.collection.TraversableOnce.foldLeft$(TraversableOnce.scala:154)\\n scala.collection.AbstractTraversable.foldLeft(Traversable.scala:104)\\n sangria.execution.Resolver.collectActionsPar(Resolver.scala:439)\\n sangria.execution.Resolver.resolveFieldsPar(Resolver.scala:45)\\n sangria.execution.Executor.executeOperation(Executor.scala:155)\\n sangria.execution.Executor.$anonfun$execute$7(Executor.scala:97)\\n scala.concurrent.Future.$anonfun$flatMap$1(Future.scala:303)\\n scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:37)\\n scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)\\n akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)\\n akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:91)\\n scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)\\n scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:81)\\n akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:91)\\n akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)\\n akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:44)\\n akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)\\n akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)\\n akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)\\n akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)","message":"Authentication token is invalid: 'Authorization' header not provided"}}
[Debug] Initializing deployment worker for default@default
[Debug] Scheduling deployment for project default@default
[Debug] Applied migration for project default@default

I'm truly convinced that I didn't forget to put secret. I tried as env var and also tried to hardcode it to prisma and docker-compose files

Same here. This one screwed me up really hard yesterday. Lesson learned the hard way: update dependencies atomically and check! afterwards.

Yep we have just spent two days trying to get our head around this and only able to reproduce today.

UPDATE: We had to set the docker image to prismagraphql/prisma:1.34.6 and then node modules to use 1.34.6 and now everything is working again.

same here ... just fyi ... is there an eta on this?

We are looking into this. We will release a patch as soon as this is fixed.

Fixed in 1.34.8

Was this page helpful?
0 / 5 - 0 ratings

Related issues

tbrannam picture tbrannam  路  3Comments

Fi1osof picture Fi1osof  路  3Comments

akoenig picture akoenig  路  3Comments

schickling picture schickling  路  3Comments

marktani picture marktani  路  3Comments