This is an automated email from the ASF dual-hosted git repository.

vmamidi 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 4d9279c  Revert "TS-4796 Change UnixNetHandler to always bubble up 
epoll errors to the VConnection" this reverts PRs #1559, #1522 and #947
4d9279c is described below

commit 4d9279cc2cc7cc88c930e12338230c0d9a231f6a
Author: Vijay Mamidi <[email protected]>
AuthorDate: Wed Jun 7 18:38:22 2017 -0700

    Revert "TS-4796 Change UnixNetHandler to always bubble up epoll errors to 
the VConnection"
    this reverts PRs #1559, #1522 and #947
    
    This reverts commit c1ac5f8bf87fd4bc3a8e06507219970d83965acd.
---
 iocore/net/P_UnixNetState.h       |  3 +--
 iocore/net/P_UnixNetVConnection.h |  1 -
 iocore/net/UnixNet.cc             | 30 ++++++++---------------
 iocore/net/UnixNetVConnection.cc  | 50 ---------------------------------------
 4 files changed, 11 insertions(+), 73 deletions(-)

diff --git a/iocore/net/P_UnixNetState.h b/iocore/net/P_UnixNetState.h
index 3b9e531..1d80628 100644
--- a/iocore/net/P_UnixNetState.h
+++ b/iocore/net/P_UnixNetState.h
@@ -45,14 +45,13 @@ class UnixNetVConnection;
 
 struct NetState {
   volatile int enabled;
-  volatile int error;
   VIO vio;
   Link<UnixNetVConnection> ready_link;
   SLink<UnixNetVConnection> enable_link;
   int in_enabled_list;
   int triggered;
 
-  NetState() : enabled(0), error(0), vio(VIO::NONE), in_enabled_list(0), 
triggered(0) {}
+  NetState() : enabled(0), vio(VIO::NONE), in_enabled_list(0), triggered(0) {}
 };
 
 #endif
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index 1bd2eb9..9335a5b 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -211,7 +211,6 @@ public:
   virtual int64_t load_buffer_and_write(int64_t towrite, MIOBufferAccessor 
&buf, int64_t &total_written, int &needs);
   void readDisable(NetHandler *nh);
   void readSignalError(NetHandler *nh, int err);
-  void writeSignalError(NetHandler *nh, int err);
   int readSignalDone(int event, NetHandler *nh);
   int readSignalAndUpdate(int event);
   void readReschedule(NetHandler *nh);
diff --git a/iocore/net/UnixNet.cc b/iocore/net/UnixNet.cc
index b11dc06..233c99d 100644
--- a/iocore/net/UnixNet.cc
+++ b/iocore/net/UnixNet.cc
@@ -453,13 +453,8 @@ NetHandler::mainNetEvent(int event, Event *e)
       if (cop_list.in(vc)) {
         cop_list.remove(vc);
       }
-      if (get_ev_events(pd, x) & EVENTIO_READ) {
+      if (get_ev_events(pd, x) & (EVENTIO_READ | EVENTIO_ERROR)) {
         vc->read.triggered = 1;
-        if (get_ev_events(pd, x) & EVENTIO_ERROR) {
-          vc->read.error = 1;
-        } else {
-          vc->read.error = 0;
-        }
         if (!read_ready_list.in(vc)) {
           read_ready_list.enqueue(vc);
         } else if (get_ev_events(pd, x) & EVENTIO_ERROR) {
@@ -469,13 +464,8 @@ NetHandler::mainNetEvent(int event, Event *e)
         }
       }
       vc = epd->data.vc;
-      if (get_ev_events(pd, x) & EVENTIO_WRITE) {
+      if (get_ev_events(pd, x) & (EVENTIO_WRITE | EVENTIO_ERROR)) {
         vc->write.triggered = 1;
-        if (get_ev_events(pd, x) & EVENTIO_ERROR) {
-          vc->write.error = 1;
-        } else {
-          vc->write.error = 0;
-        }
         if (!write_ready_list.in(vc)) {
           write_ready_list.enqueue(vc);
         } else if (get_ev_events(pd, x) & EVENTIO_ERROR) {
@@ -506,11 +496,11 @@ NetHandler::mainNetEvent(int event, Event *e)
   while ((vc = read_ready_list.dequeue())) {
     // Initialize the thread-local continuation flags
     set_cont_flags(vc->control_flags);
-    if (vc->closed) {
+    if (vc->closed)
       close_UnixNetVConnection(vc, trigger_event->ethread);
-    } else if (vc->read.triggered && (vc->read.enabled || (vc->read.error && 
vc->read.vio._cont != nullptr))) {
+    else if (vc->read.enabled && vc->read.triggered)
       vc->net_read_io(this, trigger_event->ethread);
-    } else if (!vc->read.enabled) {
+    else if (!vc->read.enabled) {
       read_ready_list.remove(vc);
 #if defined(solaris)
       if (vc->read.triggered && vc->write.enabled) {
@@ -523,11 +513,11 @@ NetHandler::mainNetEvent(int event, Event *e)
   }
   while ((vc = write_ready_list.dequeue())) {
     set_cont_flags(vc->control_flags);
-    if (vc->closed) {
+    if (vc->closed)
       close_UnixNetVConnection(vc, trigger_event->ethread);
-    } else if (vc->write.triggered && (vc->write.enabled || (vc->write.error 
&& vc->write.vio._cont != nullptr))) {
+    else if (vc->write.enabled && vc->write.triggered)
       write_to_net(this, vc, trigger_event->ethread);
-    } else if (!vc->write.enabled) {
+    else if (!vc->write.enabled) {
       write_ready_list.remove(vc);
 #if defined(solaris)
       if (vc->write.triggered && vc->read.enabled) {
@@ -543,7 +533,7 @@ NetHandler::mainNetEvent(int event, Event *e)
     diags->set_override(vc->control.debug_override);
     if (vc->closed)
       close_UnixNetVConnection(vc, trigger_event->ethread);
-    else if (vc->read.triggered && (vc->read.enabled || (vc->read.error && 
vc->read.vio._cont != nullptr)))
+    else if (vc->read.enabled && vc->read.triggered)
       vc->net_read_io(this, trigger_event->ethread);
     else if (!vc->read.enabled)
       vc->ep.modify(-EVENTIO_READ);
@@ -552,7 +542,7 @@ NetHandler::mainNetEvent(int event, Event *e)
     diags->set_override(vc->control.debug_override);
     if (vc->closed)
       close_UnixNetVConnection(vc, trigger_event->ethread);
-    else if (vc->write.triggered && (vc->write.enabled || (vc->write.error && 
vc->write.vio._cont != nullptr)))
+    else if (vc->write.enabled && vc->write.triggered)
       write_to_net(this, vc, trigger_event->ethread);
     else if (!vc->write.enabled)
       vc->ep.modify(-EVENTIO_WRITE);
diff --git a/iocore/net/UnixNetVConnection.cc b/iocore/net/UnixNetVConnection.cc
index ef8dbaf..0a2f9d1 100644
--- a/iocore/net/UnixNetVConnection.cc
+++ b/iocore/net/UnixNetVConnection.cc
@@ -265,33 +265,6 @@ read_from_net(NetHandler *nh, UnixNetVConnection *vc, 
EThread *thread)
     close_UnixNetVConnection(vc, thread);
     return;
   }
-
-  if (!s->enabled && vc->read.error) {
-    int err = 0, errlen = sizeof(int);
-    if (getsockopt(vc->con.fd, SOL_SOCKET, SO_ERROR, &err, (socklen_t 
*)&errlen) == -1) {
-      err = errno;
-    }
-
-    // if it is a non-temporary error, we should die appropriately
-    if (err && err != EAGAIN && err != EINTR) {
-      Continuation *reader_cont = vc->read.vio._cont;
-
-      if (read_signal_error(nh, vc, err) == EVENT_DONE) {
-        return;
-      }
-      // If vc is closed or shutdown(WRITE) in last read_signal_error callback,
-      //   or reader_cont is same as write.vio._cont.
-      // Then we must clear the write.error to avoid callback EVENT_ERROR to 
SM by write_ready_list.
-      if (vc->closed || (vc->f.shutdown & NET_VC_SHUTDOWN_WRITE) || 
reader_cont == vc->write.vio._cont) {
-        vc->write.error = 0;
-      }
-      return;
-    }
-
-    // clear read.error if it is non-fatal error
-    vc->read.error = 0;
-  }
-
   // if it is not enabled.
   if (!s->enabled || s->vio.op != VIO::READ) {
     read_disable(nh, vc);
@@ -464,23 +437,6 @@ write_to_net_io(NetHandler *nh, UnixNetVConnection *vc, 
EThread *thread)
     return;
   }
 
-  if (!s->enabled && vc->write.error) {
-    int err = 0, errlen = sizeof(int);
-    if (getsockopt(vc->con.fd, SOL_SOCKET, SO_ERROR, &err, (socklen_t 
*)&errlen) == -1) {
-      err = errno;
-    }
-
-    if (err && err != EAGAIN && err != EINTR) {
-      // Here is differ to net_read_io since read_signal_error always callback 
first.
-      // NetHandler::mainNetEvent() is always handle read_ready_list first and 
then write_ready_list.
-      write_signal_error(nh, vc, err);
-      return;
-    }
-
-    // clear write.error if it is non-fatal error.
-    vc->write.error = 0;
-  }
-
   // This function will always return true unless
   // vc is an SSLNetVConnection.
   if (!vc->getSSLHandShakeComplete()) {
@@ -1150,12 +1106,6 @@ UnixNetVConnection::readSignalError(NetHandler *nh, int 
err)
   read_signal_error(nh, this, err);
 }
 
-void
-UnixNetVConnection::writeSignalError(NetHandler *nh, int err)
-{
-  write_signal_error(nh, this, err);
-}
-
 int
 UnixNetVConnection::readSignalDone(int event, NetHandler *nh)
 {

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to