trafficserver
trafficserver copied to clipboard
Remove intermediate buffer in PluginVC
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
Fixed connection timeout issue, ready for testing
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
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
Working on testing this in production (had to back port to 9.1.x)
Rebased from master to keep PR updated
[approve ci autest]
[approve ci autest]
post-early-return failed.
[approve ci autest]
Cherry-picked to v9.2.x