-errorcode {TCL LOOKUP COMMAND ::erice::attempt_db_connect} -code 1 -level 0 -errorstack {INNER {invokeStk1 ::erice::attempt_db_connect} CALL {namespace eval ::rivetweb {
            ::erice::attempt_db_connect
            ::rivet::apache_log_error debug "running erice request handler ([pwd])"

        # determining if the 'rewrite_par' argument is in the query
        # list of arguments and in case set the rewrite_links flag
        # and the 'rewrite_code' free form code

            set rewrite_par [$::rivetweb::url_composer get_rewrite_par]
            set ::rivetweb::rewrite_links [::rivet::var_qs exists $rewrite_par]
            if {$::rivetweb::rewrite_links} {
                set ::rivetweb::rewrite_code [::rivet::var_qs get $rewrite_par]
            } else {
                set ::rivetweb::rewrite_code ""
            }

        # we collect the URL-specified arguments and then we move on determining
        # whether this has to be considered the home page of the web site (mostly
        # to allow template specific determination)
        # The is_homepage determination can be overridden in the site specific
        # before script

            set argsqs [dict create {*}[::rivet::var_qs all]]
            set ::rivetweb::is_homepage [::rivet::lempty [::rivetweb::strip_sticky_args $argsqs]]

        # ------ workshop code determination should be taken from ::rivetweb::select_template
        # ------ (::rivetweb::select_template) and moved here -------- #

        # it's not clear whether determing the template key here
        # is useful. It's supposed to be in RWPage but since even
        # classes derived from RWWebService may use template_key
        # to generate HTML fragments we do determine this
        # control variable here
        #

            set template_key [::rivetweb::select_template]

        # we determine the language for this request
        # (keep in mind we are running within the ::rivetweb namespace)

            if {[::rivet::var exists lang]} {
                set language [::rivet::var get lang]
            } elseif {[::rivet::var exists language]} {
                set language [::rivet::var get language]
            } else {
                set language $::rivetweb::default_lang
            }

        # site specific 'before' script (if any) runs here.

            # this code is called also from this website's ::rivetweb::select_template
            # Replico questa determinazione perché si deve trovare una soluzione
            # al problema della determinazione ed pre-elaborazione degli argomenti 
            # nella URL. E' più corretto che questa determinazione venga fatta qui
            #
            #::erice set_workshop_code [::rivet::var_qs get conference "ccsem"]

            # still have to figure out what to do, but I guess
            # the error handler below must be triggered

            $::erice::message_printer reset_message_queue

            # the DIO object must have special fields for some
            # of its columns

            set session_table [::SESSION cget -sessionTable]
            set dbms [::erice::get_dbhandle]
            $dbms registerSpecialField $session_table session_update_time NOW
            $dbms registerSpecialField $session_table session_start_time NOW
            ::SESSION configure -dioObject $dbms
            ::SESSION activate

            set ::rivetweb::is_homepage 0
            set ag [::rivetweb::strip_sticky_args $::rivetweb::argsqs]
            if {[::rivet::lempty $ag]} {
                set ::rivetweb::is_homepage 1 
            } elseif {[dict size $ag] == 1} {
                
                # this code should be deferred to XMLBase or other
                # descendants. TODO

                dict with ag {
                    if {[info exists show] && ($show == "index")} {
                        set ::rivetweb::is_homepage 1
                    }
                }
            }

            if {[string is true $::erice::development]} {
                set ::erice::cssprogressive [clock seconds]
            }

        #; --- site specific 'before' script

        #
        # the central point is exactly here: we determine which page we have to display
        #

            $::rivetweb::logger log debug "registered handlers: [::rwdatas::UrlHandler::registered_handlers]"
            $::rivetweb::logger log debug "argsqs: $argsqs, language: $language"

            set ::rivetweb::current_page [::rwdatas::UrlHandler::select_page $argsqs]

            $::rivetweb::logger log debug "\[::rwdatas::UrlHandler::select_page $argsqs\] returned $::rivetweb::current_page"

        #
        # The three stage generation of a page
        #
        #    * page content preparation
        #    * HTTP header generation and transmission
        #    * page data transmission
        #

            set ::rivetweb::page_content $::rivetweb::page_key
            set ::rivetweb::current_page [$::rivetweb::current_page prepare_content  [::rwdatas::UrlHandler::current_handler]   $::rivetweb::language $argsqs]

        # sending headers

            $::rivetweb::current_page send_headers

        # let's proceed with the post processing and data generation

            $::rivetweb::current_page send_output $language
            
        }}} -errorinfo invalid\ command\ name\ \"::erice::attempt_db_connect\"\n\ \ \ \ while\ executing\n\"::erice::attempt_db_connect\"\n\ \ \ \ (in\ namespace\ eval\ \"::rivetweb\"\ script\ line\ 2)\n\ \ \ \ invoked\ from\ within\n\"namespace\ eval\ ::rivetweb\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ ::erice::attempt_db_connect\n\ \ \ \ \ \ \ \ \ \ \ \ ::rivet::apache_log_error\ debug\ \"running\ erice\ request\ handler\ (\[pwd\])...\"\n\ \ \ \ (\"::try\"\ body\ line\ 3) -errorline 3

OUTPUT BUFFER:

invalid command name "::erice::attempt_db_connect"