[389-devel] Please review: Use thread aware library for complex regex searches

Rich Megginson rmeggins at redhat.com
Thu May 28 16:26:09 UTC 2009


Noriko Hosoi wrote:
> Subject: Use thread aware library for complex regex searches
>
> Link: 
> http://nhosoi.fedorapeople.org/0001-Use-thread-aware-library-for-complex-regex-searches.patch 
>
>
> Unfortunately, the fedoraproject.org is closed now.  I'm going to 
> create the page 
> http://directory.fedoraproject.org/wiki/Thread_Aware_Regex which 
> contains the following notes as soon as the wiki is reopened.
> ------------------------------------------------------------------------
> Directory Server used to use the regular expression pattern matching 
> and replacing library which was not thread safe.  Thus, the operation 
> should have been protected by the mutex lock.  Regular expression 
> could be used by the search filters (syntax plugin), acl, schema file 
> load, and SASL Mapping.  If one of them took a long time, the rest 
> should have been blocked.  Replacing the library with the thread aware 
> library solves the problem and improves the throughput.
>
> [http://www.pcre.org/ PCRE - Perl Compatible Regular Expressions] 
> library is installed on RHELs/Fedoras, by default.  We need just a 
> subset of the APIs, thus we provide simplified slapi APIs wrapping the 
> PCRE APIs.
>
> NAME
> slapi_re_comp -- compiles a regular expression pattern. A thin wrapper 
> of pcre_compile.
> SYNOPSIS
> Slapi_Regex *slapi_re_comp( char *pat, char **error );
> PARAMS
> pat: Pattern to be compiled.
> error: The error string is set if the compile fails.
> RETURN VALUE
> a pointer to the regex handler which stores the compiled pattern.
> NULL if the compile fails.
> WARNING
> The regex handler should be released by slapi_re_free().
>
> NAME
> slapi_re_exec -- matches a compiled regular expression pattern against 
> a given string. A thin wrapper of pcre_exec.
> SYNOPSIS
> int slapi_re_exec( Slapi_Regex *re_handle, char *subject, time_t 
> time_up );
> PARAMS
> re_handle: The regex handler returned from slapi_re_comp.
> subject: A string to be checked against the compiled pattern.
> time_up: If the current time is larger than the value, this function 
> returns immediately.  (-1) means no time limit.
> RETURN VALUE
> 0 if the string did not match.
> 1 if the string matched.
> other values if any error occurred.
>
> NAME
> slapi_re_subs -- substitutes '&' or '\#' in the param src with the 
> matched string.
> SYNOPSIS
> int slapi_re_subs( Slapi_Regex *re_handle, char *subject, char *src, 
> char **dst, unsigned long dstlen );
> PARAMS
> re_handle: The regex handler returned from slapi_re_comp.
> subject: A string checked against the compiled pattern.
> src: A given string which could contain the substitution symbols.
> dst: A pointer pointing to the memory which stores the output string.
> dstlen: Size of the memory dst.
> RETURN VALUE
> 1 if the substitution was successful.
> 0 if the substitution failed.
>
> NAME
> slapi_re_free -- releases the regex handler which was returned from 
> slapi_re_comp.
> SYNOPSIS
> void slapi_re_free(Slapi_Regex *re_handle);
> PARAMS
> re_handle: The regex handler to be released.
> RETURN VALUE
> none
> ------------------------------------------------------------------------
Looks good.  I notice you have some unrelated fixes in this patch too - 
those look ok - be sure to document those.  You can edit your commit 
message by using git commit --amend to amend the last commit you made.
>
> Thanks,
> --noriko
> ------------------------------------------------------------------------
>
> --
> Fedora-directory-devel mailing list
> Fedora-directory-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-directory-devel
>   

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3258 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.fedoraproject.org/pipermail/389-devel/attachments/20090528/2979d05a/attachment.bin 


More information about the 389-devel mailing list