| Summary: | RFE: Evaluate MAX_*_LOG values | ||
|---|---|---|---|
| Product: | Red Hat Enterprise MRG | Reporter: | Tomas Rusnak <trusnak> |
| Component: | condor | Assignee: | Matthew Farrellee <matt> |
| Status: | CLOSED WONTFIX | QA Contact: | MRG Quality Engineering <mrgqe-bugs> |
| Severity: | high | Docs Contact: | |
| Priority: | low | ||
| Version: | 1.0 | CC: | eerlands, iboverma, jneedle, matt, mkudlej, tkatarki, tross |
| Target Milestone: | 2.1.1 | Keywords: | Reopened |
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2011-11-22 13:49:59 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
|
Description
Tomas Rusnak
2011-11-09 10:01:38 UTC
This is because there is no param_long_long() or param_off_t(). Integer types in ClassAds are 32-bit.
src/condor_utils/dprintf_config.cpp
if (debug_level == 0) {
(void)sprintf(pname, "MAX_%s_LOG", subsys);
} else {
(void)sprintf(pname, "MAX_%s_%s_LOG", subsys,
_condor_DebugFlagNames[debug_level-1]+2);
}
off_t maxlog = 0;
pval = param(pname);
if (pval != NULL) {
// because there is nothing like param_long_long() or param_off_t()
bool r = lex_cast(pval, maxlog);
if (!r || (maxlog < 0)) {
EXCEPT("Invalid config: %s = %s", pname, pval);
}
MaxLog[debug_level] = maxlog;
free(pval);
} else {
MaxLog[debug_level] = 1024*1024;
}
This may have to be WONTFIX.
Note - there is an inconsistency here, some MAX_..._LOG config params are evaluated (those using param_integer),
$ git grep MAX_ | grep _LOG | grep param | grep \.cpp
src/condor_schedd.V6/schedd.cpp: int max_saved_rotations = param_integer( "MAX_JOB_QUEUE_LOG_ROTATIONS", DEFAULT_MAX_JOB_QUEUE_LOG_ROTATIONS );
src/condor_schedd.V6/schedd_main.cpp: int max_historical_logs = param_integer( "MAX_JOB_QUEUE_LOG_ROTATIONS", DEFAULT_MAX_JOB_QUEUE_LOG_ROTATIONS );
src/condor_utils/classadHistory.cpp: MaxHistoryFileSize = param_integer("MAX_HISTORY_LOG",
src/condor_utils/file_xml.cpp: xml_log_limit = param_integer("MAX_XML_LOG", FILESIZELIMT);
src/condor_utils/proc_family_proxy.cpp: char *procd_log_size = param("MAX_PROCD_LOG");
src/condor_utils/read_user_log.cpp: int max_rotations = param_integer( "EVENT_LOG_MAX_ROTATIONS", 1, 0 );
src/condor_utils/write_user_log.cpp: m_global_max_rotations = param_integer( "EVENT_LOG_MAX_ROTATIONS", 1, 0 );
src/condor_utils/write_user_log.cpp: m_global_max_filesize = param_integer( "EVENT_LOG_MAX_SIZE", -1 );
src/condor_utils/write_user_log.cpp: m_global_max_filesize = param_integer( "MAX_EVENT_LOG", 1000000, 0 );
(In reply to comment #0) > Steps to Reproduce: > 1. set in config MAX_SCHEDD_LOG=a or MAX_SCHEDD_LOG=1024*1024 > 2. service condor restart > 3. ps ax | grep condor -> no schedd is running > 4. check MasterLog > > Actual results: > The value other then simple number is ignored. Daemon is aborted without any > details in logs. As Matt described, values like "1024*1024" which require expression evaluation cannot be addressed currently for MAX_<SUBSYS>_LOG, because the classad library does not currently support 64-bit integer values. Currently, this forces a choice between supporting 64-bit max-log values and supporting generalized expression eval. Support for 64-bit max log values was considered more important to users. There is an upstream RFE for supporting 64-bit integer values in classads: https://condor-wiki.cs.wisc.edu/index.cgi/tktview?tn=2472 Until that RFE is addressed, I agree that this should be "wontfix" (or maybe "deferred"?) Deferred until https://condor-wiki.cs.wisc.edu/index.cgi/tktview?tn=2472, desire for MAX_..._LOG evaluation recorded upstream. |