This is an automated email from the ASF dual-hosted git repository. maskit pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push: new 8b2e21a178 Remove the direct dependency for HttpCacheSM from iocore/cache (#10721) 8b2e21a178 is described below commit 8b2e21a1781adee7796991e2cc2a0356f5d3fe42 Author: Masakazu Kitajo <mas...@apache.org> AuthorDate: Tue Nov 28 05:39:36 2023 +0900 Remove the direct dependency for HttpCacheSM from iocore/cache (#10721) * Remove the direct dependency for HttpCacheSM from iocore/cache * Update tests * Fix typo --- include/iocore/cache/CacheDefs.h | 3 ++- src/iocore/cache/CacheRead.cc | 5 +---- src/iocore/cache/unit_tests/CacheTestHandler.cc | 2 ++ src/iocore/cache/unit_tests/main.cc | 3 +++ src/iocore/cache/unit_tests/test_Alternate_S_to_L.cc | 2 ++ src/iocore/cache/unit_tests/test_RWW.cc | 7 +++++++ src/iocore/cache/unit_tests/test_Update_S_to_L.cc | 2 ++ src/proxy/http/HttpCacheSM.cc | 4 ++++ 8 files changed, 23 insertions(+), 5 deletions(-) diff --git a/include/iocore/cache/CacheDefs.h b/include/iocore/cache/CacheDefs.h index 8165ce1973..e6e36e7028 100644 --- a/include/iocore/cache/CacheDefs.h +++ b/include/iocore/cache/CacheDefs.h @@ -75,7 +75,8 @@ enum CacheEventType { CACHE_EVENT_LOOKUP_FAILED = CACHE_EVENT_EVENTS_START + 1, CACHE_EVENT_OPEN_READ = CACHE_EVENT_EVENTS_START + 2, CACHE_EVENT_OPEN_READ_FAILED = CACHE_EVENT_EVENTS_START + 3, - // 4-7 unused + CACHE_EVENT_OPEN_READ_RWW = CACHE_EVENT_EVENTS_START + 4, + // 5-7 unused CACHE_EVENT_OPEN_WRITE = CACHE_EVENT_EVENTS_START + 8, CACHE_EVENT_OPEN_WRITE_FAILED = CACHE_EVENT_EVENTS_START + 9, CACHE_EVENT_REMOVE = CACHE_EVENT_EVENTS_START + 12, diff --git a/src/iocore/cache/CacheRead.cc b/src/iocore/cache/CacheRead.cc index 19c35e96d2..7270ba5a5e 100644 --- a/src/iocore/cache/CacheRead.cc +++ b/src/iocore/cache/CacheRead.cc @@ -23,8 +23,6 @@ #include "P_Cache.h" -#include "proxy/http/HttpCacheSM.h" //Added to get the scope of HttpCacheSM object. - namespace { @@ -168,8 +166,7 @@ Lmiss: cont->handleEvent(CACHE_EVENT_OPEN_READ_FAILED, (void *)-ECACHE_NO_DOC); return ACTION_RESULT_DONE; Lwriter: - // this is a horrible violation of the interface and should be fixed (FIXME) - ((HttpCacheSM *)cont)->set_readwhilewrite_inprogress(true); + cont->handleEvent(CACHE_EVENT_OPEN_READ_RWW, nullptr); SET_CONTINUATION_HANDLER(c, &CacheVC::openReadFromWriter); if (c->handleEvent(EVENT_IMMEDIATE, nullptr) == EVENT_DONE) { return ACTION_RESULT_DONE; diff --git a/src/iocore/cache/unit_tests/CacheTestHandler.cc b/src/iocore/cache/unit_tests/CacheTestHandler.cc index f3b9b1470f..6a45c4f594 100644 --- a/src/iocore/cache/unit_tests/CacheTestHandler.cc +++ b/src/iocore/cache/unit_tests/CacheTestHandler.cc @@ -60,6 +60,8 @@ CacheTestHandler::handle_cache_event(int event, CacheTestBase *base) base->close(); delete this; break; + case CACHE_EVENT_OPEN_READ_RWW: + break; case CACHE_EVENT_OPEN_READ_FAILED: case CACHE_EVENT_OPEN_WRITE_FAILED: case VC_EVENT_ERROR: diff --git a/src/iocore/cache/unit_tests/main.cc b/src/iocore/cache/unit_tests/main.cc index ccce80aea6..895b478541 100644 --- a/src/iocore/cache/unit_tests/main.cc +++ b/src/iocore/cache/unit_tests/main.cc @@ -312,6 +312,9 @@ CacheReadTest::read_event(int event, void *e) case CACHE_EVENT_OPEN_READ_FAILED: this->process_event(event); break; + case CACHE_EVENT_OPEN_READ_RWW: + this->process_event(event); + break; case VC_EVENT_READ_READY: { while (this->_reader->block_read_avail()) { auto str = this->_reader->block_read_view(); diff --git a/src/iocore/cache/unit_tests/test_Alternate_S_to_L.cc b/src/iocore/cache/unit_tests/test_Alternate_S_to_L.cc index 6195eedce2..d83e2e95f5 100644 --- a/src/iocore/cache/unit_tests/test_Alternate_S_to_L.cc +++ b/src/iocore/cache/unit_tests/test_Alternate_S_to_L.cc @@ -135,6 +135,8 @@ public: base->do_io_read(); validate_content_type(base); break; + case CACHE_EVENT_OPEN_READ_RWW: + break; case VC_EVENT_READ_READY: base->reenable(); break; diff --git a/src/iocore/cache/unit_tests/test_RWW.cc b/src/iocore/cache/unit_tests/test_RWW.cc index 2b6b3fe48a..580f82c322 100644 --- a/src/iocore/cache/unit_tests/test_RWW.cc +++ b/src/iocore/cache/unit_tests/test_RWW.cc @@ -153,6 +153,8 @@ CacheRWWTest::process_read_event(int event, CacheTestBase *base) case CACHE_EVENT_OPEN_READ: base->do_io_read(); break; + case CACHE_EVENT_OPEN_READ_RWW: + break; case VC_EVENT_READ_READY: Dbg(dbg_ctl_cache_rww_test, "cache read reenable"); this->_read_event = nullptr; @@ -188,6 +190,7 @@ CacheRWWTest::handle_cache_event(int event, CacheTestBase *base) break; case CACHE_EVENT_OPEN_READ: case CACHE_EVENT_OPEN_READ_FAILED: + case CACHE_EVENT_OPEN_READ_RWW: case VC_EVENT_ERROR: case VC_EVENT_EOS: case VC_EVENT_READ_READY: @@ -271,6 +274,8 @@ public: REQUIRE(this->_size == SMALL_FILE); this->close_read(); return; + case CACHE_EVENT_OPEN_READ_RWW: + return; case VC_EVENT_READ_READY: if (this->_wt) { this->_wt->reenable(); @@ -358,6 +363,8 @@ public: this->_is_read_start = true; base->do_io_read(UINT32_MAX); break; + case CACHE_EVENT_OPEN_READ_RWW: + break; case VC_EVENT_READ_READY: if (this->_wt) { this->_wt->reenable(); diff --git a/src/iocore/cache/unit_tests/test_Update_S_to_L.cc b/src/iocore/cache/unit_tests/test_Update_S_to_L.cc index 906d93fa2e..cdb86f6aa3 100644 --- a/src/iocore/cache/unit_tests/test_Update_S_to_L.cc +++ b/src/iocore/cache/unit_tests/test_Update_S_to_L.cc @@ -56,6 +56,8 @@ public: base->do_io_read(); REQUIRE(base->vc->alternate.get_frag_offset_count() > 8); break; + case CACHE_EVENT_OPEN_READ_RWW: + break; case VC_EVENT_READ_READY: base->reenable(); break; diff --git a/src/proxy/http/HttpCacheSM.cc b/src/proxy/http/HttpCacheSM.cc index 08004c347c..9661dec19e 100644 --- a/src/proxy/http/HttpCacheSM.cc +++ b/src/proxy/http/HttpCacheSM.cc @@ -118,6 +118,10 @@ HttpCacheSM::state_cache_open_read(int event, void *data) master_sm->handleEvent(event, &captive_action); break; + case CACHE_EVENT_OPEN_READ_RWW: + set_readwhilewrite_inprogress(true); + break; + case CACHE_EVENT_OPEN_READ_FAILED: err_code = reinterpret_cast<intptr_t>(data); if ((intptr_t)data == -ECACHE_DOC_BUSY) {