-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support multi workers assign syntax on <worker>
section. Fix #2289
#2292
Changes from 1 commit
6a8587e
4200740
6b6fb93
03da2b3
668273b
66ac4a3
9b898c1
44f206a
44b67c9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -71,19 +71,41 @@ def configure(conf) | |
raise ConfigError, "Missing worker id on <worker> directive" | ||
end | ||
|
||
target_worker_id = target_worker_id_str.to_i | ||
if target_worker_id < 0 || target_worker_id > (Fluent::Engine.system_config.workers - 1) | ||
raise ConfigError, "worker id #{target_worker_id} specified by <worker> directive is not allowed. Available worker id is between 0 and #{(Fluent::Engine.system_config.workers - 1)}" | ||
end | ||
target_worker_ids = target_worker_id_str.split("-") | ||
if target_worker_ids.size == 2 | ||
first_worker_id = target_worker_ids.first.to_i | ||
last_worker_id = target_worker_ids.last.to_i | ||
if first_worker_id > last_worker_id | ||
raise ConfigError, "greater first_worker_id<#{first_worker_id}> than last_worker_id<#{last_worker_id}> specified by <worker> directive is not allowed. Available multi worker assign syntax is <smaller_worker_id>-<greater_worker_id>" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I used full-qualified name: 4200740. |
||
end | ||
first_worker_id.step(last_worker_id, 1) do |worker_id| | ||
target_worker_id = worker_id.to_i | ||
if target_worker_id < 0 || target_worker_id > (Fluent::Engine.system_config.workers - 1) | ||
raise ConfigError, "worker id #{target_worker_id} specified by <worker> directive is not allowed. Available worker id is between 0 and #{(Fluent::Engine.system_config.workers - 1)}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
end | ||
|
||
e.elements.each do |elem| | ||
unless ['source', 'match', 'filter', 'label'].include?(elem.name) | ||
raise ConfigError, "<worker> section cannot have <#{elem.name}> directive" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
end | ||
elem.set_target_worker_id(target_worker_id) | ||
end | ||
end | ||
else | ||
target_worker_id = target_worker_id_str.to_i | ||
if target_worker_id < 0 || target_worker_id > (Fluent::Engine.system_config.workers - 1) | ||
raise ConfigError, "worker id #{target_worker_id} specified by <worker> directive is not allowed. Available worker id is between 0 and #{(Fluent::Engine.system_config.workers - 1)}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
end | ||
|
||
## On dry_run mode, all worker sections have to be configured on supervisor (recognized as worker_id = 0). | ||
target_worker_id = 0 if Fluent::Engine.dry_run_mode | ||
## On dry_run mode, all worker sections have to be configured on supervisor (recognized as worker_id = 0). | ||
target_worker_id = 0 if Fluent::Engine.dry_run_mode | ||
|
||
e.elements.each do |elem| | ||
unless ['source', 'match', 'filter', 'label'].include?(elem.name) | ||
raise ConfigError, "<worker> section cannot have <#{elem.name}> directive" | ||
e.elements.each do |elem| | ||
unless ['source', 'match', 'filter', 'label'].include?(elem.name) | ||
raise ConfigError, "<worker> section cannot have <#{elem.name}> directive" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
end | ||
elem.set_target_worker_id(target_worker_id) | ||
end | ||
elem.set_target_worker_id(target_worker_id) | ||
end | ||
conf += e | ||
end | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you add duplication check to avoid following case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've added a collisions checker in d900a73.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And I added more concreate error message commit: 03da2b3.