You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Ganesh Murthy (Jira)" <ji...@apache.org> on 2019/09/09 21:20:00 UTC

[jira] [Updated] (DISPATCH-1373) the log system mutex is held far too long

     [ https://issues.apache.org/jira/browse/DISPATCH-1373?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ganesh Murthy updated DISPATCH-1373:
------------------------------------
    Fix Version/s:     (was: 1.9.0)

> the log system mutex is held far too long
> -----------------------------------------
>
>                 Key: DISPATCH-1373
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-1373
>             Project: Qpid Dispatch
>          Issue Type: Bug
>          Components: Router Node
>    Affects Versions: 1.8.0
>            Reporter: Ken Giusti
>            Priority: Major
>
> The log code holds the log mutex(s) too long.  Depending on the log level (trace+ is worst) the lock has been observed being held for > 30 milliseconds.
> The log lock is a singleton that is acquired by all calls to qd_log (active log level only) - which means it is a global lock.
> It appears as if the lock is held while doing I/O and alloc/dealloc'ing memory - which may be expensive (in qd_vlog_impl() in log.c):
>  
> {{    // Bounded buffer of log entries, keep most recent.}}
> {{    *sys_mutex_lock(log_lock);*}}
> {{    qd_log_entry_t *entry = new_qd_log_entry_t();}}
> {{    DEQ_ITEM_INIT(entry);}}
> {{    entry->module = source->module;}}
> {{    entry->level  = level;}}
> {{    entry->file   = file ? strdup(file) : 0;}}
> {{    entry->line   = line;}}
> {{    gettimeofday(&entry->time, NULL);}}
> {{    vsnprintf(entry->text, TEXT_MAX, fmt, ap);}}
> {{    write_log(source, entry);}}
> {{    DEQ_INSERT_TAIL(entries, entry);}}
> {{    if (DEQ_SIZE(entries) > LIST_MAX)}}
> {{        qd_log_entry_free_lh(DEQ_HEAD(entries));}}
> {{    *sys_mutex_unlock(log_lock);*}}{{}}
>  



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org