[ 
https://issues.apache.org/jira/browse/TS-4539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15333670#comment-15333670
 ] 

Oknet Xu commented on TS-4539:
------------------------------

Client_vc->mutex is alloced in NetAccept by {code}vc->mutex = 
new_ProxyMutex();{code}

and

Server_vc->mutex is set to {code}vc->mutex = cont->mutex;{code} in 
UnixNetProcessor::connect_re_internal().

the connect_re_internal() is called by NetProcessor::connect_re().

{code}
  if (scheme_to_use == URL_WKSIDX_HTTPS) {
    DebugSM("http", "calling sslNetProcessor.connect_re");
    int len = 0;
    const char *host = t_state.hdr_info.server_request.host_get(&len);
    if (host && len > 0)
      opt.set_sni_servername(host, len);
    connect_action_handle = sslNetProcessor.connect_re(this,                    
             // state machine
                                                       
&t_state.current.server->dst_addr.sa, // addr + port
                                                       &opt);
  } else {
    if (t_state.method != HTTP_WKSIDX_CONNECT) {
      DebugSM("http", "calling netProcessor.connect_re");
      connect_action_handle = netProcessor.connect_re(this,                     
            // state machine
                                                      
&t_state.current.server->dst_addr.sa, // addr + port
                                                      &opt);
    } else {
{code}

acroding the above code in HttpSM::do_http_server_open(), the cont is HttpSM.

the Server_vc->mutex is set to HttpSM->mutex.

the Server_vc->mutex is not set to EThread->mutex as your said.


> the mutex of server_vc is not set while server_session reuse.
> -------------------------------------------------------------
>
>                 Key: TS-4539
>                 URL: https://issues.apache.org/jira/browse/TS-4539
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: HTTP
>            Reporter: Oknet Xu
>
> NetAccept got a client_vc and call new_ProxyMutex() to assign a mutex.
> And the HttpClientSession, HttpSM, HttpServerSession, server_vc also share 
> the same mutex.
> The HttpServerSession and server_vc will put into ServerSessionPool and may 
> assign to next new client_vc.
> The HttpSM::attach_server_session() only set the mutex of HttpServerSession 
> to the mutex of HttpSM after get a HttpServerSession from ServerSessionPool.
> But it forget to set the mutex of server_vc to the mutex of HttpSM.
>  
> {code}
> void
> HttpSM::attach_server_session(HttpServerSession *s)
> {
>   hsm_release_assert(server_session == NULL);
>   hsm_release_assert(server_entry == NULL);
>   hsm_release_assert(s->state == HSS_ACTIVE);
>   server_session = s; 
>   server_session->transact_count++;
>   // Set the mutex so that we have something to update
>   //   stats with
>   server_session->mutex = this->mutex;
> {code}
> But I can not found any issue, Is it by design?
> Or it is hard to locate the problem, due to my limited knowedge on HttpSM.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to