Thanks a lot for taking the time to analyze it Jon. I was having problems
due to network issues. Now it is fine and I won't even need to change the
timeout.



On Tue, Nov 12, 2019 at 1:42 PM Jonathan Gallimore <
[email protected]> wrote:

> > Correct it is a batch process, I will try to find out why the queries are
> taking so long anyway and better it.
>
> Feel free to post here and we'll guide you as best as we can.
>
> For example, if you're doing one read and one update/write and the read is
> taking a long time, see what you can do to optimize that query. Ultimately
> you might not be able to do anything about it. You could, however, do the
> read without a transaction, and do the update/write in a transaction (so
> the change can be rolled back if something fails).
>
> If you're iterating over a large number of records, and doing thousands of
> updates/inserts, you might want to batch up the updates/inserts into
> batches of say, 1000 queries, with a transaction for each batch.
>
> Jon
>
> On Tue, Nov 12, 2019 at 2:55 PM Ivan Junckes Filho <[email protected]>
> wrote:
>
> > On Tue, Nov 12, 2019 at 11:28 AM Jonathan Gallimore <
> > [email protected]> wrote:
> >
> > > How are you validating that it didn't work?
> > >
> > The message was not displaying on the 2 minute mark, I see what you mean.
> >
> > >
> > > Remember, exceeding the timeout will not interrupt the process. The
> > > rollback will also not happen at the 2 minute mark.
> > >
> > > What happens is, when the business method completes and the transaction
> > > goes to commit, the execution time is compared against the timeout, and
> > > rolled back if the execution has taken longer:
> > >
> > >
> >
> https://github.com/apache/geronimo-txmanager/blob/geronimo-txmanager-parent-3.1.4/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java#L265
> > >
> > > Hm I see.
> >
> >
> > > Where you have a long-running process you need to consider where your
> > > transaction boundaries are.  Do you want everything to rollback if it
> > takes
> > > 11 minutes instead of 10 to run - probably not. Without knowing what
> the
> > > process is, it's hard to make suggestions, but it sounds like some sort
> > of
> > > batch process. Perhaps it needs to be broken up into smaller
> > transactions.
> > >
> > > Correct it is a batch process, I will try to find out why the queries
> are
> > taking so long anyway and better it.
> >
> > Thanks Jon.
> >
> > > Jon
> > >
> > > On Tue, Nov 12, 2019 at 1:12 PM Ivan Junckes Filho <
> > [email protected]>
> > > wrote:
> > >
> > > > I lowered the timeout value for 2 minutes, just to see if the timeout
> > > > worked, but it doesn't seem to work. Maybe it doesn't work less than
> 10
> > > > minutes?
> > > >
> > > > On Tue, Nov 12, 2019 at 9:59 AM Ivan Junckes Filho <
> > > [email protected]>
> > > > wrote:
> > > >
> > > > > I am actually running @Schedule process that executes some queries
> > that
> > > > > take a long time and save the result in the db so they can be
> > > downloaded.
> > > > >
> > > > > I m not sure if there is a better way to do this, but 10 minutes
> may
> > > not
> > > > > be enough. I just didn't want the process to stop.
> > > > >
> > > > >
> > > > > On Tue, Nov 12, 2019 at 10:56 AM Jonathan Gallimore <
> > > > > [email protected]> wrote:
> > > > >
> > > > >> Right. You can't just "stop" a thread in Java. Your business
> method
> > > will
> > > > >> need some mechanism by which it would stop and return with an
> error
> > or
> > > > >> similar if it didn't finish within a specific time, if that's what
> > > > you're
> > > > >> after.
> > > > >>
> > > > >> If you're changing the timeout to try and "fix" a problem, the
> root
> > > > cause
> > > > >> is probably somewhere else.
> > > > >>
> > > > >> Jon
> > > > >>
> > > > >> On Tue, Nov 12, 2019 at 12:46 PM Ivan Junckes Filho <
> > > > >> [email protected]>
> > > > >> wrote:
> > > > >>
> > > > >> > "but the operations themselves won't be interrupted at the
> > > > >> > timeout point." This is important, thanks Jon.
> > > > >> >
> > > > >> > On Tue, Nov 12, 2019 at 10:32 AM Jonathan Gallimore <
> > > > >> > [email protected]> wrote:
> > > > >> >
> > > > >> > > You'd need to define a TransactionManager, and set the
> > > > >> > > defaultTransactionTimeout on it, similar to this:
> > > > >> > >
> > > > >> > > <TransactionManager id="myTransactionManager"
> > > > >> type="TransactionManager">
> > > > >> > >     defaultTransactionTimeout = 10 minutes
> > > > >> > > </TransactionManager>
> > > > >> > >
> > > > >> > > Note that that bean invocations that exceed the timeout will
> be
> > > > >> marked as
> > > > >> > > rolled back, but the operations themselves won't be
> interrupted
> > at
> > > > the
> > > > >> > > timeout point.
> > > > >> > >
> > > > >> > > Jon
> > > > >> > >
> > > > >> > >
> > > > >> > > On Tue, Nov 12, 2019 at 12:00 PM Ivan Junckes Filho <
> > > > >> > [email protected]
> > > > >> > > >
> > > > >> > > wrote:
> > > > >> > >
> > > > >> > > > Hey guys, quick question.
> > > > >> > > >
> > > > >> > > > What property should I use to change EJB transaction
> timeout?
> > > > >> > > > Does this work in the system.properties?
> > > > >> > > > defaultTransactionTimeout = 10 minutes
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > > >
> > > >
> > >
> >
>

Reply via email to