roxen.lists.roxen.general

Subject Author Date
Re: Lots of patches that can be integrated into Roxen 5.0 in a heartbeat Martin Stjernholm <mast[at]roxen[dot]com> 11-01-2009
>> commit 47bcfda8973a161dc143dc51156a6e1b7b64c58c
>>     Tune caching for some constructs

That's as designed: RXML tags are supposed to disable caching in the
protocol cache if their results aren't known to be cacheable.

In hindsight it perhaps wasn't a very wise design choice since the
caching gets too defensive - practically no rxml code gets cached in
the protocol cache. Instead one has to use the <set-max-cache> tag at
the end to raise the cache time.

It's too difficult to grasp the compatibility effects if that design
choice is changed though, so I think it's going to stay that way for
the time being.

>> commit 8b913e80cacb719d6d1743ec1c51000e3f5ae046
>>     Allow more functions in expr

Docs too, please.

>> commit 283d902aa4f34a642208d7ff7b83450edd2d5e60
>>     Avoid crashes when compiled without Java support

Ok. Crashes are usually avoided by a runtime check that avoids loading
that module altogether, but I guess a bit extra robustness doesn't
hurt.

>> commit 856cc0a4fa653f218c719a0458ac26cdf3e13a33
>>     Tie up dangling references to threads

I believe thread support has become a de-facto requirement, so I've
been thinking about cleaning up all those
"#if constant(thread_create)" instead.

Btw, "const" is not a valid cpp function.. ;)

>> commit fa906db8dec4bcbd6145375b2f66803874aeb62a
>>     Get rid of warnings/unuseds

Partly processed already. New bits committed, thanks.

>> commit 0de7c2cf7e3f20634bda021b30511bcab4e6ff40
>>     Fix crashes when dbs_for_thread is zero

This shows that the reuse_in_thread code isn't entirely sound. I think
what is necessary to do there is to store the thread object both in
SQLKey and SQLResKey, so that the destroy functions can access the
right mapping regardless which thread they get called from. Of course,
that also requires a bit of care to handle the concurrent access
correctly.

If that is implemented, then a useful debug tool would be to check
that all functions (except destroy) really gets called from the
expected thread.

>> commit 6e6d1043c883d143682cd110f34b8cf994c245dd
>>     Avoid long lingering database connections

First patch breaks intended behavior (quite obviously).
It's not good behavior, and that's why it has to be enabled with a
flag. Afaik the only place that activates that flag is
TagSQLQuery.do_return, and it also properly removes the cyclic ref.

The destructs in the second patch are risky - the result objects
should be acyclic instead.

>> commit 14d12052e3050924bad03cb658fa3c96bdee77b1
>>     Enforce SQL session reuse-exclusivity within a single RXML page

Well, as you've experienced, and as I've noted above, the
reuse_in_thread feature still has issues, unfortunately.

>> commit 6d3e31155bfe696ed1a400724712f7eb269bfdaf
>>     Eliminate dead code for sorted lists

Indeed looks unused, but it could perhaps be useful for a sorted
global list. Letting it be, since it isn't performance critical code.

>> commit bcd4e7c2ec8b80be1326a38ad13476e5890c06dd
>>     Only lowercase the hostname, not the path

Good one, thanks.

>> commit 1fb6f907b601e6e25d0a6233a2bd60c4b37746c3
>>     Optimise globbed and non-globbed urls, also fixes overzealous lowercasing

Not convinced this keeps the same resolution order (funky as it might
possibly be - sorting just on the lengths of patterns containing globs
like that).

I committed the case insensitivity fix, along with another one to
ensure the hostnames are lowercased for matching.

Side note: has_value() is usually easier and more obvious to use than
search() when you just want to detect an occurrence. It also works for
a match at position 0.

Why do you search for "["? That's not a glob char. Is it some kind of
ipv6 measure?