diff --git a/lib/fluent/supervisor.rb b/lib/fluent/supervisor.rb
index 58b2923ef9..12def0e7da 100644
--- a/lib/fluent/supervisor.rb
+++ b/lib/fluent/supervisor.rb
@@ -210,11 +210,11 @@ def kill_worker
end
def supervisor_dump_config_handler
- $log.info config[:fluentd_conf].to_s
+ $log.info config[:fluentd_conf]
end
def supervisor_get_dump_config_handler
- {conf: config[:fluentd_conf].to_s}
+ {conf: config[:fluentd_conf]}
end
end
@@ -234,7 +234,6 @@ def after_start
class Supervisor
def self.load_config(path, params = {})
-
pre_loadtime = 0
pre_loadtime = params['pre_loadtime'].to_i if params['pre_loadtime']
pre_config_mtime = nil
@@ -246,21 +245,6 @@ def self.load_config(path, params = {})
return params['pre_conf']
end
- config_fname = File.basename(path)
- config_basedir = File.dirname(path)
- # Assume fluent.conf encoding is UTF-8
- config_data = File.open(path, "r:#{params['conf_encoding']}:utf-8") {|f| f.read }
- inline_config = params['inline_config']
- if inline_config
- config_data << "\n" << inline_config.gsub("\\n","\n")
- end
- fluentd_conf = Fluent::Config.parse(config_data, config_fname, config_basedir, params['use_v1_config'])
- system_config = SystemConfig.create(fluentd_conf)
-
- # these params must NOT be configured via system config here.
- # these may be overridden by command line params.
- workers = params['workers']
- root_dir = params['root_dir']
log_level = params['log_level']
suppress_repeated_stacktrace = params['suppress_repeated_stacktrace']
@@ -269,9 +253,6 @@ def self.load_config(path, params = {})
chgroup = params['chgroup']
log_rotate_age = params['log_rotate_age']
log_rotate_size = params['log_rotate_size']
- rpc_endpoint = system_config.rpc_endpoint
- enable_get_dump = system_config.enable_get_dump
- counter_server = system_config.counter_server
log_opts = {suppress_repeated_stacktrace: suppress_repeated_stacktrace}
logger_initializer = Supervisor::LoggerInitializer.new(
@@ -288,43 +269,41 @@ def self.load_config(path, params = {})
# ServerEngine's "daemonize" option is boolean, and path of pid file is brought by "pid_path"
pid_path = params['daemonize']
daemonize = !!params['daemonize']
- main_cmd = params['main_cmd']
- signame = params['signame']
se_config = {
- worker_type: 'spawn',
- workers: workers,
- log_stdin: false,
- log_stdout: false,
- log_stderr: false,
- enable_heartbeat: true,
- auto_heartbeat: false,
- unrecoverable_exit_codes: [2],
- stop_immediately_at_unrecoverable_exit: true,
- root_dir: root_dir,
- logger: logger,
- log: logger.out,
- log_path: log_path,
- log_level: log_level,
- logger_initializer: logger_initializer,
- chuser: chuser,
- chgroup: chgroup,
- chumask: 0,
- suppress_repeated_stacktrace: suppress_repeated_stacktrace,
- daemonize: daemonize,
- rpc_endpoint: rpc_endpoint,
- counter_server: counter_server,
- enable_get_dump: enable_get_dump,
- windows_daemon_cmdline: [ServerEngine.ruby_bin_path,
- File.join(File.dirname(__FILE__), 'daemon.rb'),
- ServerModule.name,
- WorkerModule.name,
- path,
- JSON.dump(params)],
- command_sender: command_sender,
- fluentd_conf: fluentd_conf,
- main_cmd: main_cmd,
- signame: signame,
+ worker_type: 'spawn',
+ workers: params['workers'],
+ log_stdin: false,
+ log_stdout: false,
+ log_stderr: false,
+ enable_heartbeat: true,
+ auto_heartbeat: false,
+ unrecoverable_exit_codes: [2],
+ stop_immediately_at_unrecoverable_exit: true,
+ root_dir: params['root_dir'],
+ logger: logger,
+ log: logger.out,
+ log_path: log_path,
+ log_level: log_level,
+ logger_initializer: logger_initializer,
+ chuser: chuser,
+ chgroup: chgroup,
+ chumask: 0,
+ suppress_repeated_stacktrace: suppress_repeated_stacktrace,
+ daemonize: daemonize,
+ rpc_endpoint: params['rpc_endpoint'],
+ counter_server: params['counter_server'],
+ enable_get_dump: params['enable_get_dump'],
+ windows_daemon_cmdline: [ServerEngine.ruby_bin_path,
+ File.join(File.dirname(__FILE__), 'daemon.rb'),
+ ServerModule.name,
+ WorkerModule.name,
+ path,
+ JSON.dump(params)],
+ command_sender: command_sender,
+ fluentd_conf: params['fluentd_conf'],
+ main_cmd: params['main_cmd'],
+ signame: params['signame'],
}
if daemonize
se_config[:pid_path] = pid_path
@@ -337,7 +316,7 @@ def self.load_config(path, params = {})
pre_params['pre_conf'] = nil
params['pre_conf'][:windows_daemon_cmdline][5] = JSON.dump(pre_params)
- return se_config
+ se_config
end
class LoggerInitializer
@@ -640,11 +619,15 @@ def supervise
'use_v1_config' => @use_v1_config,
'conf_encoding' => @conf_encoding,
'signame' => @signame,
+ 'fluentd_conf' => @conf.to_s,
'workers' => @system_config.workers,
'root_dir' => @system_config.root_dir,
'log_level' => @system_config.log_level,
'suppress_repeated_stacktrace' => @system_config.suppress_repeated_stacktrace,
+ 'rpc_endpoint' => @system_config.rpc_endpoint,
+ 'enable_get_dump' => @system_config.enable_get_dump,
+ 'counter_server' => @system_config.counter_server,
}
se = ServerEngine.create(ServerModule, WorkerModule){
diff --git a/test/test_supervisor.rb b/test/test_supervisor.rb
index 3a50f9ac43..a8754b2f09 100644
--- a/test/test_supervisor.rb
+++ b/test/test_supervisor.rb
@@ -372,46 +372,6 @@ def test_load_config_for_daemonize
assert_equal Fluent::Log::LEVEL_INFO, se_config[:log_level]
end
- def test_load_config_with_multibyte_string
- tmp_path = "#{TMP_DIR}/dir/test_multibyte_config.conf"
- conf_str = %[
-
- @type forward
- @id forward_input
- @label @INPUT
-
-
-]
- FileUtils.mkdir_p(File.dirname(tmp_path))
- File.open(tmp_path, "w:utf-8") {|file| file.write(conf_str) }
-
- params = {}
- params['workers'] = 1
- params['use_v1_config'] = true
- params['log_path'] = 'test/tmp/supervisor/log'
- params['suppress_repeated_stacktrace'] = true
- params['log_level'] = Fluent::Log::LEVEL_INFO
- params['conf_encoding'] = 'utf-8'
- load_config_proc = Proc.new { Fluent::Supervisor.load_config(tmp_path, params) }
-
- se_config = load_config_proc.call
- conf = se_config[:fluentd_conf]
- label = conf.elements.detect {|e| e.name == "label" }
- filter = label.elements.detect {|e| e.name == "filter" }
- record_transformer = filter.elements.detect {|e| e.name = "record_transformer" }
- assert_equal(Encoding::UTF_8, record_transformer["message"].encoding)
- end
-
def test_logger
opts = Fluent::Supervisor.default_options
sv = Fluent::Supervisor.new(opts)