Oleg Nitz wrote:
>
> Hi Ole,
>
> Thank you for the answer, but probably I was not clear enough.
> Let me try to explain what I mean once more.
>
> Ole Husgaard wrote:
> OH> Oleg Nitz wrote:
> >> Currently the transaction timeout is set to the default value of
> >> 1 minute and I cannot find any means to change it, neither globally,
> >> nor per bean.
>
> OH> You can use setTransactionTimeout(int seconds) on your
> OH> TransactionManager instance.
>
> Surely, I can.
> But I speak about changing the timeout during deployment, not during
> the development: either in some global configuration file or in
> jboss.xml.
> The optimal value depends upon the concrete execution environment and
> the application, right?
> So server Administrator (bean Deployer?) should have a possibility to
> configure it without Java coding.
Ok. Now I think I get it.
Currently we have one global timeout value that may be
set programmatically with TM.setTransactionTimeout().
We have no way of setting the default of this in the
configuration files, and I see no reason why we shouldn't
have that. But I am not yet familar with JMX, so I would
rather if someone else could implement that.
For seperate per-bean default timeout values things get
a bit more complicated, but still possible (at least in
theory). Problem is, the JTA TM.begin() method gives us
little information about the caller.
> >> Let's increase the default value for now: some of our transactions on
> >> some of our computers long for 10 or even 30 minutes.
>
> OH> Please be aware that that locking may keep other
> OH> users from accessing the same data for as long as
> OH> the transaction is active.
> Oh, don't worry, I am aware :-)
> And note: I said *some* transaction on *some* computers, i.e. this is
> more exception than the rule, but the possible exception.
> Let me give some examples:
> 1) Readonly transaction for creating report that need a big amount of
> data to read. It doesn't write lock database records, it may be even
> performed at isolation level 0. And the time that it takes depends on
> the amount of the data, so it can take 30 minutes or more.
> 2) "Business transactions" and filigree manual lock handling doesn't
> frighten me or my colleagues: in our company there are a number of
> experienced developers that did such things hundreds of times,
> and our products work for a long time and are rather fast and stable.
> 3) big time in a transaction may taken by non-database stuff.
> E.g., CastorJDO resource on the first use reads its configuration
> files and loads all needed application classes. In our case the size
> of the configurations files and the number of loaded classes is so big
> that on weak or overloaded machines this process takes more than
> 1 minute.
> And I hope that you don't claim to restrict jBoss users by 1 minute
> transaction timeout in order to force them to use only that kinds of
> transactions that are good and safe from theoretic point of view.
> :-)
Yes and no. The default should force users that do not know what they
are doing to use relatively short transactions.
Users that are aware of the problems with long transactions should be
able to change the default timeout.
Some transaction MBean setting would probably be the right thing.
Best Regards,
Ole Husgaard.