Forum OpenACS Development: Install error on head

Collapse
Posted by Ola Hansson on
I just had this error when I was installing 4.7 HEAD on PG 7.2.3. I will try to install 4.6 too for comparison puposes

...

Installed ACS Subsite, version 4.6.1b.

Package enabled.

Installed Skin, version 4.5.

Skin instantiated as skin.

Package enabled. 

Completing Install sequence.

CREATE
CREATE
CREATE
 id
----
(0 rows)
UPDATE 0
DROP
DROP
DROP

...

[12/Jan/2003:08:34:48][9015.114696][-conn4-] Error: Error sourcing /web/dotlrn-test/packages/acs-bootstrap-installer/installer/packages-install.tcl:
psql:acs-install.sql:279: ERROR:  apm_packages_package_key_fk referential integrity violation - key referenced from apm_packages not found in apm_package_types
psql:acs-install.sql:286: ERROR:  ExecAppend: Fail to add null value in not null attribute object_id


Collapse
2: Re: Install error on head (response to 1)
Posted by Ola Hansson on
There was also an error when I tried to submit the above message to this forum with tollowing message appended to it:

<pre>
    invoked from within
"db_source_sql_file -callback apm_ns_write_callback acs-install.sql"
    invoked from within
"if { ![ad_acs_admin_node] } {
    ns_write "  <p><li> Completing Install sequence.<p>
    <blockquote><pre>"
    cd [file join [acs_root_dir] packages..."
    (file "/web/dotlrn-test/packages/acs-bootstrap-installer/installer/packages-install.tcl" line 34)
    invoked from within
"source $__file "
</pre>

I will post the error I got if this post will go through.

Collapse
3: Re: Install error on head (response to 1)
Posted by Ola Hansson on
Hmmm. If I submit the "Invoked from within.." message above as html it bombs...

Anyway, here is the error that part throws:

Request Error

can't read "1": no such variable
    (reading value of variable to increment)
    invoked from within
"incr $output(blockquote) -1"
    (procedure "ad_html_to_text" line 203)
    invoked from within
"ad_html_to_text $message(content)"
    (procedure "do_notifications" line 28)
    invoked from within
"do_notifications -message_id $message_id"
    invoked from within
"if {[info exists message(state)] && [string equal $message(state) approved]} {
                do_notifications -message_id $message_id
            }"
    ("uplevel" body line 5)
    invoked from within
"uplevel 1 $transaction_code "
    (procedure "db_transaction" line 1)
    invoked from within
"db_transaction {
            set message_id [package_instantiate_object -extra_vars $extra_vars forums_message]

            get -message_id $message_..."
    (procedure "forum::message::new" line 13)
    invoked from within
"forum::message::new  -forum_id $forum_id  -message_id $message_id  -parent_id $parent_id  -subject $subject  -content $content  -html_p $html_p"
    invoked from within
"if {[form is_valid message]} {
    form get_values message  message_id forum_id parent_id subject content html_p confirm_p subscribe_p

    if {!$conf..."
    ("uplevel" body line 59)
    invoked from within
"uplevel {
      ad_page_contract {
   
    Form to create message and insert it

    @author Ben Adida (ben@openforce.net)
    @creation-date 2002-0..."
    (procedure "code::tcl::/web/openacs.org-dev/packages/forums/www/message-..." line 2)
    invoked from within
"code::tcl::$__adp_stub"
    invoked from within
"if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init tcl $__adp_stub
..."
    ("uplevel" body line 3)
    invoked from within
"uplevel {

    if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init t..."
    (procedure "adp_prepare" line 2)
    invoked from within
"adp_prepare "
    (procedure "template::adp_parse" line 30)
    invoked from within
"template::adp_parse [file root [ad_conn file]] {}"
    (procedure "adp_parse_ad_conn_file" line 7)
    invoked from within
"$handler"
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
$handler
      } ad_script_abort val {
# do nothing
      }"
    invoked from within
"rp_serve_concrete_file [ad_conn file]"
    (procedure "rp_serve_abstract_file" line 60)
    invoked from within
"rp_serve_abstract_file "$root/$path""
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
rp_serve_abstract_file "$root/$path"
set tcl_url2file([ad_conn url]) [ad_conn file]
set tcl_url2path_info([ad_conn url]) [ad_conn path_inf..."
Collapse
4: status update (response to 1)
Posted by Ola Hansson on
4.6 (final from cvs) works flawlessly as I had expected. On 7.2.3 that is.

I tried 4.7 on 7.3.1 and it gives the same error the as on 7.2.3, of course, but it returns a slightly different error message (which it is too late at night for me to attempt to debug now).

Here is the new message:

ERROR:  apm_packages_package_key_fk referential integrity violation - key referenced from apm_packages not found in apm_package_types
ERROR:  ExecInsert: Fail to add null value in not null attribute object_id
WARNING:  Error occurred while executing PL/pgSQL function acs_permission__grant_permission
WARNING:  line 17 at SQL statement
Could this have to do with the infamous PG bug regarding foreign key constraints and transactions inside transactions (or somthing like that - can't remember exactly what it was)?
Collapse
5: Re: Install error on head (response to 1)
Posted by Ola Hansson on
Here is a snippet with a higher postgresql.conf debug level on:
" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."acs_objects" x WHERE "object_id" = $1 FOR UPDATE OF x
LOG:  query: insert into acs_object_context_index (object_id, ancestor_id, n_generations) values ( $1 ,  $2 , 0)
LOG:  query: SELECT   $1  is not null and  $2  = 't'
LOG:  query: insert into acs_object_context_index (object_id, ancestor_id, n_generations) select  $1  as object_id, ancestor_id, n_generations + 1 as n_generations from acs_object_context_index where object_id =  $2 
LOG:  query: SELECT 1 FROM ONLY "public"."apm_packages" x WHERE "package_id" = $1 FOR UPDATE OF x
LOG:  query: SELECT   $1  != 0
LOG:  query: insert into acs_object_context_index (object_id, ancestor_id, n_generations) values ( $1 , 0, 1)
LOG:  query: SELECT 1 FROM ONLY "public"."acs_objects" x WHERE "object_id" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."apm_packages" x WHERE "package_id" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."apm_parameters" x WHERE "parameter_id" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."acs_objects" x WHERE "object_id" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."acs_objects" x WHERE "object_id" = $1 FOR UPDATE OF x

FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."acs_objects" x WHERE "object_id" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."parties" x WHERE "party_id" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."acs_privileges" x WHERE "privilege" = $1 FOR UPDATE OF x
LOG:  query: SELECT 1 FROM ONLY "public"."site_nodes" x WHERE "node_id" = $1 FOR UPDATE OF x
ERROR:  apm_packages_package_key_fk referential integrity violation - key referenced from apm_packages not found in apm_package_types
LOG:  statement: select inline_0 ();
DEBUG:  AbortCurrentTransaction
DEBUG:  StartTransactionCommand
LOG:  statement: select id from inline_data where name = 'api_doc_id';
LOG:  query: select id from inline_data where name = 'api_doc_id';
DEBUG:  ProcessQuery
LOG:  statement: select id from inline_data where name = 'api_doc_id';
DEBUG:  CommitTransactionCommand
LOG:  statement: select id from inline_data where name = 'api_doc_id';
DEBUG:  StartTransactionCommand
LOG:  statement: update acs_objects
     set security_inherit_p = 'f'
   where object_id = (select id from inline_data where name = 'api_doc_id');

   where object_id = (select id from inline_data where name = 'api_doc_id');
LOG:  query: update acs_objects
     set security_inherit_p = 'f'
   where object_id = (select id from inline_data where name = 'api_doc_id');
DEBUG:  ProcessQuery
LOG:  statement: update acs_objects
     set security_inherit_p = 'f'
   where object_id = (select id from inline_data where name = 'api_doc_id');
DEBUG:  CommitTransactionCommand
LOG:  statement: update acs_objects
     set security_inherit_p = 'f'
   where object_id = (select id from inline_data where name = 'api_doc_id');
DEBUG:  StartTransactionCommand
LOG:  statement: select inline_1 ();
LOG:  query: select inline_1 ();
DEBUG:  ProcessQuery
LOG:  statement: select inline_1 ();
LOG:  query: SELECT  id from inline_data where name = 'api_doc_id'
LOG:  query: SELECT  acs_permission__grant_permission (  $1 , acs__magic_object_id ('registered_users'), 'read' )
ERROR:  ExecInsert: Fail to add null value in not null attribute object_id
LOG:  statement: select inline_1 ();
WARNING:  Error occurred while executing PL/pgSQL function acs_permission__grant_permission
LOG:  statement: select inline_1 ();
WARNING:  line 17 at SQL statement
LOG:  statement: select inline_1 ();
DEBUG:  AbortCurrentTransaction
DEBUG:  StartTransactionCommand
LOG:  statement: drop function inline_0 ();
LOG:  query: drop function inline_0 ();
DEBUG:  ProcessUtility
LOG:  statement: drop function inline_0 ();
DEBUG:  CommitTransactionCommand
LOG:  statement: drop function inline_0 ();
DEBUG:  StartTransactionCommand
LOG:  statement: drop function inline_1 ();
LOG:  query: drop function inline_1 ();
DEBUG:  ProcessUtility
LOG:  statement: drop function inline_1 ();
DEBUG:  CommitTransactionCommand
LOG:  statement: drop function inline_1 ();
DEBUG:  StartTransactionCommand
LOG:  statement: drop table inline_data;
LOG:  query: drop table inline_data;
DEBUG:  ProcessUtility
LOG:  statement: drop table inline_data;
DEBUG:  Drop auto-cascades to toast table pg_toast.pg_toast_28537
LOG:  statement: drop table inline_data;
DEBUG:  Drop auto-cascades to type pg_toast.pg_toast_28537
LOG:  statement: drop table inline_data;
DEBUG:  Drop auto-cascades to index pg_toast.pg_toast_28537_index
LOG:  statement: drop table inline_data;
DEBUG:  Drop auto-cascades to type inline_data
LOG:  statement: drop table inline_data;
DEBUG:  CommitTransactionCommand
LOG:  statement: drop table inline_data;
DEBUG:  proc_exit(0)
DEBUG:  shmem_exit(0)
DEBUG:  exit(0)
DEBUG:  reaping dead processes
DEBUG:  child process (pid 29804) exited with exit code 0
DEBUG:  proc_exit(0)
DEBUG:  shmem_exit(0)
DEBUG:  exit(0)
DEBUG:  reaping dead processes
DEBUG:  child process (pid 29808) exited with exit code 0

If someone can see what is wrong that's good, otherwise I will try some more in the weekend.
Collapse
6: Re: Install error on head (response to 1)
Posted by Lars Pind on
Sorry, that was me who caused it. I'd taken out the auto-install of acs-workflow, but acs-kernel/sql/*/acs-install.sql still tried to mount it. Thanks, Ola, for tracking this down and letting me know about it.

/Lars

Collapse
7: Re: Install error on head (response to 1)
Posted by Bjorn Thor Jonsson on

After importing the latest OpenACS CVS HEAD to my local HEAD checkout I get an error when visiting /acs-admin/apm/packages-install:

[15/Jan/2003:21:03:44][23605.49159][-conn3-] Error: GET http://localhost:8002/acs-admin/apm/packages-install?
referred by "http://localhost:8002/acs-admin/apm/"
Invalid file type "message_catalog"
    while executing
"error "Invalid file type \"$type\"""
    (procedure "apm_read_package_info_file" line 151)
    invoked from within
"apm_read_package_info_file $spec_file"
    ("foreach" body line 2)
    invoked from within
"foreach spec_file $all_spec_files {
    array set version [apm_read_package_info_file $spec_file]
    set version_name $version(name)
    set package_..."
    ("uplevel" body line 37)
    invoked from within
"uplevel {
          ad_page_contract {

    Select, dependency check, install and enable packages.

    @author Bryan Quinn (bquinn@arsdigita.com)
    @c..."
    (procedure "code::tcl::/home/efnisvaki/web/efnisvaki-dev/packages/acs-ad..." line 2)
[snip]

To make sure this wasn't because of some local changes I decided to set up an instance with a clean CVS HEAD checkout, but in step 4 of the OpenACS installation process I get an error when clicking the "Set System Information ->" button:

[15/Jan/2003:20:48:54][1779.24580][-conn0-] Notice: ns_getform using encoding iso8859-1 for charset iso-8859-1
[15/Jan/2003:20:48:54][1779.24580][-conn0-] Error: Ns_PgExec: result status: 7 message: ERROR:  -20000: The specified package 641 AND/OR parameter RestrictToSSL do not exist in the system

[15/Jan/2003:20:48:54][1779.24580][-conn0-] Error: Error sourcing /home/efnisvaki/web/openacs-head/packages/acs-bootstrap-installer/installer/site-info-2.tcl:
Database operation "0or1row" failed (exception NSDB, "Query was not a statement returning rows.")
    while executing
"ns_pg_bind 0or1row nsdb0 {
            select apm__set_value(
                :package_id,
                :parameter,
                :value
        ..."
    ("uplevel" body line 1)
    invoked from within
"uplevel $ulevel [list ns_pg_bind $type $db $sql"
    invoked from within
"db_exec 0or1row $db $full_statement_name $sql"
    invoked from within
"if {[regexp -nocase -- {^\s*select} $test_sql match]} {
            db_qd_log QDDebug "PLPGSQL: bypassed anon function"
            set selection [db_..."
    ("uplevel" body line 6)
    invoked from within
"uplevel 1 $code_block "
    invoked from within
"db_with_handle db {
        # plsql calls that are simple selects bypass the plpgsql 
        # mechanism for creating anonymous functions (OpenACS - ..."
    (procedure "db_exec_plsql" line 13)
    invoked from within
"db_exec_plsql set_parameter_value {}"
    (procedure "parameter::set_value" line 7)
    invoked from within
"parameter::set_value -package_id $package_id -parameter $name -value $set"
    (procedure "ad_parameter" line 4)
    invoked from within
"ad_parameter -set "acs-admin/*" -package_id $main_site_id RestrictToSSL"
    (file "/home/efnisvaki/web/openacs-head/packages/acs-bootstrap-installer/installer/site-info-2.tcl" line 45)
    invoked from within
"source $__file "

Is this problem known? Is it maybe related to the APM auto-mount feature work?

I'm using PostgreSQL 7.2.3

TIA