Uniface on GitHub
Fixes and Updates
HiI got an exception when compiling
I/O function: C, mode: 0, on driver: SLE database is locked Error : -100005 Description : Commit failed Context :[context] [STATUS] = "TRANSACTION_IN_PROGRESS" [DBERROR] = 5
As Im' the only one who is working with the database: strange ...Maybe it was the still open test with this component in question.But this is not the point.
I got a few choises to press, I use the "ignore" button.Compiling the component again shows no error.But when testing the component, there was still the old code.
It looks like, the changed script would not be stored.As I don't want to lose the new script, I did a copy into clipboard, close IDE, restart IDE and copy the script into the script container.
In UnifAce 9, you could still try to store again, until the database lock is released.
So, how can I be sure, that there is no loss of information after such exception?Is there an indication, if or if not a component is stored?And how to store again, if the first try didn't succeed?
I've discussed this with the IDE team. We have not seen this particular exception (with STATUS = "TRANSACTION_IN_PROGRESS") before. And when looking at the code (where this error is thrown) then it is also not clear how you could provoke this exception. Do you maybe have a repro-scenario for us? Thanks.
And SLE (SQLite) is not really the most "care-free" database (at least that is my experience). You really have to be careful. Even in version 9 you can run into situations where you basically cannot store the changes for a component. This can (e.g.) happen when having a component open in the IDF that has some changes that are not stored yet and then compile the component from the command line. When you try to store the changes in the IDF then you get an "unrecoverable" error (2012 - Occurrence in form does not match database occurrence) and you need to "safe" the changes by copy-and-paste.
In case you run into this kind of issues more frequently then it might be better to switch to a different database for the repository (e.g. PostgreSQL or Oracle).
With SQLite, never ever have more than one session open.
Also not if the two sessions are from the same user and on the same computer.
Also not if one session is interactive and the other on a command line compile.
SQLite locking strategy is not really suiteable for Uniface.
It is only delivered with Uniface because a) it is free, and b) does not require installation.
But if you want a better database, you'll need to move to Postgress or something...
Found the unifaceinfo.com post (without timestamp, it's a bit harder)and unfortunately formatting was lost as well, but it includes Norberts remarks:
Uniface 10 Enterprise Edition: U10.3: IDE abort when parallel editing 2 forms
looks like 10.3 has still problems coordinating the database transactionsin the non-modal world.
I had reported that problem already in August; as unifaceinfo.com is lost, see https://www.tapatalk.com/groups/turf/u10-3-ide-abort-when-parallel-editing-2-forms-t1688.html
When I change from editing a sourcecode in one formand changed to another form and clicked in the sourcecodethe exception you encountered occured after 10 seconds of inactivity.
In 10.3 IDE we have no control what happens with the database.
As we no longer have a STORE, ACCEPT and QUIT in the IDE,there is not so much we can do about it.
© 2020 Uniface Privacy & Cookies | Privacy Statement | Legal