Last week was mostly spent in fixing the issues that were coming while saving the file path as system variable. As explained in my last post, this problem was due to boost::filesystem::path and std::string being unrelated types and an explicit cast can be dangerous. Daniel and I, after discussing some approaches, sorted out a solution.
A Small Hack
What we need to do actually is to store boost::filesystem::path as a system variable and there is no such datatype supported by drizzle currently. The most optimal solution would have been constructing something like sys_var_fs_path variable but it was out of scope for the current project. This problem can be bypassed in a simpler way by using a separate std::string variable which will always be same as fs::path variable. The system variable is registered using this std::string instance and whenever the file path is changed from the drizzle server, both these variables are updated with the new value. Even if certain internal fs::path methods are called, they will continue to work normally using the fs::path instance.
Apart from doing this work and getting this reviewed, I also worked on making auth_file plugin dynamic. In this plugin, we provide a separate passwords file containing the username:password pair for all the users who can access the server. The task of making this dynamic just involved clearing the old cache (which stored username:password pairs given in the previous file) and updating this with the new username:password pairs. Most of the task involved in this was the same as regex_policy plugin.
Am currently working on auth_http plugin which uses apache mod_auth module for authentication. Will keep posting the progress.