MCPcopy Create free account
hub / github.com/apache/trafficserver / openWriteStartBegin

Method openWriteStartBegin

src/iocore/cache/CacheWrite.cc:778–804  ·  view source on GitHub ↗

handle lock failures from main Cache::open_write entry points below

Source from the content-addressed store, hash-verified

776
777// handle lock failures from main Cache::open_write entry points below
778int
779CacheVC::openWriteStartBegin(int /* event ATS_UNUSED */, Event * /* e ATS_UNUSED */)
780{
781 intptr_t err;
782 cancel_trigger();
783 if (_action.cancelled) {
784 return free_CacheVC(this);
785 }
786 if (((err = stripe->open_write_lock(this, false, 1)) > 0)) {
787 ts::Metrics::Counter::increment(cache_rsb.status[op_type].failure);
788 ts::Metrics::Counter::increment(stripe->cache_vol->vol_rsb.status[op_type].failure);
789 free_CacheVC(this);
790 _action.continuation->handleEvent(CACHE_EVENT_OPEN_WRITE_FAILED, reinterpret_cast<void *>(-err));
791 return EVENT_DONE;
792 }
793 if (err < 0) {
794 VC_SCHED_LOCK_RETRY();
795 }
796 if (f.overwrite) {
797 SET_HANDLER(&CacheVC::openWriteOverwrite);
798 return openWriteOverwrite(EVENT_IMMEDIATE, nullptr);
799 } else {
800 // write by key
801 SET_HANDLER(&CacheVC::openWriteMain);
802 return callcont(CACHE_EVENT_OPEN_WRITE);
803 }
804}

Callers

nothing calls this directly

Calls 4

free_CacheVCFunction · 0.85
incrementFunction · 0.85
open_write_lockMethod · 0.80
handleEventMethod · 0.45

Tested by

no test coverage detected