The way the regex query works is that it scans the cache on disk.   However,
it does not scan

the write aggregation buffer which is probably where you document is.


You might want to file that as a bug....


In the meantime, if you do a Lookup instead of a regex scan it should find
it because that

will check the write aggregation buffer.


john


On May 4, 2011 6:28 AM, "Kevin Giles" <kgi...@gmx.com> wrote:
> Hi,
>
> I have written a plug to write an entry to the cache on the
HTTP_SEND_RESPONSE_HDR_HOOK.
>
> It appears to work fine, the plugin is receiving the correct events, but
when I inspect the cache using the cache regex lookup my entry does not
appear?
>
> It is just a simple test to write an entry to the cache, it does not have
to be on the HTTP_SEND_RESPONSE_HDR_HOOK event.
>
> I am hoping it is something simple, would you mind giving my code a quick
look as I figure out what step I am missing.
>
> 20110504.10h19m15s TS_EVENT_HTTP_TXN_START
>
> 20110504.10h19m15s TS_HTTP_SEND_RESPONSE_HDR_HOOK
> 20110504.10h19m15s Cache Write Start
> 20110504.10h19m15s TS_EVENT_CACHE_OPEN_WRITE
> 20110504.10h19m15s TS_EVENT_VCONN_WRITE_COMPLETE
> 20110504.10h19m15s TS_EVENT_HTTP_TXN_CLOSE
>
> Regards,
>
> Kevin.
>
>
#include<stdio.h>#include<string.h>#include<limits.h>#include<stdlib.h>#include<ts/ts.h>#include<ts/experimental.h>#definePLUGIN_NAME"my-plugin"staticTSContglobal_contp;staticTSTextLogObjectlog;intcheck_ts_version();staticinthttp_event_handler(TSContcontp,TSEventevent,void*edata);staticintcache_write_complete=0;typedefstruct_MyDS{TSHttpTxntxnp;TSCacheKeykey;char*url;TSActionpendingAction;TSVConnvconn;TSVIOvio;TSIOBufferbufp;TSIOBufferReaderbufp_reader;}MyDS;/***ThismethodiscalledwhenwereceivetheTS_EVENT_HTTP_SEND_RESPONSE_HDRevent.*Itisasimpletesttowriteanentrytothecachebeforelettingtheoriginal*requestresume.*/staticint
startCacheWrite(TSContcontp){if(cache_write_complete==1){if(log){TSTextLogObjectWrite(log,(char*)"CacheWriteAlreadyPreformed");}returnTS_ERROR;}cache_write_complete=1;if(log){TSTextLogObjectWrite(log,(char*)"CacheWriteStart");}constchar*my_url="
http://trafficserver.apache.org/
";MyDS*mds=(MyDS*)TSContDataGet(contp);mds->key=TSCacheKeyCreate();if(TSCacheKeyDiges
>
tSet(mds->key,my_url,strlen(my_url))!=TS_SUCCESS){if(log){TSTextLogObjectWrite(log,(char*)"TSCacheKeyDigestSetFailed");}returnTS_ERROR;}intis_ready=0;TSCacheReady(&is_ready);if(is_ready==0){if(log){TSTextLogObjectWrite(log,(char*)"Cacheisnotready");}returnTS_ERROR;}TSCacheWrite(contp,mds->key);returnTS_SUCCESS;}staticvoid
handle_txn_start(TSContcontp,TSHttpTxntxnp){TSConttxn_contp;MyDS*mds;txn_contp=TSContCreate((TSEventFunc)http_event_handler,TSMutexCreate());mds=(MyDS*)TSmalloc(sizeof(MyDS));TSContDataSet(txn_contp,mds);mds->txnp=txnp;mds->url=NULL;mds->key=NULL;mds->pendingAction=NULL;mds->bufp=NULL;mds->bufp_reader=NULL;mds->vio=NULL;TSHttpTxnHookAdd(txnp,TS_HTTP_SEND_RESPONSE_HDR_HOOK,txn_contp);TSHttpTxnHookAdd(txnp,TS_HTTP_TXN_CLOSE_HOOK,txn_contp);TSHttpTxnReenable(txnp,TS_EVENT_HTTP_CONTINUE);}staticvoid
destroy_continuation(TSHttpTxntxnp,TSContcontp){MyDS*mds=NULL;mds=(MyDS*)TSContDataGet(contp);if(mds!=NULL){if(mds->url){TSfree(mds->url);}if(mds->key){TSCacheKeyDe
>
stroy(mds->key);}if(mds->bufp){TSIOBufferDestroy(mds->bufp);}TSfree(mds);}TSContDestroy(contp);TSHttpTxnReenable(txnp,TS_EVENT_HTTP_CONTINUE);return;}//----------------------------------------------------------------------------//handlerforhttptxneventsstaticint
http_event_handler(TSContcontp,TSEventevent,void*edata){intstatus=TS_SUCCESS;inturl_length=0;TSHttpTxntxnp=(TSHttpTxn)edata;MyDS*mds=0;switch(event){caseTS_EVENT_HTTP_TXN_START:if(log){TSTextLogObjectWrite(log,(char*)"TS_EVENT_HTTP_TXN_START");}txnp=(TSHttpTxn)edata;handle_txn_start(contp,txnp);return0;caseTS_EVENT_HTTP_READ_REQUEST_HDR:if(log){TSTextLogObjectWrite(log,(char*)"TS_EVENT_HTTP_READ_REQUEST_HDR");}if(contp!=global_contp){mds=(MyDS*)TSContDataGet(contp);mds->url=TSHttpTxnEffectiveUrlStringGet(txnp,&url_length);if(!mds->url){TSError("[%s]couldn'tretrieverequesturl\n",PLUGIN_NAME);status=TS_ERROR;}if(status==TS_SUCCESS){if(log){TSTextLogObjectWrite(log,(char*)"Requestfor%sreceived",mds->url);}}}TSHttpTxnRee
>
nable(txnp,TS_EVENT_HTTP_CONTINUE);break;caseTS_EVENT_HTTP_SEND_RESPONSE_HDR:if(log){TSTextLogObjectWrite(log,(char*)"TS_HTTP_SEND_RESPONSE_HDR_HOOK");}if(contp!=global_contp){if(startCacheWrite(contp)==TS_ERROR){TSHttpTxnReenable(txnp,TS_EVENT_HTTP_CONTINUE);}}else{TSHttpTxnReenable(txnp,TS_EVENT_HTTP_CONTINUE);}break;caseTS_EVENT_HTTP_TXN_CLOSE:if(log){TSTextLogObjectWrite(log,(char*)"TS_EVENT_HTTP_TXN_CLOSE");}txnp=(TSHttpTxn)edata;if(contp!=global_contp){destroy_continuation(txnp,contp);}break;caseTS_EVENT_CACHE_OPEN_WRITE:if(log){TSTextLogObjectWrite(log,(char*)"TS_EVENT_CACHE_OPEN_WRITE");}if(contp!=global_contp){mds=(MyDS*)TSContDataGet(contp);mds->vconn=(TSVConn)edata;constchar*my_url="
http://trafficserver.apache.org/
";mds->bufp=TSIOBufferCreate();if(TSIOBufferWrite(mds->bufp,my_url,strlen(my_url))==TS_ERROR){if(log){TSTextLogObjectWrite(log,(char*)"TSIOBufferWriteError");}returnTS_ERROR;}mds->bufp_reader=TSIOBufferReaderAlloc(mds->bufp);mds->vio=TSVConnWrite(mds->vc
>
onn,contp,mds->bufp_reader,strlen(my_url));}break;caseTS_EVENT_VCONN_WRITE_READY:if(log){TSTextLogObjectWrite(log,(char*)"TS_EVENT_VCONN_WRITE_READY");}if(contp!=global_contp){mds=(MyDS*)TSContDataGet(contp);TSVIOReenable(mds->vio);}break;caseTS_EVENT_VCONN_WRITE_COMPLETE:if(log){TSTextLogObjectWrite(log,(char*)"TS_EVENT_VCONN_WRITE_COMPLETE\n");}mds=(MyDS*)TSContDataGet(contp);TSVConnClose(mds->vconn);TSIOBufferReaderFree(mds->bufp_reader);TSHttpTxnReenable(mds->txnp,TS_EVENT_HTTP_CONTINUE);break;caseTS_EVENT_CACHE_OPEN_WRITE_FAILED:if(log){TSTextLogObjectWrite(log,(char*)"TS_EVENT_CACHE_OPEN_WRITE_FAILED");}if(contp!=global_contp){mds=(MyDS*)TSContDataGet(contp);}TSVConnClose(mds->vconn);TSHttpTxnReenable(mds->txnp,TS_EVENT_HTTP_CONTINUE);break;default:break;}returnstatus;}//----------------------------------------------------------------------------void
TSPluginInit(intargc,constchar*argv[]){TSPluginRegistrationInfoinfo;info.plugin_name=(char*)PLUGIN_NAME;info.vendor_name
> =(char*)"vendor";info.support_email=(char*)"supp...@email.com";if(TSPluginRegister(TS_SDK_VERSION_3_0,&info)!=TS_SUCCESS){TSError("Pluginregistrationfailed.\n");}if(!check_ts_version()){TSError("PluginrequiresTrafficServer3.0orlater\n");return;}interror=TSTextLogObjectCreate("my-plugin",TS_LOG_MODE_ADD_TIMESTAMP,&log);if(!log||error==TS_ERROR){TSError("[%s]Errorcreatinglogfile\n",PLUGIN_NAME);}global_contp=TSContCreate(http_event_handler,TSMutexCreate());TSHttpHookAdd(TS_HTTP_TXN_START_HOOK,global_contp);TSDebug(PLUGIN_NAME,"TSPluginInitComplete!\n");}//----------------------------------------------------------------------------int
check_ts_version(){constchar*ts_version=TSTrafficServerVersionGet();intresult=0;if(ts_version){intmajor_ts_version=0;intminor_ts_version=0;intpatch_ts_version=0;if(sscanf(ts_version,"%d.%d.%d",&major_ts_version,&minor_ts_version,&patch_ts_version)!=3){return0;}/*NeedatleastTS2.0*/if(major_ts_version>=2){result=1;}}returnresult;}

Reply via email to