- From: Nuo Yan <
>
- To: Adam Jacob <
>
- Cc: "
" <
>
- Subject: [chef-dev] Re: bug: 'notifies' ran even when bash script didn't run when 'creates' presents
- Date: Mon, 10 Dec 2012 10:22:04 -0800
That sounds good to me. Should I create a ticket for this?
On Dec 7, 2012, at 2:39 PM, Adam Jacob
<
>
wrote:
>
Yeah, we should fix it. Not for nothing, but I feel bad about creates
>
existing at all - we added it to the API before we added meta not_if and
>
only_if, and it mimics the puppet file API. I would be +1 on deprecating a
>
special cased not_if.
>
>
>
>
On 12/7/12 2:36 PM, "Nuo Yan"
>
<
>
>
wrote:
>
>
>
>
>
>
>
>
> We found that it started to happen recently (but we are not 100% sure if
>
> it happened before) that when using the 'bash' resource, 'notifies' gets
>
> executed even when the script didn't run because of what's specified in
>
> "creates" already exists.
>
>
>
>
>
> For example, for this block in the nginx::source recipe:
>
>
>
>
>
> bash "compile_nginx_source" do
>
> cwd Chef::Config[:file_cache_path]
>
> code <<-EOH
>
> tar zxf nginx-#{nginx_version}.tar.gz
>
> cd nginx-#{nginx_version} && ./configure #{configure_flags}
>
> make && make install
>
> EOH
>
> creates node[:nginx][:src_binary]
>
> notifies :restart, "service[nginx]"
>
> end
>
>
>
>
>
>
>
>
>
> If the file referred in node[:nginx][:src_binary] exists, it doesn't run
>
> the script to compile nginx, which is right, but it still executes the
>
> notification which restarts nginx, which is not cool.
>
>
>
>
>
> We worked around this easily by putting a not_if block in it, but we
>
> think this is a chef bug that should be fixed (we are on 10.16.0 and
>
> 10.16.2). We think whether or not "notifies" get triggered should be
>
> consistent with whether the code(script) ran.
>
> If 'creates' presents and the code may not run in some conditions, then
>
> in those conditions 'notifies' shouldn't get triggered by default. This
>
> nginx example is an example of the use case, if it's already compiled,
>
> there is no reason to restart it. I try to
>
> think about other use cases and it seems to me that in very rare cases
>
> you want 'notifies' to trigger even when anything else is not executed.
>
> As the result I think at least the default should be the common case,
>
> where "notifies" doesn't trigger if "creates"
>
> presents and when the code did not run because of being protected by
>
> "creates."
>
>
>
>
>
> Let me know what you think.
>
>
>
>
>
> Thanks,
>
> Nuo
>
>
>
>
>
>
>
>
Archive powered by MHonArc 2.6.16.