Hi Michael,

>> This depends on the "transaction isolation level" that is set
>> for the database instance. Mysql supports all levels, but only
>> for InnoDB. Oracle supports all levels, of course.
>> Please google for the term and you will get some information about
>> it.
>
> We still use BDB. If I remember correctly then Michael Konietzka
> requested such a change some time ago too. Does it be enough if I change
> "Type=BDB" to "Type=InnoDB"? If this makes sense then I would this.

the InnoDB does work great, but it was introduced in one of the more
recent versions of mysql. Using it will be a problem for users with
an older mysql database.
But as we need transadtions, I would suggest to use InnoDB at the
cost of backward compatibility. InnoDB is also a bit slower than
BDB, as far as I know, but not much. Transaction support is definitely
worth the price.

Since you are currently working on the database stuff: I have not
looked to deep into the code, so I don't know the answer right now.

Just wondering:
How do you start/end transactions? I hope you keep the transaction
while a request is running even across several DBI calls, because
a transaction rollback does give you nothing if it happens after
a (partial) commit within a logical sequence of actions.

OK Example (out of thin air):

BEGIN TRANSACTION
  get CSR serial number
  add user data to CSR table
  <do stuff>
  <do more stuff>
  <find out that CSR cannot be inserted>
   -> DO_ROLLBACK
END TRANSACTION

Not OK example:
BEGIN TRANSACTION
  get CSR serial number
  add user data to CSR table
  DO_COMMIT
END TRANSACTION
BEGIN TRANSACTION
  <do stuff>
  <do more stuff>
  <find out that CSR cannot be inserted>
   -> DO_ROLLBACK
END TRANSACTION

But if you end transaction (committing data) after "add user data..."
then you are hosed if an errors occur in later stages. Can this
happen?

If yes, then we need to propagage the transaction to each method
that operates on the transaction. After the last operation has
finished, the transaction may be closed with a commit.

(BTW, using a destructor methods it is possible to build wonderful
auto-rollback transaction handlers for database operations.
Just drop me a note if you need more info on this.)

Martin



-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
_______________________________________________
OpenCA-Devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/openca-devel

Reply via email to