Bugs item #2417515, was opened at 2008-12-11 17:04 Message generated for change (Comment added) made by boncz You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2417515&group_id=56967
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Core Group: MonetDB4 "stable" Status: Open Resolution: None Priority: 5 Private: No Submitted By: Hans (hans_0_) Assigned to: Peter Boncz (boncz) Summary: MonetDB database corrupt on restart shortly after an update Initial Comment: Hi MonetDB development team, The MonetDB database gets corrupt when Mserver is killed shortly after a series of xqueries containing add-doc() and insert statements. Starting Mserver shows problems while loading the pathfinder module. I downloaded Monet Fedora RPMs from: http://monetdb.cwi.nl/testing/projects/monetdb/Stable/.DailyBuilds./20081209/RPMs/Fedora9.i386.oid32/ I installed these with yum on my Fedora fc9 installation, running within VMWare on my Windows XP 32 bit machine. On request, a copy of the VMware virtual machine is available for analysis. I performed the 4 steps as described in the text following this intro. For step 2 I use a couple of Java programs that interact with Mserver via a JDBC connection. The xquery log of these Java programs is included. After this I also cannot gain access to Mserver with mclient: mclient -p 51240 -l xq !xchange_challenge: frontend xquery not found Regards, Hans van Rijswijk =================================================================================================================== =================================================================================================================== ============== Step 1: boot Mserver =================================================================================================================== =================================================================================================================== Command: ($MONETDB_HOME/bin/Mserver --config=$MONETDB_CONFIG_FILE --dbinit="module(pathfinder);mil_start();" --set xquery_backend=algebra)& =================================================================================================================== =================================================================================================================== Config script: # Configuration file for MonetDB main-memory database xiraf_pid_file=/var/xiraf/recover_monetdb_frontend.PID xiraf_current_mserver_pid_file=/var/xiraf/current_mserver_frontend.PID xiraf_recover_log=/var/xiraf/log/recover_frontend.log xiraf_monetdb_lives=9 xiraf_transfer_folder=/var/xiraf/dbtransfer # This startup file is read by the GDK kernel, to set # system wide parameters. It can reside in either the local directory # where Mserver is called, or the home directory of the MonetDB user. # Where MonetDB is installed prefix=/usr exec_prefix=/usr datadir=/usr/share # GDK Section #============ # All databases are stored as a directory under the directory # given below. Use this value to change the overall location # of your data. gdk_dbfarm=/var/xiraf/MonetDB4/dbfarm-frontend # MonetDB can only handle one database at a time. You can specify # the name of the database to use below. Note that you can use # multiple databases, but that you have to edit the database name # and restart MonetDB. gdk_dbname=demo # The options below deal with various aspects of memory usage behaviour. # If you don't know what these values mean, you should leave them alone. # gdk_mem_bigsize & gdk_vm_minsize will be set/limited to # 1/2 of the physically available amount of main-memory # during start-up in src/tools/Mserver.mx # memory chunks of size >= gdk_mem_bigsize (in bytes) will be mmaped anonymously #gdk_mem_bigsize=262144 # memory chunks of size >= gdk_vm_minsize (in bytes) will be mmaped; #gdk_vm_minsize=137438953472 # for 32 bit systems try to claim 3G of (virtual) memory; #gdk_vmtrim=yes # set to "no" to disable the vmtrim thread. # valgrind issues: # for 32 bit systems it tries claim 3G of (virtual) memory # set to "no" to run Mserver with valgrind. # also, you need to tell valgrind to use 8-byte alignment, hence: # "valgrind --alignment=8 Mserver --set gdk_alloc_map=no ..." gdk_alloc_map=no # the kernel can be used in embedded situations (don't set this yourself) gdk_embedded=no # You can enable debug for specific parts. By default debug is # switched off. gdk_debug=0 # possible values: (can be a combination of) # 1 = thread-specific debug output # 2 = property enforcing on new BATs # 4 = memory allocation # 8 = property checking on all values: tells about wrongly set properties # 16 = major IO activity # 32 = BAT handling # 64 = MIL parser debugging # 128 = Thread management # 256 = Event management # 512 = Transaction management # 1024 = Locks and Triggers # 2048 = Dynamic loading # 4096 = BBP Performance (?) # 8192 = Delta debugging (?) # 16384 = Module loading # 32768 = Yacc specific error messages # 65536 = tcpip (??) # 131072 = monet_multiplex: setaggr debugging (??) # 262144 = \ # 524288 = ddbench (???) # 1048576 = / # 2097152 = show join/select algorithm chosen # 4194304 = show result size estimations (for join,select) # 8388608 = extended property checking: tells also about not set properties #16777216 = disable property checking with join & outerjoin (e.g., for performance measurements) #33554432 = disable "cleaning" of freed memory in GDKfree() (e.g., for performance measurements) # General client Section #======================= #host=localhost #the host the server runs on # MonetDB Section #================ # Administrator user name monet_admin=adm # Prompt when using MIL interface monet_prompt=MonetDB> # Show version and copyright information when starting the server or # a MIL client? monet_welcome=yes # Where do the MonetDB modules reside? # The first directory contains MIL modules, and either the second or third (depending on the system) the C modules. monet_mod_path=/usr/lib/MonetDB4:/usr/lib/MonetDB4/lib:/usr/lib/MonetDB4/bin # Start Mserver in daemon mode, or start with MIL interactive interface? monet_daemon=yes # Monet Application Interface Section #==================================== # default port to address an Mserver for a MIL session mapi_port=51240 #allow mclient sessions from outside the server machine mapi_open=true # show all the MIL output? (default: no) #mapi_noheaders=no # The MAPI debug level (should be disabled for normal use) mapi_debug=0 # The number of concurrent clients can be set using mapi_clients # (smaller than 1 is not very useful) #mapi_clients=2 # SQL Interface Section #====================== # The SQL debug level (should be disabled for normal use) sql_debug=0 # Place to store transaction logs # The logs are typically stored on a different storage medium # to protect the database against accidental hardware loss. # it should be different directory as used for xquery! sql_logdir=/var/MonetDB4/sql_logs # XQuery Interface Section #========================= #default back-end: "milprint_summer" or "algebra" #xquery_backend=algebra #output mode "dm" = pretty printed, # "xml" = enforce XML with enclosing <XQueryResult> tags xquery_output=dm #limit the document cache on disk to 100MB xquery_cacheMB=100 #rules like {URL=seconds;}* e.g. cache w3c for a day, CNN for 5 minutes #xquery_cacherules="http://www.w3.org/=79200;http://www.cnn.com=300" xquery_cacherules="" #limit the function cache in memory to 128MB xquery_procMB=128 # Place to store transaction logs # The logs are typically stored on a different storage medium # to protect the database against accidental hardware loss. # it should be different directory as used for sql! xquery_logdir=/opt/xiraf/MonetDB/var/MonetDB4/xquery_logs_frontend # if not set port to address the HTTP server for pathfinder = mapi_port+1 xrpc_port="" # xrpc daemon is open for outside connections by default xrpc_open=false # Additional options to be passed to the XRPC server, currently only # "timing". xrpc_options="" # IP addresses or hostname separated by ';' who can execute scripts in # <datadir>/MonetDB/xrpc/admin/ xrpc_admin="http://127.0.0.1;127.0.0.1;http://localhost;localhost" # IP addresses or hostname separated by ';' who can retrieve XML # documents stored in the database using a URL of the form: # http://<host>[:port]/xrpc/<name>.xml xrpc_user="http://127.0.0.1;127.0.0.1;http://localhost;localhost" # url prefixes of trusted modules separated by ';' xrpc_trusted="http://monetdb.cwi.nl;http://127.0.0.1;http://localhost;/usr/share/MonetDB/xrpc/export" # standoff annotation XPath extension #standoff_ns=http://monetdb.cwi.nl/standoff standoff_ns= standoff_start=start standoff_end=end # Profile Interface Section #==================================== # for 32 bit systems try to claim 3G of (virtual) memory; # set to "no" to run Mserver with valgrind. # valgrind --tool=callgrind Mserver --set gdk_alloc_map=no ..." #gdk_alloc_map=yes =================================================================================================================== =================================================================================================================== ============== Step 2: Insert data via JDBC connection =================================================================================================================== =================================================================================================================== Query log: Thu Dec 11 13:42:55 CET 2008 executeQuery: element result {let $projdoc := pf:documents()[.='projects.xml'] return if (exists($projdoc)) then element projectsdocexists {} else element projectsdocnonexistent {}} Thu Dec 11 13:42:55 CET 2008 insertXMLDoc: pf:add-doc("/var/xiraf/dbtransfer/xiraf4040814192720964387.xml","projects.xml","projects.xml_1228999375401",10) Thu Dec 11 13:42:55 CET 2008 executeQuery: element result {let $projdoc := pf:documents()[.='bookmarks.xml'] return if (exists($projdoc)) then element docexists {} else element docnonexistent {}} Thu Dec 11 13:42:55 CET 2008 insertXMLDoc: pf:add-doc("/var/xiraf/dbtransfer/xiraf3326179746776330670.xml","bookmarks.xml","bookmarks.xml_1228999375870",10) Thu Dec 11 13:42:55 CET 2008 executeQuery: element result {let $projdoc := pf:documents()[.='reports.xml'] return if (exists($projdoc)) then element docexists {} else element docnonexistent {}} Thu Dec 11 13:42:56 CET 2008 insertXMLDoc: pf:add-doc("/var/xiraf/dbtransfer/xiraf6349201089799532961.xml","reports.xml","reports.xml_1228999376208",10) Thu Dec 11 13:43:09 CET 2008 executeQuery: doc("projects.xml")/projects/proje...@name='demo'] Thu Dec 11 13:43:09 CET 2008 executeQuery: 1+1 Thu Dec 11 13:43:09 CET 2008 hasXMLDoc: count(pf:documents()[.="demo.xml"]) Thu Dec 11 13:43:09 CET 2008 hasXMLDoc: count(pf:documents()[.="notes_demo.xml"]) Thu Dec 11 13:43:09 CET 2008 hasXMLDoc: count(pf:documents()[.="demo.xml"]) Thu Dec 11 13:43:10 CET 2008 insertXMLDoc: pf:add-doc("/var/xiraf/dbtransfer/xiraf493570239516592169.xml","demo.xml","demo.xml_1228999390017") Thu Dec 11 13:43:10 CET 2008 hasXMLDoc: count(pf:documents()[.="notes_demo.xml"]) Thu Dec 11 13:43:10 CET 2008 insertXMLDoc: pf:add-doc("/var/xiraf/dbtransfer/xiraf7574288057964248812.xml","notes_demo.xml","notes_demo.xml_1228999390164",10) Thu Dec 11 13:43:10 CET 2008 executeQuery: element result {let $projdoc := pf:documents()[.='projects.xml'] return if (exists($projdoc)) then ( element projectsdocexists {} , let $created := doc("projects.xml")/projects/proje...@name='demo'] return if (exists($created)) then element projectcreated {} else element projectnotcreated {} ) else element projectsdocnonexistent {},let $proj := pf:documents()[.='demo.xml'] return if (exists($proj)) then element projectxmlexists {} else element projectxmlnonexistent {}} Thu Dec 11 13:43:10 CET 2008 executeUpdate: let $proj := element project { attribute name {"demo"}, element index {"demo.xml"}, element casename {"demo"}, element notes {"notes_demo.xml"}, element anonymous {"nesag8"}, element description {""}} return do insert $proj as last into doc("projects.xml")/projects Thu Dec 11 13:43:10 CET 2008 hasXMLDoc: count(pf:documents()[.="restored-document.xml"]) Thu Dec 11 13:43:10 CET 2008 insertXMLDoc: pf:add-doc("/var/xiraf/dbtransfer/xiraf1949015156574180619.xml","restored-document.xml","restored-document.xml_1228999390760") Thu Dec 11 13:43:10 CET 2008 executeQuery: for $f in doc("restored-document.xml")/bookmark/folder return (string($f/@name), pf:nid(exactly-one($f/bookmark-definition))) Thu Dec 11 13:43:10 CET 2008 deleteXMLDoc: pf:del-doc("restored-document.xml") Thu Dec 11 13:43:10 CET 2008 hasXMLDoc: count(pf:documents()[.="restored-document.xml"]) Thu Dec 11 13:43:11 CET 2008 insertXMLDoc: pf:add-doc("/var/xiraf/dbtransfer/xiraf2115018461422569140.xml","restored-document.xml","restored-document.xml_1228999391045") Thu Dec 11 13:43:11 CET 2008 executeQuery: for $f in doc("restored-document.xml")/report/folder return (string($f/@name), pf:nid(exactly-one($f/report-definition))) Thu Dec 11 13:43:11 CET 2008 deleteXMLDoc: pf:del-doc("restored-document.xml") =================================================================================================================== =================================================================================================================== ============== Step 3: shutdown Mserver =================================================================================================================== =================================================================================================================== Command: kill -TERM $MONETDB_PID =================================================================================================================== =================================================================================================================== ============== Step 4: boot Mserver =================================================================================================================== =================================================================================================================== Command: ($MONETDB_HOME/bin/Mserver --config=$MONETDB_CONFIG_FILE --dbinit="mil_start();module(pathfinder);" --set xquery_backend=algebra)& =================================================================================================================== =================================================================================================================== Errors: # MonetDB Server v4.26.1 # based on GDK v1.26.1 # Copyright (c) 1993-July 2008, CWI. All rights reserved. # Copyright (c) August 2008-, MonetDB B.V.. All rights reserved. # Compiled for i686-redhat-linux-gnu/32bit with 32bit OIDs; dynamically linked. # Visit http://monetdb.cwi.nl/ for further information. # PF/Tijah module v0.9.0 loaded. http://dbappl.cs.utwente.nl/pftijah !ERROR: logger: could not use bat (220) for 1000000005_map_pid !ERROR: logger: could not use bat (780) for 1000000005_rid_size !ERROR: logger: could not use bat (781) for 1000000005_rid_level !ERROR: logger: could not use bat (735) for 1000000005_rid_prop !ERROR: logger: could not use bat (782) for 1000000005_rid_kind !ERROR: logger: could not use bat (242) for 1000000005_rid_nid !ERROR: logger: could not use bat (748) for 1000000005_nid_rid !ERROR: logger: could not use bat (750) for 1000000005_qn_histogram !ERROR: logger: could not use bat (447) for 1000000005_qn_prefix_uri_loc !ERROR: logger: could not use bat (228) for 1000000005_qn_uri_loc !ERROR: logger: could not use bat (515) for 1000000005_qn_prefix !ERROR: logger: could not use bat (343) for 1000000005_qn_uri !ERROR: logger: could not use bat (326) for 1000000005_qn_loc !ERROR: logger: could not use bat (757) for 1000000005_attr_own !ERROR: logger: could not use bat (786) for 1000000005_attr_qn !ERROR: logger: could not use bat (785) for 1000000005_attr_prop !ERROR: logger: could not use bat (244) for 1000000006_map_pid !ERROR: logger: could not use bat (761) for 1000000006_rid_size !ERROR: logger: could not use bat (755) for 1000000006_rid_level !ERROR: logger: could not use bat (702) for 1000000006_rid_prop !ERROR: logger: could not use bat (706) for 1000000006_rid_kind !ERROR: logger: could not use bat (230) for 1000000006_nid_rid !ERROR: logger: could not use bat (525) for 1000000006_qn_uri_loc !ERROR: logger: could not use bat (564) for 1000000006_qn_prefix !ERROR: logger: could not use bat (523) for 1000000006_qn_uri !ERROR: logger: could not use bat (516) for 1000000006_qn_loc !ERROR: logger: could not use bat (736) for 1000000006_prop_text !ERROR: logger: could not use bat (372) for 1000000006_prop_com !ERROR: logger: could not use bat (783) for 1000000006_prop_ins !ERROR: logger: could not use bat (316) for 1000000006_prop_tgt !ERROR: logger: could not use bat (347) for 1000000006_prop_val !ERROR: logger: could not use bat (749) for 1000000006_attr_own !ERROR: logger: could not use bat (747) for 1000000006_attr_qn =================================================================================================================== =================================================================================================================== ---------------------------------------------------------------------- Comment By: Peter Boncz (boncz) Date: 2008-12-11 23:49 Message: Sjoerd: it looks like bats are non-existent after the server is restarted. I think it may have something to do with the logger changes you carried through (the "leftover" bugs). I am not sure now when a subcommit is forced. The subcommit should checkpoint the new bats and write BBP.dir. After that, the bats should exist. Is a subcommit forced after each document mgt query? I guess it must be, because afaik we do not implement logging a shred action. In any case, the log gives a good handle for a replay, and the VM image will be handy too. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=482468&aid=2417515&group_id=56967 ------------------------------------------------------------------------------ SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help pave the way to the Next Web now. Learn more and register at http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/ _______________________________________________ Monetdb-bugs mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/monetdb-bugs
