Hi,
Wondering if you can help us understand what's happening here. (Currently
testing under naviserver 4.99.5 with Tcl 8.5.11)
Our test case is the following proc:
proc clock_test {} {
log Notice [clock format [clock scan now] -format "%Y-%m-%d %H:%M:%S"
-timezone :Tcl/Localtime]
return true
}
If we open a naviserver control port and run the command it works:
> ns_schedule_proc -once 0 clock_test
[04/Jul/2013:16:17:49][2278.7f08c0bf5700][-sched-] Notice: 2013-07-04
16:37:49
However, if we now run any ns_eval and repeat, the clock command will fail:
> ns_eval expr {2+1}
3
> ns_schedule_proc -once 0 clock_test
[04/Jul/2013:16:25:17][2278.7f08c0b73700][-sched-] Error: time zone
":Tcl/Localtime" not found
We can see why this is failing. It's because, after the ns_eval, namespace
eval clock is called from Tcl's init script. This means the next call to
the clock ensemble will run clock::Initialize again. This resets the TZData
array (removing :Tcl:Localtime) but :Tcl/Localtime is still cached in the
::tcl::clock::CachedSystemTimeZone variable... hence the error.
If we now run the proc in its own thread, it will work again until another
ns_eval is performed.
> ns_schedule_proc -once -thread 0 clock_test
[04/Jul/2013:16:46:06][18122.7f2c93f53700][-sched:7-] Notice: 2013-07-04
16:46:06
> ns_eval expr {2+2}
> ns_schedule_proc -once -thread 0 clock_test
[04/Jul/2013:16:46:15][18122.7f2c93f53700][-sched:8-] Error: time zone
":Tcl/Localtime" not found
It's a bit of a contrived test case but believe it or not, we are
encountering basically the same situation in production.
If ::tcl::clock::ClearCaches were to be called before the second
::tcl::clock::Initialize
I think everything would be fine. But would be interested to hear opinions
on why this is manifesting itself in these situations.
Regards,
--
David
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel