I’d like to add this new TS API:

/**
   Check to see if an MBuffer is still valid, from since the time
   it was acquired.
 */
bool TSMBufferIsValid(TSMBuffer bufp);


The intent of this API is to check if a TSMbuffer, and any pointers related to 
this buffer, are still valid. Why would they not be, you ask? There are cases 
where these heap buffers are coalesced, and when that happens, the pointers you 
may have fetched earlier, are no longer valid.

Today, there’s no way to know if your pointers and buffers are valid, The new 
API, and the changes to the core and APIs it comes with, allows a plugin, or a 
plugin framework such as txn_box, to verify that saved (or cached) pointers are 
still valid. For Cripts, it has to invalidate all saved pointers between every 
hook, even though more often than not, it could have kept them (they are stored 
and saved in a transaction context).

With this addition, Cripts (and txn_box) could keep values around for much 
longer, and check with this new API if these cached pointers are still valid. 
I’d imagine similar optimizations could now be added to e.g. header_rewrite and 
other plugins as well (keeping state between hooks). The proposed API, and 
changes are in this PR:

        https://github.com/apache/trafficserver/pull/11780


Thanks,

— Leif

Reply via email to