Thomas, this only happens if the user misses the "login"... 1) Backup the **closed** database 2) Login is attempted and fails 3) Database is closed (well, i issue the datanucleus PFM.close that shoud close ALL connections / poolmanager) 4) Back to step 1 - and that is where it might be problematic, as i don't really know if the database is closed or H2 just misses the unlock...
On Saturday, November 2, 2013 2:54:53 PM UTC, Thomas Mueller wrote: > > Hi, > > Copying the database file while the database is open is not a good idea. > It will work in most cases, but not in all cases (for example if the > transaction log is rolled over while the backup is in progress). When it > doesn't work, the database will be corrupt. Don't blame us for that. > > If you want to backup the database while it is open, use the "backup" SQL > statement. Otherwise you need to close the database. > > Regards, > Thomas > > > On Sat, Nov 2, 2013 at 3:51 PM, Noel Grandin <[email protected]<javascript:> > > wrote: > >> Then it sounds like the problem is with datanucleus not closing it's >> connection to the db. Perhaps it needs some special call or parameter to >> tell it that? >> Or are you using db_close_delay in your db URL? Which would also cause >> the db to not close when the last connection is closed. >> Or maybe you are using a connection pool which may also need to be shut >> down. >> >> >> On Saturday, 2 November 2013, marcolopes wrote: >> >>> Thomas, i know what's going on... >>> >>> 1) The first backup is made >>> 2) The database is opened (i'm using Datanucleus persistence, so, no >>> control from my code) >>> 3) A database LOCK file is created >>> 4) I close the "Persistence Manager Factory" but the LOCK file is not >>> released... (it is released only when i terminate the java app) >>> 5) Subsequent backups attempts cause org.h2.jdbc.JdbcSQLException: >>> Cannot change the setting "backup" when the database is already open >>> [90133-169] >>> >>> On Saturday, November 2, 2013 9:14:22 AM UTC, Thomas Mueller wrote: >>>> >>>> Hi, >>>> >>>> I don't know what you do exactly, but I can not reproduce it. Could you >>>> provide a simple, reproducible test case? My test case is: I create a >>>> database "test". After that there is a file called "test.h2.db". Then I >>>> backup this file 4 times, and that works, and no .lock.db files are >>>> created. >>>> >>>> *public* *class* Test { >>>> >>>> *public* *static* *void* main(String... args) *throws* Exception { >>>> >>>> Backup.execute("~/temp/**backup1.zip", "~/temp", "test", *true* >>>> ); >>>> >>>> Backup.execute("~/temp/**backup2.zip", "~/temp", "test", *false >>>> *); >>>> >>>> Backup.execute("~/temp/**backup3.zip", "~/temp", "test", *true* >>>> ); >>>> >>>> Backup.execute("~/temp/**backup4.zip", "~/temp", "test", *false >>>> *); >>>> >>>> } >>>> >>>> } >>>> >>>> I would expect from you a similar test case then the one above. >>>> >>>> Regards, >>>> Thomas >>>> >>>> >>>> On Fri, Nov 1, 2013 at 7:14 PM, marcolopes <[email protected]> wrote: >>>> >>>>> The database is **closed**! >>>>> >>>>> The problem is that, on the first backup execution a LOCK is >>>>> created... and all subsequent backup attempts fail. >>>>> >>>>> >>>>> On Friday, November 1, 2013 5:52:55 PM UTC, Thomas Mueller wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> What do you try to do? If the database is open, you should probably >>>>>> use the BACKUP SQL statement, not the Backup standalone tool. >>>>>> >>>>>> Regards, >>>>>> Thomas >>>>>> >>>>>> >>>>>> >>>>>> On Fri, Nov 1, 2013 at 6:39 PM, marcolopes <[email protected]> wrote: >>>>>> >>>>>>> I don't really understand the behavior of this parameter on the * >>>>>>> Backup.execute* method. >>>>>>> >>>>>>> I thought it would disable the possible "log info", but, inspecting >>>>>>> the code, it goes beyond that. >>>>>>> >>>>>>> The problem with the current approach is: if quiet=false, there is >>>>>>> an attempt to LOCK the database... and the LOCK file remains until the >>>>>>> JAVA >>>>>>> session is terminated... so, another subsequent attempt to BACKUP a >>>>>>> **yet >>>>>>> closed** but now locked database, fails! >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "H2 Database" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to h2-database...@**googlegroups.**com. >>>>>>> To post to this group, send email to [email protected]. >>>>>>> >>>>>>> Visit this group at >>>>>>> http://groups.google.com/**group**/h2-database<http://groups.google.com/group/h2-database> >>>>>>> . >>>>>>> For more options, visit >>>>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out> >>>>>>> . >>>>>>> >>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "H2 Database" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to h2-database...@**googlegroups.com. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at >>>>> http://groups.google.com/**group/h2-database<http://groups.google.com/group/h2-database> >>>>> . >>>>> For more options, visit >>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "H2 Database" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/h2-database. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "H2 Database" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected]<javascript:> >> . >> Visit this group at http://groups.google.com/group/h2-database. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/groups/opt_out.
