Anshu

Actually, now that I re-read this, I don't know if it was a smart idea
and maybe there needs to be a thread that does the polling, but my
original idea was that you could reload the file during an
authorization request. So basically when any of the
Polixy::restrict... methods are called, you would first check if the
file needs to be refreshed and then re-read it (or not). This way you
don't need to have a loop or do any polling or such.

This approach is not good because it would introduce a performance hit
into random requests every N seconds. But you could still do it this
way as a proof of concept, then we could work on making it a
background thread later.

henrik

On Mon, Apr 2, 2012 at 2:51 PM, Anshu Kumar <ansharyan...@gmail.com> wrote:
> Hey Guys,
> I have tried to implement this dynamic thing to regex_policy plugin.
> In reference to my talk with Henrik yesterday, we discussed that there could
> be a autoreload variable, and when made true it will continuously poll for
> changes in default regex policy file. And it it is made false, it will stop
> polling, checking for modifications. Sticking to the discussion, the code I
> wrote is
>
> void autoReload_Regex_Policy(Session *, sql_var_t)
> {
>         if(policy->sysvar_autoreload)
>         {
>                 while(1)
>                 {
>                         if (not policy->loadFile())
>                           {
>                             errmsg_printf(error::ERROR, _("Could not load
> regex policy file: %s\n"),
>                                           (policy ?
> policy->getError().str().c_str() : _("Unknown")));
>                             return;
>                           }
>                         sleep(60);
>                         if(!policy->sysvar_autoreload)
>                                 break;
>                 }
>         }
>         else
>         {
>         }
> }
> This function handles the case when you change the value of autoreload from
> drizzle client. The problem is as the function is using sleep recursively,
> when trying to change autoreload value by "SET GLOBAL", the client hangs.
> This is obviously due to function recursive structure. Initially, I thought
> that it would change the variable and then polls.
>
> Now, coming to the discussion earlier in this mail, even if I create a
> pthread from this function which will check for modification using stat() or
> inotify(), this function won't exit untill its thread stop working. And as
> thread will continuously polls for changes, it wont exit.
>
> Is there any solution for this scenario, except adding the refresh command
> for refreshing the policy file?
>
>
> On Fri, Mar 30, 2012 at 10:34 PM, Clint Byrum <cl...@fewbar.com> wrote:
>>
>> Excerpts from Henrik Ingo's message of Thu Mar 29 21:16:26 -0700 2012:
>> > Daniel:
>> >
>> > Have you thought about authorization for this? I mean we wouldn't want
>> > any old logged in user to be able to
>> >
>> > SET GLOBAL auth_file.users=/home/hingo/igivemyselfrootpowers.users
>> >
>> > (Making the plugin reload the existing file will be helpful. But it
>> > might not be a good idea to allow to change that value.)
>> >
>>
>> Agreed. I'd like to see plugins like auth_file and regex_policy given
>> a generic way to "watch" their files. There are a number of ways to do
>> this, but I don't think each plugin should implement its own method.
>>
>> Thoughts I've had on this:
>>
>> * A thread which uses either inotify  or falls back to polling
>> with stat(), and whenever there is a change, calls any registered code
>> to update that file's effect.
>>
>> * An admin command like  REFRESH '/etc/drizzle/regex.policy' which does
>> the same thing as the thread without the inotify/polling.
>>
>> * Cache the stat() call on the file and periodically expire the cache
>> and refresh the contents if stat() indicates that it has changed.
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~drizzle-discuss
>> Post to     : drizzle-discuss@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~drizzle-discuss
>> More help   : https://help.launchpad.net/ListHelp
>
>
>
>
> --
> Regards,
> Ansh
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~drizzle-discuss
> Post to     : drizzle-discuss@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~drizzle-discuss
> More help   : https://help.launchpad.net/ListHelp
>



-- 
henrik.i...@avoinelama.fi
+358-40-8211286 skype: henrik.ingo irc: hingo
www.openlife.cc

My LinkedIn profile: http://www.linkedin.com/profile/view?id=9522559

_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : drizzle-discuss@lists.launchpad.net
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to