Thanks David, I agree. Unless there are other opinions, I will proceed with #1.

On Tue, Jan 27, 2015 at 11:04 AM, David McLaughlin
<da...@dmclaughlin.com> wrote:
> The heartbeat requirement feature should be disabled by default, so I think
> it's best to just do [1] and make it None by default in UpdateConfig and
> optional field in the thrift API.
>
> On Tue, Jan 27, 2015 at 10:21 AM, Maxim Khutornenko <ma...@apache.org>
> wrote:
>
>> We are working on AURORA-690 to support external service coordinated
>> job updates. The feature design was proposed in [1] and discussed in
>> [2].
>>
>> The one remaining question I would like to discuss here is how to
>> expose the coordinated update configuration to the user. The
>> approaches as I see:
>>
>> 1. Expose "blockIfNoPulsesAfterMs" directly in UpdateConfig requiring
>> user to supply its value to indicate a coordinated update:
>>     ...
>>     update_config = UpdateConfig(pulse_interval_secs=60)
>>     ...
>> While the most straightforward to implement, it may not deliver on
>> user's expectations. The external service may be unable to match a
>> requested job health refresh rate and potentially waste scheduler
>> performance with unnecessary pulseJobUpdate RPC calls. We may limit
>> the lower configurable bound for pulse_interval_secs to something sane
>> to address the latter but it will still not address the unmatched
>> health refresh rate issue.
>>
>>
>> 2. Expose a flag in UpdateConfig and hardcode a large enough (e.g. 1
>> minute) interval internally. The Aurora client would then populate
>> "blockIfNoPulsesAfterMs" to default interval in case the
>> require_update_pulse flag is set:
>> ...
>> update_config = UpdateConfig(require_update_pulse=True)
>> ...
>> This is more user friendly but less flexible in terms of requirement
>> changes and still does not protect against external service health
>> refresh rate changes.
>>
>>
>> 3. Do not expose any coordinated update settings in a public schema
>> and require external service to act as a job update request proxy
>> mutating job update config on the fly before passing it to the
>> scheduler.
>> This is ideal from the external service controlling the health refresh
>> rate but may require too much hacking as we don't have a private job
>> config schema and relaying user's identity via an external service is
>> no fun from security perspective.
>>
>>
>> Any other options? I am personally leaning towards #1 with hardcoded
>> min value validation as the simplest solution. Users will be required
>> to have a knowledge of what refresh rate their health monitoring
>> system is capable of to configure pulse_interval_secs accordingly.
>> Thoughts?
>>
>> Thanks,
>> Maxim
>>
>>
>> [1] -
>> https://github.com/maxim111333/incubator-aurora/blob/hb_doc/docs/update-heartbeat.md
>>
>> [2] -
>> http://mail-archives.apache.org/mod_mbox/aurora-dev/201410.mbox/%3ccaotkfx7x2oipk4zfysos0uwzrizonkja3y15pvew5k4ynuh...@mail.gmail.com%3E
>>

Reply via email to