Skip to content

Remove virtual dispatch from LogData - #13123

Merged
bneradt merged 1 commit into
apache:masterfrom
bneradt:fix_malformed_h2_request_logging_performance-codex
Apr 29, 2026
Merged

bneradt merged 1 commit into
apache:masterfrom
bneradt:fix_malformed_h2_request_logging_performance-codex

Conversation

@bneradt

@bneradt bneradt commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

This addresses a performance regression added by #13059.

Malformed pre-transaction logging introduced an extra virtual data
interface on the normal access log path. That made every completed
transaction pay for indirection that is only needed for rare
protocol-layer failures.

This replaces the virtual hierarchy with a concrete composed
TransactionLogData wrapper. This keeps LogAccess using one data object
while routing the common HttpSM path through direct getters and falling
back to owned pre-transaction data only when no HttpSM exists.

@bneradt bneradt added this to the 11.0.0 milestone Apr 28, 2026
@bneradt bneradt self-assigned this Apr 28, 2026
@bneradt
bneradt requested review from masaori335 and maskit April 28, 2026 15:09
@bneradt
bneradt force-pushed the fix_malformed_h2_request_logging_performance-codex branch from 3f0a198 to 05a916f Compare April 28, 2026 15:10
@bneradt

bneradt commented Apr 28, 2026

Copy link
Copy Markdown
Contributor Author

10.2.x backport:
#13124

This addresses a performance regression added by apache#13059.

Malformed pre-transaction logging introduced an extra virtual data
interface on the normal access log path. That made every completed
transaction pay for indirection that is only needed for rare
protocol-layer failures.

This replaces the virtual hierarchy with a concrete composed
TransactionLogData wrapper. This keeps LogAccess using one data object
while routing the common HttpSM path through direct getters and falling
back to owned pre-transaction data only when no HttpSM exists.
@bneradt
bneradt force-pushed the fix_malformed_h2_request_logging_performance-codex branch from 05a916f to 9c97c94 Compare April 28, 2026 15:34
@bneradt bneradt changed the title Remove virtual dispatch from log data Remove virtual dispatch from LogData Apr 28, 2026
@bneradt
bneradt requested a review from Copilot April 28, 2026 15:59
@bneradt
bneradt merged commit 83ec495 into apache:master Apr 29, 2026
15 checks passed
@bneradt
bneradt deleted the fix_malformed_h2_request_logging_performance-codex branch April 29, 2026 19:28
cmcfarlen added a commit to cmcfarlen/trafficserver that referenced this pull request May 21, 2026
CI Linux build hits a CMake configuration error reporting a cycle
between the RESCAN link group and configmanager. configmanager links
PRIVATE ts::proxy (a member of the group), and ts::logging in the
group links PUBLIC ts::configmanager (added by apache#13123, kept on this
trial because it was backported to 10.2.x).

On master, the 11-Dev merge restructured configmanager to depend on
ts::records instead of ts::proxy, breaking the cycle. This trial
reverts that restructuring; adding configmanager into the RESCAN
group lets the linker resolve the cycle the same way it does for
the other libs in the group.

macOS doesn't hit this because its linker takes the non-RESCAN
codepath.
cmcfarlen added a commit that referenced this pull request Jun 9, 2026
PR #12921 (PP2_SUBTYPE_SSL_GROUP) was authored against pre-#13123 master
where m_http_sm was accessible directly on LogAccess. On 10.2.x we
already picked the LogData refactor (#13124, the 10.2.x-targeted twin of
master's #13123), which moves transaction state behind m_data->get_pp_*
getters. Rewrite the new marshal function to match the existing
marshal_proxy_protocol_tls_cipher / _version pattern.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
cmcfarlen pushed a commit to cmcfarlen/trafficserver that referenced this pull request Jul 29, 2026
This addresses a performance regression added by apache#13059.

Malformed pre-transaction logging introduced an extra virtual data
interface on the normal access log path. That made every completed
transaction pay for indirection that is only needed for rare
protocol-layer failures.

This replaces the virtual hierarchy with a concrete composed
TransactionLogData wrapper. This keeps LogAccess using one data object
while routing the common HttpSM path through direct getters and falling
back to owned pre-transaction data only when no HttpSM exists.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants