[ https://issues.apache.org/jira/browse/TS-4612?focusedWorklogId=26015&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-26015 ]
ASF GitHub Bot logged work on TS-4612: -------------------------------------- Author: ASF GitHub Bot Created on: 26/Jul/16 16:26 Start Date: 26/Jul/16 16:26 Worklog Time Spent: 10m Work Description: Github user oknet commented on the issue: https://github.com/apache/trafficserver/pull/771 @bryancall to review the codes of ClusterHandlerBase.cc ``` 979 thread = eventProcessor.eventthread[ET_CLUSTER][id % num_of_cluster_threads]; 980 if (net_vc->thread == thread) { 981 cluster_connect_state = CLCON_CONN_BIND_OK; 982 break; 983 } else { 984 cluster_connect_state = ClusterHandler::CLCON_CONN_BIND_CLEAR; 985 } ``` From my understanding of the code, the codes from L1007 to L1033 means: 1. the net_vc bind to unmatched thread 2. It should unbind(L1012-1022) and then rebind(L1024-L1027) to another thread I think the unbind include remove vc from cop_list here. because the InactivityCop only push the vc->thread == this_ethread() into cop_list, but the vc->thread set to NULL in L1014. ``` // Copy the list and use pop() to catch any closes caused by callbacks. forl_LL(UnixNetVConnection, vc, nh.open_list) { if (vc->thread == this_ethread()) { nh.cop_list.push(vc); } } ``` Issue Time Tracking ------------------- Worklog Id: (was: 26015) Time Spent: 3h 20m (was: 3h 10m) > Proposal: InactivityCop Optimize > -------------------------------- > > Key: TS-4612 > URL: https://issues.apache.org/jira/browse/TS-4612 > Project: Traffic Server > Issue Type: Bug > Components: Core, Network > Reporter: Oknet Xu > Fix For: sometime > > Time Spent: 3h 20m > Remaining Estimate: 0h > > By review the processing of InactivityCop::check_inactivity(): > 1. get all local vc from open_list > 2. put them into cop_list > 3. check every vc in cop_list if it is already timeouted > 4. callback vc->handleEvent to close vc if it is timeout > InactivityCop and NetHandler share one mutex. > InactivityCop runs every second, NetHandler runs every 10ms, that means > Nethandler runs 100 times until next InactivityCop runs. > if one vc has read/write in a Nethandler call, it is won't be timeout in the > next InactivityCop run. > Thus, if the vc has read/write in Nethandler, we move it out of cop-list then > the InactivityCop runs would get better performace. -- This message was sent by Atlassian JIRA (v6.3.4#6332)