Skip to content

Update ghcr.io/streamingfast/firehose-ethereum Docker tag to v2.17.3#42

Open
renovate[bot] wants to merge 2 commits into
mainfrom
renovate/ghcr.io-streamingfast-firehose-ethereum-2.x
Open

Update ghcr.io/streamingfast/firehose-ethereum Docker tag to v2.17.3#42
renovate[bot] wants to merge 2 commits into
mainfrom
renovate/ghcr.io-streamingfast-firehose-ethereum-2.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented May 12, 2026

This PR contains the following updates:

Package Update Change
ghcr.io/streamingfast/firehose-ethereum minor v2.14.3v2.17.3

Release Notes

streamingfast/firehose-ethereum (ghcr.io/streamingfast/firehose-ethereum)

v2.17.3

Compare Source

Removed from docker image
  • The 'grpc_health_probe' binary is no longer included in the docker image. You can use the HTTP '/healthz' endpoints instead or use your own GRPC poller.
Added
  • merger and relayer now expose an HTTP /healthz endpoint on a dedicated port via the new --merger-http-healthz-addr (default :10013) and --relayer-http-healthz-addr (default :10018) flags. Set the flag to an empty string to disable. The endpoint returns HTTP 200 when the service is ready and 503 otherwise (including during the common-system-shutdown-signal-delay graceful-shutdown window).
Substreams
  • Index optimisation: Optimized ClockDistributor to skip blocks earlier and faster when using block filter.
  • Fix server-side bug that would cause Blocks request to fail after a few retries with 'load full store (...) load store stream: opening file for streaming: not found' when depending on a store that is being merged slowly
  • add substreams_tier2_max_concurrent_requests and substreams_tier1_active_requests_hard_limit metrics to prometheus

v2.17.2

Compare Source

Added
  • The sf.ethereum.type.v2.BlockHeader Ethereum Block message has been enhanced with support for slot_number field scheduled to inclusion in upcoming hard-fork.
Changed
  • Made sf.ethereum.type.v2.BlockHeader#parent_beacon_root optional like it should have been since the beginning. On chains without Prague active, this will be empty nil/null/None.

    • This will change the generated Protobuf language bindings usually to become a pointer type (or Optional in Rust), handle it properly usually the same way you would with if it was an empty array of bytes.
  • Made sf.ethereum.type.v2.BlockHeader#requests_hash optional like it should have been since the beginning. On chains without Prague active, this will be empty nil/null/None.

    • This will change the generated Protobuf language bindings usually to become a pointer type (or Optional in Rust), handle it properly usually the same way you would with if it was an empty array of bytes.
  • Library dsession bumped to latest version which brings:

    • Bug fixes around session handling at scale.
  • Library dstore bumped to latest version v0.2.3 which brings these changes:

    • GCS store: disable gRPC DirectPath when both a project is set and client_protocol=grpc is used, preventing connection issues in that configuration.
    • S3 store: share a single HTTP transport across all store clones for proper HTTP/2 multiplexing, replacing the previous per-clone transport that broke connection sharing.

v2.17.1

Compare Source

Updated
  • Library dstore bumped to latest version which brings these changes:
    • GCS store: opt-in gRPC transport via client_protocol=grpc query parameter (e.g. gs://bucket/path?client_protocol=grpc). Defaults to the existing HTTP client; the gRPC client is selected only when this parameter is explicitly set.
    • S3 store: storageClass query parameter is deprecated in favour of storage_class; a warning is logged when the old form is used. storage_class query parameter as the canonical snake_case name for storageClass.
    • S3 store: each store clone now gets its own transport for failure isolation; adds ResponseHeaderTimeout to prevent hung requests and configures HTTP/2 health checks via x/net/http2; default connection pool sizes are reduced.
Fixed
  • Substreams: Fix server-side bug that would prevent forkableHub from correctly updating metrics when receiving partial or out-of-order blocks

v2.17.0

Compare Source

  • Added --shift-ports global flag that shifts all Firehose service port numbers by a given offset, useful for running multiple instances on the same machine without port conflicts. Both server listen addresses and internal client connection addresses are shifted so wiring stays consistent. Infrastructure ports (Prometheus metrics, pprof, log-level-switcher) are also shifted. Example: fire{chain} start --shift-ports 100 shifts all ports by +100.
  • Added --merger-max-merging-threads (defaults: 4) so that the merger can merge blocks in parallel (still using way less RAM than previous one-block-preloading method)
  • S3 store: configurable HTTP connection pool via DSTORE_S3_MAX_IDLE_CONNS, DSTORE_S3_MAX_IDLE_CONNS_PER_HOST, DSTORE_S3_IDLE_CONN_TIMEOUT env vars
Changed
  • Removed parallel preloading of one-block-files to reduce RAM usage when merging big blocks.

[!NOTE]
With this change, HEAD block timestamp is now updated maximum every 5 seconds instead of at every block, by reading the first 500 bytes of the last one-block-file.

Fixed
  • S3 store: fixed goroutine leak caused by connection pool exhaustion on single-host S3 stores (e.g. MinIO); HTTP body is now explicitly drained and closed, and the transport is configured with MaxIdleConnsPerHost=100 by default

v2.16.2

Compare Source

  • Fix substreams support for requests with 'application/grpc-web*' content-type (old connectweb library)

v2.16.1

Compare Source

  • Fix substreams/firehose endpoints detection of supported compression: do not fail on 'algo;q=x.y' syntax
  • Fix relayer failing to get back to live if reader blocks are unlinkable after a long period, and merger has removed one-blocks: it will now shutdown in that case, so it can be restarted.
  • Fix substreams tier2 jobs behind load balancer: will now retry forever on 'Unavailable: no healthy upstream' errors
  • Add substreams-tier2-authenticator flag to specify the authenticator to use for tier2 requests. Can be 'trust://' (default, same as previous behavior) or 'secret://'
  • Add substreams-tier1-subrequests-secret-key flag to specify the secret key to use for tier1 subrequests authentication when using 'secret://' authenticator on tier2
  • Add reader-node-grpc-secret-key flag to specify the secret key to use for reader node gRPC authentication
  • Add ?secret=... parsing to relayer-sources
  • Add Prometheus metrics for reader test mode: track blocks compared, success/failure counts, and success/failure percentages for easy monitoring at interval stats.

v2.16.0

Compare Source

Substreams Performance (RPC V4, New blocks from last partial)
  • RPC V4 protocol with BlockScopedDatas batching: Multiple BlockScopedData messages are now batched into a single BlockScopedDatas response, reducing gRPC round-trips and message framing overhead during backfill. Clients automatically fall back V4 → V3 → V2 when connecting to older servers, so no flag changes are required.
  • S2 compression is now the default: Replaces gzip as the default compression algorithm, providing ~3-5x faster compression/decompression with comparable ratios. The client automatically negotiates compression with the server.
  • VTProtobuf fast serialization: Both client and server now use vtprotobuf for protobuf marshaling/unmarshaling, providing ~2-3x faster serialization with reduced memory allocations.
  • Server-side message buffering: Configurable via --substreams-tier1-output-buffer-size flag (default: 100 blocks) or MESSAGE_BUFFER_MAX_DATA_SIZE environment variable (default: 10MB).
  • Improved Connect/gRPC protocol selection: Server now efficiently routes requests to the appropriate handler based on content-type, improving performance by ~15% for pure gRPC clients.
  • New blocks from last partial: "Last partial blocks" are now accepted interchangeably with new blocks, allowing faster full blocks for requests that do not ask for partial blocks.
Added
  • Add firecore tools substreams logs connections <user_id> command to query Cloud Logging and show Substreams connections for an organization. Correlates incoming requests with stats by trace ID and presents a summary table showing active, closed, and error connections with details like network, source IP, module, duration, and blocks processed.
Removed
  • Remove alpha partial blocks support in firehose service (only exposed via substreams)

v2.15.9

Compare Source

  • Substreams: Improved 'partial blocks': support new pbbstream's "LastPartial" field, fix 'undo' scenarios for stores
  • Reduce RAM usage with partial blocks (relayer, substreams, firehose)
  • Prevent panic if transactionTrace.receipt is nil in LogFilter (even if it is not a normal scenario)

v2.15.8

Compare Source

  • Fix eth poller issue with marshalling block number (regression in v2.15.5)

v2.15.7

Compare Source

  • Bump Golang to build to 1.25
Substreams
  • Fix issue where a retry on dstore while writing a fullKV would corrupt the file, making it unreadable. Fix prevents this and also now deletes affected files when they are detected
  • Fix bug where so request could get stuck forever (until the clients drops or server restarts).
  • Fix issue where transient HTTP/2 stream errors (e.g., INTERNAL_ERROR) from dstore were being treated as fatal errors instead of being retried. These transient network errors are now detected and retried with exponential backoff.

v2.15.6

Compare Source

Added
  • Added bucketed prometheus metrics head_block_relative_time_sum to help investigate latency and pipeline performance:
    • "app=firehose_output" and "app=substreams_output" that shows latency between outputing live blocks and their blocktime.
    • "app=relayer" for latency at relayer's input
  • Substreams: Fixed underflow in 'FailedPrecondition desc = request needs to process a total of x blocks' error when running from 'substreams run' with a start-block in the future.
  • Bump base64 library to use a much faster one in reader
  • dstore: bumped google storage lib to v1.59.1 to fix a bug in their multi-range downloader, in case it affects us

v2.15.5

Compare Source

Substreams fixes
  • Fix issue where "live backfiller" would not create segments after reconnecting with a cursor starting from a previous quicksave, causing delays in future reconnection
  • Prevent "panic" when log messages are too large: instead, they will be truncated with a 'some logs were truncated' message.
  • Raise max individual log message size from 128k to 512k
  • Raise max log message size for a full block from 128k to 5MiB
  • Reduce log level from Warn to Debug when we fail to get or set the store size (for backends that don't support it)
Substreams Partial blocks (experimental)
  • Removed PartialsData message and brought back this data inside the good old BlockScopedData
  • added the following fields to BlockScopedData:
    • bool is_partial to indicate if this block is a partial block. The following two fields are only present when is_partial==true
    • optional bool is_last_partial to indicate if this is the last partial of a given block (with correct block hash)
    • optional uint32 partial_index to indicate the index of this partial block within the full block
  • renamed partial_blocks_only flag to partial_blocks on substreams Blocks request
  • removed include_partial_blocks flag from substreams Blocks request
AWS Store
  • Migrated from AWS SDK for Go v1 to v2 (github.com/aws/aws-sdk-gogithub.com/aws/aws-sdk-go-v2)
Azure store
  • Added support for "workload identity credentials" in Azure. Order of preference is:
    • If AZURE_STORAGE_KEY is set, use shared key credential (previous behavior)
      • Otherwise, use DefaultAzureCredential which supports:
        • Managed Identity (for Azure resources)
        • Service Principal (via AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID)
        • Azure CLI credentials
        • Visual Studio Code credentials
RPC Poller
  • Added requests_hash (EIP-7685) field handling to the RPC poller.

v2.14.4

Compare Source

Partial blocks

Added experimental support for partial blocks (e.g. Flashblocks on Base)

See https://docs.substreams.dev/reference-material/chains-and-endpoints/flashblocks for details about how they work in Substreams.

  • SUBSTREAMS_BIGGEST_PARTIAL_BLOCK_INDEX environment variable to specify the index to use when bundling the "last partial block" from the full block. (default: 10, for Base)
  • Added flag --include-partial-blocks on tools firehose-client
Eth calls
  • Introduced ETH_CALL_USE_BLOCK_NUMBER_DURATION environment variable. When set, all RPC calls older than that duration will be done targeting the block by number instead of hash.
    The ETH_CALL_FALLBACK_TO_LATEST_DURATION mechanism can still be applied over this, as it has precedence.
Bugfixes
  • Substreams: fixed issue where "live backfiller" would not create segments after reconnecting with a cursor starting from a previous quicksave, causing delays in future reconnection

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
Copy link
Copy Markdown
Contributor Author

renovate Bot commented May 12, 2026

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants