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) {

Reply via email to