Closed Bug 1865040 Opened 8 months ago Closed 2 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)

Presumably the initial version of fetchpriority can ship without this.

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

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

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

Attachment

General

Created:
Updated:
Size: