Skip to content

masterKey function is not called on server start #10710

Description

@mtrezza

New Issue Checklist

Issue Description

If the Parse Server option masterKey is set to a function, the function is supposed to be called when Parse Server starts; ParseServer.start() in src/ParseServer.ts adds this.config.loadMasterKey?.() to the startup tasks. However, this.config is the plain options object returned by Config.put(), not a Config instance. It has no loadMasterKey method, so the optional call does nothing. This has been the case since setting masterKey to a function was added in #9582 (Parse Server 8.0.0).

As a result, the function is only called on the first request. If it fails, for example because a secret store is unavailable, Parse Server starts nonetheless and responds to every request with status 500, including the /health endpoint. Other startup tasks, such as the migration of the schema option or the connection of the cache adapter, make the start fail instead.

Steps to reproduce

  1. Start Parse Server with masterKey: () => Promise.reject(new Error('secret store unavailable')), and await ParseServer.start().
  2. Send any request, for example GET /parse/health.

Actual Outcome

ParseServer.start() resolves; the masterKey function has not been called. The request fails with status 500 and {"code":1,"message":"Internal server error."}, and so does every following request.

Expected Outcome

The masterKey function is called when Parse Server starts, and ParseServer.start() rejects if the function fails.

Environment

Server

  • Parse Server version: 9.10.2-alpha.4 (alpha branch); since 8.0.0
  • Operating system: any
  • Local or remote host: any

Database

  • System: any
  • Database version: any
  • Local or remote host: any

Client

  • SDK: any
  • SDK version: any

Logs

Not applicable

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    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