trafficserver icon indicating copy to clipboard operation
trafficserver copied to clipboard

Remove intermediate buffer in PluginVC

Open serrislew opened this issue 3 years ago • 3 comments

Removes active/passive buffer intermediate buffer to reduce data transfer latency

  • removes MIOBuffer and IOBufferReader objects for both transfers
  • for every write, it reduces transfer_bytes call from 2 to 1

Tests done internally show improvements

serrislew avatar Feb 24 '22 00:02 serrislew

Fixed connection timeout issue, ready for testing

serrislew avatar Mar 11 '22 23:03 serrislew

CI tests show failed assertion on PVC regression test but...

  • Tested this locally on Mac, CentOS and Fedora docker image and PVC regression tests passes on all of those machines

serrislew avatar Mar 21 '22 16:03 serrislew

In case it's helpful, I reproduced this locally on my Mac using rockylinux:8 like so:

docker pull controller.trafficserver.org/ats/rockylinux:8
docker run --name test_serris_patch -it controller.trafficserver.org/ats/rockylinux:8 /bin/bash

# Now, from within the running container.
cd /var/tmp
git clone https://github.com/serrislew/trafficserver.git
cd trafficserver/
git checkout pluginvc_opt
source /opt/rh/gcc-toolset-11/enable
autoreconf -fiv
./configure --with-openssl=/opt/openssl-quic --enable-experimental-plugins --enable-example-plugins --prefix=/tmp/ats/ --enable-werror --enable-debug --enable-luajit --enable-ccache
make -j4 V=1 Q=
make install
/tmp/ats/bin/traffic_server -K -k -R 1

That triggered this PluginVC assertion:

REGRESSION TEST PVC started
[SDK_API_TSContSchedule] TSContScheduleOnPool : [TestCase1] <<PASS>> { ok }
[SDK_API_TSContDataGet] TSContDataSet : [TestCase1] <<PASS>> { ok }
[SDK_API_TSContDataGet] TSContDataGet : [TestCase1] <<PASS>> { ok }
[SDK_API_TSActionCancel] TSActionCancel : [TestCase1] <<PASS>> { ok }
Fatal: PluginVC.cc:310: failed assertion `!closed`
[Mar 21 20:06:23.089] traffic_crashlo NOTE: crashlog started, target=59214, debug=false syslog=true, uid=65534 euid=0
[Mar 21 20:06:23.090] traffic_crashlo WARNING: failed to initialize management API: [5] Error establishing socket connection.
[Mar 21 20:06:23.090] traffic_crashlo NOTE: logging to 0x2365e60
[Mar 21 20:06:23.090] traffic_crashlo NOTE: readlink failed with Permission denied
[Mar 21 20:06:23.092] traffic_crashlo ERROR: wrote crash log to /tmp/ats/var/log/trafficserver/crash-2022-03-21-200623.log
traffic_server: received signal 6 (Aborted)
traffic_server - STACK TRACE: 
/tmp/ats/bin/traffic_server(_Z19crash_logger_invokeiP9siginfo_tPv+0xc3)[0x82079c]
/lib64/libpthread.so.0(+0x12c20)[0x7f2e3e2c6c20]
/lib64/libc.so.6(gsignal+0x10f)[0x7f2e3d3f337f]
/lib64/libc.so.6(abort+0x127)[0x7f2e3d3dddb5]
/tmp/ats//lib/libtscore.so.10(_Z11ink_warningPKcz+0x0)[0x7f2e3f8cb72c]
/tmp/ats//lib/libtscore.so.10(_Z17ats_base64_encodePKhmPcmPm+0x0)[0x7f2e3f8c70b1]
/tmp/ats/bin/traffic_server(_ZN8PluginVC8reenableEP3VIO+0x3d)[0xb15b7f]
/tmp/ats/bin/traffic_server(_ZN3VIO8reenableEv+0x47)[0x825c7d]
/tmp/ats/bin/traffic_server(_ZN8PluginVC18process_write_sideEv+0xc61)[0xb17273]
/tmp/ats/bin/traffic_server(_ZN8PluginVC12main_handlerEiPv+0x66f)[0xb15515]
/tmp/ats/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0xdd)[0x825a81]
/tmp/ats/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0x157)[0xbfc17f]
/tmp/ats/bin/traffic_server(_ZN7EThread13process_queueEP5QueueI5EventNS1_9Link_linkEEPiS5_+0xb2)[0xbfc384]
/tmp/ats/bin/traffic_server(_ZN7EThread15execute_regularEv+0x2dc)[0xbfc746]
/tmp/ats/bin/traffic_server(_ZN7EThread7executeEv+0x107)[0xbfca5d]
/tmp/ats/bin/traffic_server[0xbfb234]
/lib64/libpthread.so.0(+0x817a)[0x7f2e3e2bc17a]
/lib64/libc.so.6(clone+0x43)[0x7f2e3d4b8dc3]
Aborted

bneradt avatar Mar 21 '22 20:03 bneradt

Working on testing this in production (had to back port to 9.1.x)

traeak avatar Aug 23 '22 12:08 traeak

Rebased from master to keep PR updated

serrislew avatar Aug 24 '22 21:08 serrislew

[approve ci autest]

traeak avatar Sep 01 '22 12:09 traeak

[approve ci autest]

post-early-return failed.

maskit avatar Sep 01 '22 15:09 maskit

[approve ci autest]

ywkaras avatar Sep 12 '22 23:09 ywkaras

Cherry-picked to v9.2.x

zwoop avatar Oct 11 '22 15:10 zwoop