Closed Bug 1865040 Opened 11 months ago Closed 5 months ago

Implement Extensible Prioritization Scheme for HTTP/2

Categories

(Core :: Networking: HTTP, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
128 Branch
Tracking Status
firefox128 --- fixed

People

(Reporter: valentin, Assigned: valentin)

References

(Blocks 2 open bugs, )

Details

(Keywords: dev-doc-complete, Whiteboard: [necko-triaged])

Attachments

(4 files)

No description provided.
Blocks: 1865370

Presumably the initial version of fetchpriority can ship without this.

See Also: → 1875849
Depends on: 1865394

Sends the SETTINGS_NO_RFC7540_PRIORITIES when Priority headers are in use,
or when the network.http.http2.enabled.deps or
network.http.rendering-critical-requests-prioritization prefs are false.

Also adds handler function for RecvPriorityUpdate and does a small cleanup
of the enum and sControlFunctions.

Assignee: nobody → valentin.gosu
Status: NEW → ASSIGNED
  • Rename Http2StreamBase::mPriority to mRFC7540Priority in preparation for PriorityUpdate frame changes
  • Remove unused Http2Session::GeneratePriority

This pref controls whether RFC7540 stream dependencies are used.
Since RFC9218 deprecates that mechanism, we can set it to false
with the intention of removing it in the future

See Also: → 1864392
Pushed by valentin.gosu@gmail.com: https://hg.mozilla.org/integration/autoland/rev/3db719c0d768 Refactor old H2 priority code r=necko-reviewers,kershaw https://hg.mozilla.org/integration/autoland/rev/a0b9e10b41d5 Add HTTP/2 PriorityUpdate frame r=necko-reviewers,jesup https://hg.mozilla.org/integration/autoland/rev/bf04a6a92f69 Set network.http.http2.enabled.deps to false r=necko-reviewers,kershaw

Backed out for causing bustages in Http2Session.cpp.

[task 2024-05-21T07:01:22.810Z] 07:01:22     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/netwerk/protocol/http'
[task 2024-05-21T07:01:22.813Z] 07:01:22     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang++ --sysroot /builds/worker/fetches/sysroot-x86_64-linux-gnu -o Unified_cpp_protocol_http1.o -c  -I/builds/worker/workspace/obj-build/dist/stl_wrappers -I/builds/worker/workspace/obj-build/dist/system_wrappers -include /builds/worker/checkouts/gecko/config/gcc_hidden.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -DNDEBUG=1 -DTRIMMED=1 -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/netwerk/protocol/http -I/builds/worker/workspace/obj-build/netwerk/protocol/http -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/dom/base -I/builds/worker/checkouts/gecko/netwerk/base -I/builds/worker/checkouts/gecko/netwerk/cookie -I/builds/worker/checkouts/gecko/netwerk/dns -I/builds/worker/checkouts/gecko/netwerk/ipc -I/builds/worker/checkouts/gecko/netwerk/socket/neqo_glue -I/builds/worker/checkouts/gecko/netwerk/url-classifier -I/builds/worker/checkouts/gecko/extensions/auth -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -DMOZILLA_CLIENT -include /builds/worker/workspace/obj-build/mozilla-config.h -D_GLIBCXX_USE_CXX11_ABI=0 -pthread -fno-sized-deallocation -fno-aligned-new -fcrash-diagnostics-dir=/builds/worker/artifacts -fno-exceptions -fPIC -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -gdwarf-4 -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -fno-omit-frame-pointer -funwind-tables -Werror -Wall -Wbitfield-enum-conversion -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtautological-constant-in-range-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wenum-compare-conditional -Wenum-float-conversion -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-deprecated-this-capture -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wformat -Wformat-security -Wno-psabi -Wthread-safety -Wno-error=builtin-macro-redefined -Wno-unknown-warning-option -fno-strict-aliasing -ffp-contract=off  -MD -MP -MF .deps/Unified_cpp_protocol_http1.o.pp   Unified_cpp_protocol_http1.cpp
[task 2024-05-21T07:01:22.813Z] 07:01:22     INFO -  In file included from Unified_cpp_protocol_http1.cpp:83:
[task 2024-05-21T07:01:22.813Z] 07:01:22    ERROR -  /builds/worker/checkouts/gecko/netwerk/protocol/http/Http2Session.cpp:1119:35: error: no member named 'FRAME_TYPE_PRIORITY_UPDATE' in 'mozilla::net::Http2Session'
[task 2024-05-21T07:01:22.814Z] 07:01:22     INFO -   1119 |                     Http2Session::FRAME_TYPE_PRIORITY_UPDATE,
[task 2024-05-21T07:01:22.816Z] 07:01:22     INFO -        |                     ~~~~~~~~~~~~~~^
[task 2024-05-21T07:01:22.816Z] 07:01:22     INFO -  1 error generated.
[task 2024-05-21T07:01:22.816Z] 07:01:22    ERROR -  gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:688: Unified_cpp_protocol_http1.o] Error 1
[task 2024-05-21T07:01:22.816Z] 07:01:22     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/netwerk/protocol/http'
[task 2024-05-21T07:01:22.816Z] 07:01:22     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/third_party/libwebrtc/modules/audio_coding/g711_gn'
[task 2024-05-21T07:01:22.818Z] 07:01:22     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang++ --sysroot /builds/worker/fetches/sysroot-x86_64-linux-gnu -o Unified_cpp_g711_gn0.o -c  -I/builds/worker/workspace/obj-build/dist/stl_wrappers -I/builds/worker/workspace/obj-build/dist/system_wrappers -include /builds/worker/checkouts/gecko/config/gcc_hidden.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -DNDEBUG -DTRIMMED=1 -DABSL_ALLOCATOR_NOTHROW=1 -DRTC_DAV1D_IN_INTERNAL_DECODER_FACTORY -DRTC_ENABLE_VP9 -DWEBRTC_ENABLE_PROTOBUF=0 -DWEBRTC_LIBRARY_IMPL -DWEBRTC_MOZILLA_BUILD -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0 -DWEBRTC_STRICT_FIELD_TRIALS=0 -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DNVALGRIND -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DUSE_UDEV -DWEBRTC_ENABLE_LIBEVENT -DWEBRTC_LINUX -DWEBRTC_POSIX -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DWEBRTC_ENABLE_AVX2 -DUSE_X11=1 -D_GNU_SOURCE -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/third_party/libwebrtc/modules/audio_coding/g711_gn -I/builds/worker/workspace/obj-build/third_party/libwebrtc/modules/audio_coding/g711_gn -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/workspace/obj-build/third_party/libwebrtc/gen -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/third_party/libwebrtc -I/builds/worker/checkouts/gecko/third_party/libwebrtc/third_party/abseil-cpp -I/builds/worker/checkouts/gecko/tools/profiler/public -I/builds/worker/workspace/obj-build/dist/include -DMOZILLA_CLIENT -include /builds/worker/workspace/obj-build/mozilla-config.h -D_GLIBCXX_USE_CXX11_ABI=0 -pthread -fno-sized-deallocation -fno-aligned-new -fcrash-diagnostics-dir=/builds/worker/artifacts -fno-exceptions -fPIC -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -gdwarf-4 -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -fno-omit-frame-pointer -funwind-tables -Wall -Wbitfield-enum-conversion -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtautological-constant-in-range-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wenum-compare-conditional -Wenum-float-conversion -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-deprecated-this-capture -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wformat -Wformat-security -Wno-psabi -Wthread-safety -Wno-error=builtin-macro-redefined -Wno-unknown-warning-option -fno-strict-aliasing -ffp-contract=off  -MD -MP -MF .deps/Unified_cpp_g711_gn0.o.pp   Unified_cpp_g711_gn0.cpp
[task 2024-05-21T07:01:22.819Z] 07:01:22     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/third_party/libwebrtc/modules/audio_coding/g711_gn'
[task 2024-05-21T07:01:22.819Z] 07:01:22     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/third_party/libwebrtc/modules/audio_coding/g711_gn'
[task 2024-05-21T07:01:22.819Z] 07:01:22     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/third_party/libwebrtc/modules/audio_coding/g711_gn'
[task 2024-05-21T07:01:22.819Z] 07:01:22     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/third_party/libwebrtc/modules/audio_coding/isac_vad_gn'
[task 2024-05-21T07:01:22.820Z] 07:01:22     INFO -  mkdir -p '.deps/'
Flags: needinfo?(valentin.gosu)
Flags: needinfo?(valentin.gosu)
Pushed by valentin.gosu@gmail.com: https://hg.mozilla.org/integration/autoland/rev/f40635aceea6 RFC9218 - SETTINGS_NO_RFC7540_PRIORITIES r=necko-reviewers,kershaw https://hg.mozilla.org/integration/autoland/rev/ed8613ac1835 Refactor old H2 priority code r=necko-reviewers,kershaw https://hg.mozilla.org/integration/autoland/rev/6cfbbceb35be Add HTTP/2 PriorityUpdate frame r=necko-reviewers,jesup https://hg.mozilla.org/integration/autoland/rev/deedf2798076 Set network.http.http2.enabled.deps to false r=necko-reviewers,kershaw
Keywords: dev-doc-needed

FF128 MDN docs for this can be tracked in https://github.com/mdn/content/issues/33847

Regressions: 1909271
Regressions: 1909666

In Bug 1909666 we re-enabled network.http.http2.enabled.deps due to instances of site breaking.

Depends on: 1915134
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: