Hi Georg,

You discovered a bug. I filed a bug report for it (if you register as
watcher, you'll receive email updates when it gets fixed).
http://redmine.webtoolkit.eu/issues/850

For now, you can work around this by not deploying on '/'.

Thank you for reporting.

BR,
Wim.

2011/6/7 Georg Sauthoff <[email protected]>:
> Hi,
>
> developing a Wt application I noticed a lot of 'Timeout: expiring' and 
> 'Session
> destroyed (#sessions = x)' messages I could not explain.
>
> To debug this, I created a minimal example:
>
> #include <Wt/WApplication>
> #include <Wt/WLogger>
> #include <Wt/WPushButton>
> #include <Wt/WCheckBox>
>
> #include <string>
>
> using namespace Wt;
> using namespace std;
>
>
> class Main : public WApplication {
>  private:
>    bool emitchange;
>    unsigned state;
>  public:
>    Main(const WEnvironment &e)
>      : WApplication(e), emitchange(false), state(0)
>    {
>       log("info") << "Constructing new session";
>
>       WPushButton *a = new WPushButton("foo", root());
>       a->clicked().connect(this, &Main::foo);
>       WPushButton *b = new WPushButton("bar", root());
>       b->clicked().connect(this, &Main::bar);
>       WCheckBox *c = new WCheckBox("emit change", root());
>       c->changed().connect(this, &Main::toggle);
>    }
>    void foo()
>    {
>      log("info") << "foo got clicked! state:" << state++;
>      setInternalPath("/foo", emitchange);
>    }
>    void bar()
>    {
>      log("info") << "bar got clicked! state:" << state++;
>      setInternalPath("/bar", emitchange);
>    }
>    void toggle() { emitchange = !emitchange; log("info") << "emit change: " 
> << emitchange; }
>
> };
>
> Wt::WApplication *create_app(const Wt::WEnvironment& env)
> {
>  return new Main(env);
> }
>
> int main(int argc, char **argv)
> {
>  return WRun(argc, argv, &create_app);
> }
>
>
> I run it with this command:
>
>    ./p.wt --docroot='.;resources' --deploy-path '/' --http-address 127.0.0.1 
> --http-port 8080
>
> Using Chromium 11, for each button click I get following block of lines like 
> this:
>
> [2011-Jun-07 23:22:31.881103] 15768 [/ BgODYliXr92U50EP] [info] "foo got 
> clicked! state:1"
> 127.0.0.1 - - [2011-Jun-07 23:22:31.881829] "POST /bar?wtd=BgODYliXr92U50EP 
> HTTP/1.1" 200 60
> [2011-Jun-07 23:22:31.912402] 15768 [/ DIISm4AkiYAgbzFm] [notice] "Session 
> created (#sessions = 5)"
> Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) 
> Ubuntu/10.04 Chromium/11.0.696.65 Chrome/11.0.696.65 Safari/534.24
> 127.0.0.1 - - [2011-Jun-07 23:22:31.913249] "GET /favicon.ico HTTP/1.1" 200 
> 1641
>
> Or waiting a bit after some clicking:
>
> [2011-Jun-07 23:23:19.151773] 15768 [/ BgODYliXr92U50EP] [info] "foo got 
> clicked! state:2"
> [2011-Jun-07 23:23:19.152229] 15768 [/ 0nOSG9eUL2kkLlZx] [notice] "Timeout: 
> expiring"
> [2011-Jun-07 23:23:19.152313] 15768 [/ DIISm4AkiYAgbzFm] [notice] "Timeout: 
> expiring"
> [2011-Jun-07 23:23:19.152373] 15768 [/ MXC0G56m4hj6Wjwa] [notice] "Timeout: 
> expiring"
> [2011-Jun-07 23:23:19.152424] 15768 [/ QX1ff4P3FxWDCOet] [notice] "Timeout: 
> expiring"
> [2011-Jun-07 23:23:19.152530] 15768 [/ 0nOSG9eUL2kkLlZx] [notice] "Session 
> destroyed (#sessions = 1)"
> [2011-Jun-07 23:23:19.152630] 15768 [/ DIISm4AkiYAgbzFm] [notice] "Session 
> destroyed (#sessions = 1)"
> [2011-Jun-07 23:23:19.152739] 15768 [/ MXC0G56m4hj6Wjwa] [notice] "Session 
> destroyed (#sessions = 1)"
> [2011-Jun-07 23:23:19.152815] 15768 [/ QX1ff4P3FxWDCOet] [notice] "Session 
> destroyed (#sessions = 1)"
> 127.0.0.1 - - [2011-Jun-07 23:23:19.153171] "POST /foo?wtd=BgODYliXr92U50EP 
> HTTP/1.1" 200 60
>
> Or this:
>
> [2011-Jun-07 23:23:34.231512] 15768 [/ BgODYliXr92U50EP] [info] "bar got 
> clicked! state:3"
> 127.0.0.1 - - [2011-Jun-07 23:23:34.232276] "POST /foo?wtd=BgODYliXr92U50EP 
> HTTP/1.1" 200 60
> [2011-Jun-07 23:23:34.262017] 15768 [/ b6x9sEGvQgn3AY41] [notice] "Session 
> created (#sessions = 2)"
> Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) 
> Ubuntu/10.04 Chromium/11.0.696.65 Chrome/11.0.696.65 Safari/534.24
> 127.0.0.1 - - [2011-Jun-07 23:23:34.262780] "GET /favicon.ico HTTP/1.1" 200 
> 1640
>
>
> What do these messages mean?
>
> How do I get rid of these messages? What is the purpose of them?
>
> I thought that for each new 'session' a WApplication instance (== a Main
> instance in this case) is created (via create_app, which is invoked by
> Wt). But this is not the case here, because the state value is not reset
> (and no more 'Constructing new session' messages are displayed).
>
> With Firefox 3.6 I don't get such a massive amount of 'session
> destroyed'/timeout messages, except at startup one/two spurious ones, e.g.:
>
> [2011-Jun-07 23:30:51.443921] 15809 [/ DzIjAsat35qI7CUG] [info] "foo got 
> clicked! state:0"
> [2011-Jun-07 23:30:51.444487] 15809 [/ X3iTDjJ5vdo3a8h6] [notice] "Timeout: 
> expiring"
> [2011-Jun-07 23:30:51.444600] 15809 [/ X3iTDjJ5vdo3a8h6] [notice] "Session 
> destroyed (#sessions = 1)"
> 127.0.0.1 - - [2011-Jun-07 23:30:51.444827] "POST /?wtd=DzIjAsat35qI7CUG 
> HTTP/1.1" 200 85
> [2011-Jun-07 23:30:52.000871] 15809 [/ DzIjAsat35qI7CUG] [info] "bar got 
> clicked! state:1"
> 127.0.0.1 - - [2011-Jun-07 23:30:52.001824] "POST /?wtd=DzIjAsat35qI7CUG 
> HTTP/1.1" 200 60
> [2011-Jun-07 23:30:53.125405] 15809 [/ DzIjAsat35qI7CUG] [info] "emit change: 
> 1"
> 127.0.0.1 - - [2011-Jun-07 23:30:53.126185] "POST /?wtd=DzIjAsat35qI7CUG 
> HTTP/1.1" 200 41
> [2011-Jun-07 23:30:55.488739] 15809 [/ DzIjAsat35qI7CUG] [info] "bar got 
> clicked! state:2"
>
>
> I am using Wt 3.1.9 and following CMakeLists.txt:
>
> cmake_minimum_required(VERSION 2.8)
> set(CMAKE_VERBOSE_MAKEFILE on)
>
> LINK_DIRECTORIES(/mnt/juser/local/wt-3.1.9/lib)
>
> SET(EXAMPLES_CONNECTOR wthttp)
>
> ADD_EXECUTABLE(p.wt main.C)
>
> TARGET_LINK_LIBRARIES(p.wt ${EXAMPLES_CONNECTOR})
>
> INCLUDE_DIRECTORIES(/mnt/juser/local/wt-3.1.9/include)
>
>
> Best regards
> Georg
>
>
>
> ------------------------------------------------------------------------------
> EditLive Enterprise is the world's most technically advanced content
> authoring tool. Experience the power of Track Changes, Inline Image
> Editing and ensure content is compliant with Accessibility Checking.
> http://p.sf.net/sfu/ephox-dev2dev
> _______________________________________________
> witty-interest mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/witty-interest
>

------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
witty-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to