Skip to content

Data Connect Emulator PostgreSQL initialization fails #8062

Description

@maylorsan

Firebase CLI Emulator Startup Issue

Environment Information

  • Firebase Tools Version: 13.29.0
  • NodeJS: 20.11.1
  • Platform: macOS
  • Project: codelab-dataconnect-web

Issue Description

The Firebase emulator fails to start with a runtime error when attempting to initialize the Data Connect emulator's PostgreSQL database.

Steps to Reproduce

  1. Clone the repository:
    git clone https://github.com/firebaseextended/codelab-dataconnect-web
    
  2. Navigate to the app directory and install dependencies:
    cd app
    npm i
    
  3. Start the Firebase emulators:
    firebase emulators:start
    

Expected Behavior

  • Firebase emulators should start successfully
  • Data Connect emulator should initialize properly with PostgreSQL database

Actual Behavior

The emulator fails to start with the following error:

RuntimeError: unreachable
    at wasm://wasm/0222924a:wasm-function[5692]:0x42e8d4
    at wasm://wasm/0222924a:wasm-function[5668]:0x429e8f
    at wasm://wasm/0222924a:wasm-function[2877]:0x25097d
    at Module._pg_initdb (/usr/local/lib/node_modules/firebase-tools/node_modules/@electric-sql/pglite/dist/index.cjs:12:118235)

Additional Notes

  • Multiple emulator instances warning was observed
  • The issue appears to be specific to the Data Connect emulator's PostgreSQL initialization
  • Full logs from running command with --debug flag:
[2024-12-13T17:31:06.104Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2024-12-13T17:31:06.105Z] > authorizing via signed-in user (some_email@gmail.com)
i  emulators: Starting emulators: auth, hosting, dataconnect {"metadata":{"emulator":{"name":"hub"},"message":"Starting emulators: auth, hosting, dataconnect"}}
[2024-12-13T17:31:06.599Z] [logging] Logging Emulator only supports listening on one address (127.0.0.1). Not listening on ::1
[2024-12-13T17:31:06.599Z] [auth] Authentication Emulator only supports listening on one address (127.0.0.1). Not listening on ::1
[2024-12-13T17:31:06.599Z] [hosting] Hosting Emulator only supports listening on one address (127.0.0.1). Not listening on ::1
[2024-12-13T17:31:06.599Z] [dataconnect.postgres] postgres server for dataconnect only supports listening on one address (127.0.0.1). Not listening on ::1
[2024-12-13T17:31:06.599Z] assigned listening specs for emulators {"user":{"hub":[{"address":"127.0.0.1","family":"IPv4","port":4400},{"address":"::1","family":"IPv6","port":4400}],"ui":[{"address":"127.0.0.1","family":"IPv4","port":4000},{"address":"::1","family":"IPv6","port":4000}],"logging":[{"address":"127.0.0.1","family":"IPv4","port":4500}],"auth":[{"address":"127.0.0.1","family":"IPv4","port":9099}],"hosting":[{"address":"127.0.0.1","family":"IPv4","port":5059}],"dataconnect":[{"address":"127.0.0.1","family":"IPv4","port":9399},{"address":"::1","family":"IPv6","port":9399}],"dataconnect.postgres":[{"address":"127.0.0.1","family":"IPv4","port":5432}]},"metadata":{"message":"assigned listening specs for emulators"}}
⚠  emulators: It seems that you are running multiple instances of the emulator suite for project test-firebase-project-823fa. This may result in unexpected behavior. 
[2024-12-13T17:31:06.601Z] [hub] writing locator at /var/folders/dt/g4sdb7y14pj4lfddbyd7pfmh0000gn/T/hub-test-firebase-project-823fa.json
[2024-12-13T17:31:09.548Z] I1213 18:31:09.537216   88674 control.go:45] [engine.Service /emulator/your-service-id 8f9f] UpdateSchema(): done sources: schema/schema.gql [1566B] 
I1213 18:31:09.545227   88674 control.go:73] [engine.Service /emulator/your-service-id 8f9f] UpdateConnector(movie-connector): done sources: movie-connector/mutations.gql [2245B] movie-connector/queries.gql [3733B] 
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.537216   88674 control.go:45] [engine.Service /emulator/your-service-id 8f9f] UpdateSchema(): done sources: schema/schema.gql [1566B] \nI1213 18:31:09.545227   88674 control.go:73] [engine.Service /emulator/your-service-id 8f9f] UpdateConnector(movie-connector): done sources: movie-connector/mutations.gql [2245B] movie-connector/queries.gql [3733B] \n"}}
[2024-12-13T17:31:09.548Z] Ignoring unsupported arg: auto_download {"metadata":{"emulator":{"name":"dataconnect"},"message":"Ignoring unsupported arg: auto_download"}}
[2024-12-13T17:31:09.548Z] Ignoring unsupported arg: port {"metadata":{"emulator":{"name":"dataconnect"},"message":"Ignoring unsupported arg: port"}}
[2024-12-13T17:31:09.548Z] Starting Data Connect Emulator with command {"binary":"/Users/someuser/.cache/firebase/emulators/dataconnect-emulator-1.7.5","args":["--logtostderr","-v=2","dev","--listen=127.0.0.1:9399,[::1]:9399","--config_dir=/Users/someuser/Desktop/codelab-dataconnect-web/dataconnect","--enable_output_schema_extensions=true","--enable_output_generated_sdk=true"],"optionalArgs":["listen","config_dir","enable_output_schema_extensions","enable_output_generated_sdk"],"joinArgs":true,"shell":false,"port":9399} {"metadata":{"emulator":{"name":"dataconnect"},"message":"Starting Data Connect Emulator with command {\"binary\":\"/Users/someuser/.cache/firebase/emulators/dataconnect-emulator-1.7.5\",\"args\":[\"--logtostderr\",\"-v=2\",\"dev\",\"--listen=127.0.0.1:9399,[::1]:9399\",\"--config_dir=/Users/someuser/Desktop/codelab-dataconnect-web/dataconnect\",\"--enable_output_schema_extensions=true\",\"--enable_output_generated_sdk=true\"],\"optionalArgs\":[\"listen\",\"config_dir\",\"enable_output_schema_extensions\",\"enable_output_generated_sdk\"],\"joinArgs\":true,\"shell\":false,\"port\":9399}"}}
i  dataconnect: Data Connect Emulator logging to dataconnect-debug.log {"metadata":{"emulator":{"name":"dataconnect"},"message":"Data Connect Emulator logging to \u001b[1mdataconnect-debug.log\u001b[22m"}}
i  dataconnect: Started up Postgres server, listening on {"address":"127.0.0.1","family":"IPv4","port":5432} {"metadata":{"emulator":{"name":"dataconnect"},"message":"Started up Postgres server, listening on {\"address\":\"127.0.0.1\",\"family\":\"IPv4\",\"port\":5432}"}}
[2024-12-13T17:31:09.558Z] [Data Connect] Connecting to postgres://127.0.0.1:5432/your-database?sslmode=disable}...
[2024-12-13T17:31:09.559Z] >>> [apiv2][query] POST http://127.0.0.1:9399/emulator/configure [none]
[2024-12-13T17:31:09.559Z] >>> [apiv2][body] POST http://127.0.0.1:9399/emulator/configure {"connectionString":"postgres://127.0.0.1:5432/your-database?sslmode=disable","database":"your-database","serviceId":"your-service-id","maxOpenConnections":1}
[2024-12-13T17:31:09.561Z] *** [apiv2] error from fetch(http://127.0.0.1:9399/emulator/configure, {"headers":{},"method":"POST","body":"{\"connectionString\":\"postgres://127.0.0.1:5432/your-database?sslmode=disable\",\"database\":\"your-database\",\"serviceId\":\"your-service-id\",\"maxOpenConnections\":1}"}): FetchError: request to http://127.0.0.1:9399/emulator/configure failed, reason: connect ECONNREFUSED 127.0.0.1:9399
[2024-12-13T17:31:09.561Z] [Data Connect] Retrying connectToPostgress call (1 of 3 attempts): FirebaseError: Data Connect emulator: undefined
[2024-12-13T17:31:09.698Z] I1213 18:31:09.696999   88677 load.go:37] Reloading schema and connectors...
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.696999   88677 load.go:37] Reloading schema and connectors...\n"}}
[2024-12-13T17:31:09.710Z] I1213 18:31:09.710286   88677 control.go:45] [engine.Service /emulator/your-service-id c563] UpdateSchema(): done sources: schema/schema.gql [1566B] 
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.710286   88677 control.go:45] [engine.Service /emulator/your-service-id c563] UpdateSchema(): done sources: schema/schema.gql [1566B] \n"}}
[2024-12-13T17:31:09.718Z] I1213 18:31:09.718215   88677 control.go:73] [engine.Service /emulator/your-service-id c563] UpdateConnector(movie-connector): done sources: movie-connector/mutations.gql [2245B] movie-connector/queries.gql [3733B] 
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.718215   88677 control.go:73] [engine.Service /emulator/your-service-id c563] UpdateConnector(movie-connector): done sources: movie-connector/mutations.gql [2245B] movie-connector/queries.gql [3733B] \n"}}
[2024-12-13T17:31:09.732Z] I1213 18:31:09.732330   88677 codegen.go:82] [connector "movie-connector" javascriptSdk] Generating sources into "/Users/someuser/Desktop/codelab-dataconnect-web/app/src/lib/dataconnect-sdk"
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.732330   88677 codegen.go:82] [connector \"movie-connector\" javascriptSdk] Generating sources into \"/Users/someuser/Desktop/codelab-dataconnect-web/app/src/lib/dataconnect-sdk\"\n"}}
[2024-12-13T17:31:09.737Z] I1213 18:31:09.737633   88677 collector.go:107] schema extensions wrote into "/Users/someuser/Desktop/codelab-dataconnect-web/dataconnect/.dataconnect/schema"
Generated sources: prelude.gql [65151B] 
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.737633   88677 collector.go:107] schema extensions wrote into \"/Users/someuser/Desktop/codelab-dataconnect-web/dataconnect/.dataconnect/schema\"\nGenerated sources: prelude.gql [65151B] \n"}}
[2024-12-13T17:31:09.738Z] I1213 18:31:09.738061   88677 collector.go:107] connector "movie-connector" javascriptSdk wrote into "/Users/someuser/Desktop/codelab-dataconnect-web/app/src/lib/dataconnect-sdk"
Generated sources: index.d.ts [264B] esm/index.esm.js [196B] esm/package.json [17B] index.cjs.js [237B] package.json [630B] 
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.738061   88677 collector.go:107] connector \"movie-connector\" javascriptSdk wrote into \"/Users/someuser/Desktop/codelab-dataconnect-web/app/src/lib/dataconnect-sdk\"\nGenerated sources: index.d.ts [264B] esm/index.esm.js [196B] esm/package.json [17B] index.cjs.js [237B] package.json [630B] \n"}}
[2024-12-13T17:31:09.740Z] I1213 18:31:09.740256   88677 installsdk.go:48] Package @movie/dataconnect is already installed. Skipping installation
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.740256   88677 installsdk.go:48] Package @movie/dataconnect is already installed. Skipping installation\n"}}
[2024-12-13T17:31:09.740Z] I1213 18:31:09.740392   88677 load.go:115] Finished reloading
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.740392   88677 load.go:115] Finished reloading\n"}}
[2024-12-13T17:31:09.743Z] I1213 18:31:09.743439   88677 dev.go:95] Listening on address (HTTP + gRPC): 127.0.0.1:9399
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.743439   88677 dev.go:95] Listening on address (HTTP + gRPC): 127.0.0.1:9399\n"}}
[2024-12-13T17:31:09.744Z] I1213 18:31:09.744282   88677 dev.go:95] Listening on address (HTTP + gRPC): [::1]:9399
 {"metadata":{"emulator":{"name":"dataconnect"},"message":"I1213 18:31:09.744282   88677 dev.go:95] Listening on address (HTTP + gRPC): [::1]:9399\n"}}
[2024-12-13T17:31:11.564Z] [Data Connect] Connecting to postgres://127.0.0.1:5432/your-database?sslmode=disable}...
[2024-12-13T17:31:11.566Z] >>> [apiv2][query] POST http://127.0.0.1:9399/emulator/configure [none]
[2024-12-13T17:31:11.567Z] >>> [apiv2][body] POST http://127.0.0.1:9399/emulator/configure {"connectionString":"postgres://127.0.0.1:5432/your-database?sslmode=disable","database":"your-database","serviceId":"your-service-id","maxOpenConnections":1}
[2024-12-13T17:31:11.609Z] Frontend message 
[2024-12-13T17:31:11.610Z] Backend message AuthenticationResponse
[2024-12-13T17:31:11.610Z] Backend message ParameterStatus
[2024-12-13T17:31:11.611Z] Backend message ReadyForQuery
[2024-12-13T17:31:11.612Z] Frontend message Query
[2024-12-13T17:31:11.911Z] RuntimeError: unreachable
    at wasm://wasm/0222924a:wasm-function[5692]:0x42e8d4
    at wasm://wasm/0222924a:wasm-function[5668]:0x429e8f
    at wasm://wasm/0222924a:wasm-function[2877]:0x25097d
    at Module._pg_initdb (/usr/local/lib/node_modules/firebase-tools/node_modules/@electric-sql/pglite/dist/index.cjs:12:118235)
    at eE.ua (/usr/local/lib/node_modules/firebase-tools/node_modules/@electric-sql/pglite/dist/index.cjs:12:2428733)
    at async eE.create (/usr/local/lib/node_modules/firebase-tools/node_modules/@electric-sql/pglite/dist/index.cjs:12:2423415)
    at async PostgresServer.forceCreateDB (/usr/local/lib/node_modules/firebase-tools/lib/emulator/dataconnect/pgliteServer.js:112:24)
    at async PostgresServer.getDb (/usr/local/lib/node_modules/firebase-tools/lib/emulator/dataconnect/pgliteServer.js:95:23)
    at async Object.onMessage (/usr/local/lib/node_modules/firebase-tools/lib/emulator/dataconnect/pgliteServer.js:53:32)

Error: An unexpected error has occurred.

Having trouble? Try again or contact support with contents of firebase-debug.log

Reproduction Repository

codelab-dataconnect-web

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions