unsigned int
SQueueParameters::ReadRunTimeoutPrecision(const IRegistry &  reg,
                                          const string &     sname)
{
    return GetIntNoErr("run_timeout_precision",
                       default_run_timeout_precision);
}
unsigned int
SQueueParameters::ReadNotifLofreqMult(const IRegistry &  reg,
                                      const string &     sname)
{
    unsigned int    val = GetIntNoErr("notif_lofreq_mult",
                                      default_notif_lofreq_mult);
    if (val <= 0)
        val = default_notif_lofreq_mult;
    return val;
}
time_t
SQueueParameters::ReadPendingTimeout(const IRegistry &  reg,
                                     const string &     sname)
{
    time_t  val = GetIntNoErr("pending_timeout", default_pending_timeout);

    if (val <= 0)
        val = default_pending_timeout;
    return val;
}
unsigned int
SQueueParameters::ReadNotifHifreqPeriod(const IRegistry &  reg,
                                        const string &     sname)
{
    unsigned int    val = GetIntNoErr("notif_hifreq_period",
                                      default_notif_hifreq_period);
    if (val <= 0)
        val = default_notif_hifreq_period;
    return val;
}
unsigned int
SQueueParameters::ReadDumpBufferSize(const IRegistry &  reg,
                                     const string &     sname)
{
    unsigned int    val = GetIntNoErr("dump_buffer_size",
                                      default_dump_buffer_size);
    if (val < default_dump_buffer_size)
        val = default_dump_buffer_size;  // Avoid too small buffer
    else if (val > 10000)
        val = 10000;                     // Avoid too large buffer
    return val;
}
Esempio n. 6
0
void SNSRegistryParameters::Read(const IRegistry &  reg,
                                 const string &  sname,
                                 const string &  name,
                                 unsigned int  default_max,
                                 unsigned int  default_high_mark_percentage,
                                 unsigned int  default_low_mark_percentage,
                                 unsigned int  default_high_removal,
                                 unsigned int  default_low_removal,
                                 unsigned int  default_dirt_percentage)
{
    string      plural;
    if (name == "affinity")
        plural = "affinities";
    else
        plural = name + "s";

    max_records = GetIntNoErr("max_" + plural, default_max);
    if (max_records <= 0)
        max_records = default_max;

    // GC settings
    high_mark_percentage = GetIntNoErr(name + "_high_mark_percentage",
                                       default_high_mark_percentage);
    low_mark_percentage = GetIntNoErr(name + "_low_mark_percentage",
                                      default_low_mark_percentage);
    high_removal = GetIntNoErr(name + "_high_removal", default_high_removal);
    low_removal = GetIntNoErr(name + "_low_removal", default_low_removal);
    dirt_percentage = GetIntNoErr(name + "dirt_percentage",
                                  default_dirt_percentage);

    x_CheckGarbageCollectorSettings(default_high_mark_percentage,
                                    default_low_mark_percentage,
                                    default_high_removal,
                                    default_low_removal,
                                    default_dirt_percentage);
}
void SNS_Parameters::Read(const IRegistry& reg, const string& sname)
{
    reinit          = GetBoolNoErr("reinit", false);
    max_connections = GetIntNoErr("max_connections", default_max_connections);
    max_threads     = GetIntNoErr("max_threads", default_max_threads);

    init_threads = GetIntNoErr("init_threads", default_init_threads);
    if (init_threads > max_threads) {
        LOG_POST(Message << Warning <<
                 "INI file sets init_threads > max_threads. "
                 "Assume init_threads = max_threads(" << max_threads <<
                 ") instead of given " << init_threads);
        init_threads = max_threads;
    }

    port = (unsigned short) GetIntNoErr("port", default_port);

    use_hostname    = GetBoolNoErr("use_hostname", default_use_hostname);
    network_timeout = GetIntNoErr("network_timeout", default_network_timeout);
    if (network_timeout == 0) {
        LOG_POST(Message << Warning <<
                 "INI file sets 0 sec. network timeout. Assume " <<
                 default_network_timeout << " seconds.");
        network_timeout = default_network_timeout;
    }

    // Logging parameters
    is_log                       = GetBoolNoErr("log",
                                   default_is_log);
    log_batch_each_job           = GetBoolNoErr("log_batch_each_job",
                                   default_log_batch_each_job);
    log_notification_thread      = GetBoolNoErr("log_notification_thread",
                                   default_log_notification_thread);
    log_cleaning_thread          = GetBoolNoErr("log_cleaning_thread",
                                   default_log_cleaning_thread);
    log_execution_watcher_thread = GetBoolNoErr("log_execution_watcher_thread",
                                   default_log_execution_watcher_thread);
    log_statistics_thread        = GetBoolNoErr("log_statistics_thread",
                                   default_log_statistics_thread);

    // Job deleting parameters
    del_batch_size = GetIntNoErr("del_batch_size", default_del_batch_size);
    markdel_batch_size = GetIntNoErr("markdel_batch_size", default_markdel_batch_size);
    scan_batch_size = GetIntNoErr("scan_batch_size", default_scan_batch_size);
    purge_timeout = GetDoubleNoErr("purge_timeout", default_purge_timeout);
    CheckGarbageCollectorSettings();

    // Affinity GC settings
    affinity_high_mark_percentage = GetIntNoErr("affinity_high_mark_percentage",
                                    default_affinity_high_mark_percentage);
    affinity_low_mark_percentage = GetIntNoErr("affinity_low_mark_percentage",
                                   default_affinity_low_mark_percentage);
    affinity_high_removal = GetIntNoErr("affinity_high_removal",
                                        default_affinity_high_removal);
    affinity_low_removal = GetIntNoErr("affinity_low_removal",
                                       default_affinity_low_removal);
    affinity_dirt_percentage = GetIntNoErr("affinity_dirt_percentage",
                                           default_affinity_dirt_percentage);
    CheckAffinityGarbageCollectorSettings();

    // Max affinities
    max_affinities = GetIntNoErr("max_affinities", default_max_affinities);
    if (max_affinities <= 0) {
        LOG_POST(Message << Warning <<
                 "INI file sets the max number of preferred affinities <= 0."
                 " Assume " << default_max_affinities << " instead.");
        max_affinities = default_max_affinities;
    }

    admin_hosts        = reg.GetString(sname, "admin_host", kEmptyStr);
    admin_client_names = reg.GetString(sname, "admin_client_name", kEmptyStr);

    return;
}
time_t
SQueueParameters::ReadBlacklistTime(const IRegistry &  reg,
                                    const string &     sname)
{
    return GetIntNoErr("blacklist_time", default_blacklist_time);
}
unsigned int
SQueueParameters::ReadFailedRetries(const IRegistry &  reg,
                                    const string &     sname)
{
    return GetIntNoErr("failed_retries", default_failed_retries);
}
unsigned int
SQueueParameters::ReadTimeout(const IRegistry &  reg,
                              const string &     sname)
{
    return GetIntNoErr("timeout", default_timeout);
}
Esempio n. 11
0
// A configuration file is always already validated so the reading
// must not produce any log output etc.
// See ns_util.cpp NS_ValidateConfigFile(...)
void SNS_Parameters::Read(const IRegistry &  reg)
{
    const string    sname = "server";

    max_connections = GetIntNoErr("max_connections", default_max_connections);
    if (max_connections < max_connections_low_limit)
        max_connections = (max_connections_low_limit +
                           max_connections_high_limit) / 2;
    else if (max_connections > max_connections_high_limit)
        max_connections = max_connections_high_limit;

    max_threads     = GetIntNoErr("max_threads", default_max_threads);

    init_threads = GetIntNoErr("init_threads", default_init_threads);
    if (init_threads > max_threads)
        init_threads = max_threads;

    port = (unsigned short) GetIntNoErr("port", 0);

    use_hostname    = GetBoolNoErr("use_hostname", default_use_hostname);
    network_timeout = GetIntNoErr("network_timeout", default_network_timeout);
    if (network_timeout == 0)
        network_timeout = default_network_timeout;

    // Logging parameters
    is_log = GetBoolNoErr("log", default_is_log);
    log_batch_each_job = GetBoolNoErr("log_batch_each_job",
                                      default_log_batch_each_job);
    log_notification_thread = GetBoolNoErr("log_notification_thread",
                                           default_log_notification_thread);
    log_cleaning_thread = GetBoolNoErr("log_cleaning_thread",
                                        default_log_cleaning_thread);
    log_execution_watcher_thread = GetBoolNoErr("log_execution_watcher_thread",
                                        default_log_execution_watcher_thread);
    log_statistics_thread = GetBoolNoErr("log_statistics_thread",
                                         default_log_statistics_thread);

    // Job deleting parameters
    del_batch_size = GetIntNoErr("del_batch_size", default_del_batch_size);
    markdel_batch_size = GetIntNoErr("markdel_batch_size",
                                     default_markdel_batch_size);
    scan_batch_size = GetIntNoErr("scan_batch_size", default_scan_batch_size);
    purge_timeout = GetDoubleNoErr("purge_timeout", default_purge_timeout);
    x_CheckJobGarbageCollectorSettings();

    stat_interval = GetIntNoErr("stat_interval", default_stat_interval);
    if (stat_interval < 1)
        stat_interval = 1;

    int     val = GetIntNoErr("job_counters_interval",
                              default_job_counters_interval);
    if (val < 0)
        job_counters_interval = 0;
    else
        job_counters_interval = val;

    affinity_reg.Read(reg, sname, "affinity",
                      default_max_affinities,
                      default_affinity_high_mark_percentage,
                      default_affinity_low_mark_percentage,
                      default_affinity_high_removal,
                      default_affinity_low_removal,
                      default_affinity_dirt_percentage);
    group_reg.Read(reg, sname, "group",
                   default_max_groups,
                   default_group_high_mark_percentage,
                   default_group_low_mark_percentage,
                   default_group_high_removal,
                   default_group_low_removal,
                   default_group_dirt_percentage);
    scope_reg.Read(reg, sname, "scope",
                   default_max_scopes,
                   default_scope_high_mark_percentage,
                   default_scope_low_mark_percentage,
                   default_scope_high_removal,
                   default_scope_low_removal,
                   default_scope_dirt_percentage);

    reserve_dump_space = NS_GetDataSize(reg, "server", "reserve_dump_space",
                                        default_reserve_dump_space);
    wst_cache_size = GetIntNoErr("wst_cache_size",
                                 default_wst_cache_size);
    if (wst_cache_size < 0)
        wst_cache_size = default_wst_cache_size;


    max_client_data = GetIntNoErr("max_client_data", default_max_client_data);
    if (max_client_data <= 0)
        max_client_data = default_max_client_data;

    admin_hosts        = reg.GetString(sname, "admin_host", kEmptyStr);
    try {
        admin_client_names = reg.GetEncryptedString(sname, "admin_client_name",
                                                IRegistry::fPlaintextAllowed);
    } catch (...) {
        // All the warnings are collected at the time of validating the
        // configuration file, so here a problem is simply suppressed
    }

    state_transition_perf_log_queues = reg.GetString(sname,
                            "state_transition_perf_log_queues", kEmptyStr);
    state_transition_perf_log_classes = reg.GetString(sname,
                            "state_transition_perf_log_classes", kEmptyStr);


    #if defined(_DEBUG) && !defined(NDEBUG)
    ReadErrorEmulatorSection(reg);
    #endif
}