Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

‘Degraded mode’ for HTTP/2 connections

Open
#9,555 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
kotlin
Domain
networking

Research direction

Start by tracing how HTTP/2 calls time out, how connections are selected for new exchanges, and how pings and pool eviction are handled. The issue does not name files or tests, so locate those entry points in the OkHttp codebase first. Done means a timed-out call marks its host connection degraded, a pong clears that state, degraded connections carry no new exchanges, and an unresponsive connection is eventually evicted.

Written by the indexing model from the issue text.

Description

enhancement

A user reported a problem in the field where an HTTP/2 connection remained active at the TCP layer, but dead at the HTTP/2 layer. Turning on HTTP/2 pings mitigated the problem, but our HTTP/2 pings are somewhat clumsy in this situation (they need to be manually configured, and the ping interval is generally too frequent for efficiency and too infrequent for responsiveness).

We sketched out an alternative design:

  1. When an HTTP/2 call times out at the application layer, mark the host connection as degraded
  2. Send a ping on the degraded connection
  3. When the pong is received, unmark the connection as degraded

While an HTTP/2 connection is degraded, don’t use it to carry new exchanges.

If the pong is never received, the connection will eventually be evicted from the pool.

Dominant language
Kotlin
Stars
47.1k
Forks
9.3k
Avg merge
18h 18m
Merged PRs (30d)
15

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from lysine-dev/okhttp

All issues in lysine-dev/okhttp

Similar issues

More Kotlin issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.