Skip to content

[v1.38.1] Registration stuck InProgress forever — transactor failure blocks identity permanently #6190

@alexandre-leng

Description

@alexandre-leng

Bug description

Identity registration gets permanently stuck in InProgress after the transactor HTTP call fails. Once stuck, the identity can never be registered through the daemon — not even after clearing BoltDB, restarting, or changing RPC endpoints.

This is essentially the same bug described in #3029 and #3090, but confirmed still present in the latest release.

Steps to reproduce

  1. Install myst 1.38.1 on a machine where the default RPC (polygon.drpc.org) is blocked or unreachable
  2. The daemon auto-generates an identity on first start
  3. Run myst cli identities register <id>
  4. The transactor call fails (RPC unreachable)
  5. Identity is stuck InProgress forever

Environment

  • OS: Ubuntu 24.04
  • Node version: 1.38.1 (build 25002478138, commit e0b746e1, 2026-04-27 — LATEST release)
  • Identity: system-generated by daemon
  • RPC tested: polygon.drpc.org (default, blocked), 1rpc.io/matic (works for balance queries)

Error

[ERROR] Could not queue entry: registration in progress

Tequilapi:

{"error":{"code":"err_transactor_registration","message":"could not queue entry: registration in progress"},"status":400}

What we tried to fix it (nothing works)

  1. myst cli identities register <id> → stuck
  2. systemctl restart mysterium-node → same
  3. Deleted /var/lib/mysterium-node/mainnet/db/myst.db + restart → same
  4. Deleted /var/lib/mysterium-node/keystore/remember.json + restart → same
  5. Changed ether.client.rpcl2 via /etc/mysterium-node/config.toml → same
  6. Created a fresh identity (myst cli identities new) → unlock fails with "authentication needed: password or unlock"
  7. Called Tequilapi POST /identities/<id>/register directly → same 400 "registration in progress"

Logs

ERR tequilapi/endpoints/transactor.go:399 > Failed identity registration request for ID: 0x0996a..., error="failed to fill in identity request: failed to sign identity registration request: failed to sign a registration request: authentication needed: password or unlock"
INF discovery/discovery.go:241 > Identity 0x0996a... not registered, delaying proposal registration until identity is registered
DBG identity/manager.go:153 > Unlocked identity found in cache, skipping keystore: 0x0996a...

Root cause (from code analysis)

  1. The daemon calls the transactor HTTP endpoint to register the identity
  2. If that HTTP call fails (timeout, blocked RPC, network issue), the daemon stores the identity as InProgress in BoltDB
  3. The daemon never re-checks the on-chain registration status via the Registry contract directly
  4. Even clearing the entire BoltDB doesn"t help — the state is re-created from the transactor, which still returns the stuck status
  5. The identity might actually BE registered on-chain, but the daemon has no way to discover this

Expected behavior

  • After a transactor call fails, the daemon should fall back to checking the on-chain registration status via the Polygon Registry contract (isRegisteredFor / isRegistered)
  • There should be a way to force-reset a stuck registration: myst cli identities reset <id> or POST /identities/<id>/registration/reset
  • The daemon should periodically re-check InProgress registrations against the blockchain

Workaround

The only reliable workaround is to register the identity directly via the Registry smart contract on Polygon (registerIdentity()), bypassing the daemon transactor and Tequilapi entirely.

Related issues


This effectively bricks the daemon for new users on restricted networks. The workaround requires blockchain dev skills that most users don"t have.

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