Subject Re: [IBO] AllowCheckOAT
Author guido.klapperich@t-online.de
In my testapp, I have the following settings:
TimeoutProps.AllowCheckOAT = 5
TimeoutProps.Attempt = 5
TimeoutProps.AttemptMaxRows = 500
TimeoutProps.AttemptRetry = 3
TimeoutProps.PromptUser = 10

With a IB_Query I make a select from a table with 18.000 rows. When I open the
Query, 9 rows were fetched, because of the grid. After 5 seconds automaticly all
rows will be fetched, CommitAction is caClose. Should it not be so, that after
fetching 500 Rows, the user should be prompted ?

Guido

Jason Wharton wrote:

> Guido,
>
> > Let's see, if I get it:
> > AllowCheckOAT=30
> > Attempt=300
> > AttemptMaxRows=15000
> > AttemptRetry=5
> > AttemptTicks=500
> >
> > A dataset with 100.000 rows will be opened and displayed in Grid, so 30
> rows
> > were fetched. After 30 sec IBO tries to end the transaction, but fails.
> After 60
> > sec IBO tries again and fails and so on. After 300 sec IBO sees, that not
> all
> > rows were fetched and it tries to fetch up to 15.000 rows in a half second
> > (AttemptTicks=500). After 5 sec IBO fetches again 15.000 rows and so on,
> until
> > all rows were fetched and when the CheckOAT fires next time, the
> transaction
> > will be ended.
> > I hope, I described it the right way.
> >
> > At least, one thing is not clear to me. With the TimeoutProps, all
> datasets will
> > fetch all rows regardless wether their CommitAction is caFetchAll or not.
> This
> > is a great waste of memory, because a user normally sees only up to 100
> rows at
> > one time and not like my example 100.000. The only way around I see, is
> not to
> > use the TimeoutProps or is there another ?
>
> You are close but some of what you assume isn't quite accurate. I'll
> clarify. Modifying your words a little to be more explicit:
>
> A dataset with 100.000 rows will be opened and displayed in Grid, so 30 rows
> were fetched. After 30 sec IBO tries to end the transaction, but fails. From
> that point on it checks and fails each time the Session fires an OnTimer
> event. After 300 sec IBO sees, that not all rows were fetched. It starts
> fetching records in short little spurts to get to the end of the cursor. It
> will only go up to 15.000 rows and stop. Each spurt is a half second
> (AttemptTicks=500). The time between spurts is 5 sec before IBO fetches
> again. If the cursor end is reached for all datasets then the CheckOAT ends
> the transaction.
>
> If it gets stuck at 15,000 rows it will not take any more action until the
> prompt timeout is met. Then the user actually gets prompted. They can ignore
> and make some adjustments to satisfy it like close a form or something. If
> they are unsuccessful they will get prompted again and again until it annoys
> them.
>
> If the user doesn't respond to the prompt and the force option takes place
> it will force the transaction closed.
>
> HTH,
> Jason Wharton
> CPS - Mesa AZ
> http://www.ibobjects.com
>