Databroadcasting problem

I have a solution which records line items in estimates.

As the parent estimate record is loaded, all the child lines are loaded via SQL to a tableview form in an unrelated tabpanel. Some estimates have several thousand lines in the tabpanel, but they can be filtered by which groups are loaded, again via SQL query. child line items have many calculations (85) and aggregations, and there are also several calculations / aggregations on the parent record.

My problem is that when two users load the same parent record, in order to work simultaneously (which they need to do a lot), one of them (apparently one more than the other) has a degraded experience of the solution through data broadcasting. The solution slows down, and is often unresponsive while the blue exclamation broadcast indicator flashes incessantly. The solution essentially stops for this user, and she cannot continue with her work. I advised for them to load different groups when working in the same record, which helps but does not solve the problem.

I am not sure if there is something that I can do to optimise the data to speed up broadcasting, I’d be grateful for any pointers.

Thanks

Bevil
Servoy 4.1.7 -build 690
Java 6
Mac OS X Server 10.6.6
Mac OS X 10.6.6 client x 15

Hi Bevil,

How did you get the proof / see that the Servoy data broadcasting is the reason for the speed degradation ?

Regards,

Hi Lambert

The solution slows down (almost stops functioning entirely), and all the while the blue exclamation flashes - which indicates data broadcasting. It also makes sense, when two people view the same data, one has to broadcast to the other if anything changes. If one client loads all child records (say 1500), and the other client views a subset group (say 100 child records), the all records person has child records in their foundset which must also be in the subset of the other user. It improves if each is in a separate group, but this is impossible to programatically control.

Equally, if a user is in a parent record in which no other user is viewing, it works fine. The problem in this case is that there may be thousands of child records, and someone viewing a foundset including them causes a broadcast problem.

:)

Bevil

Bevel, look for conflicting calcs! And see ehat happens in the background with tracing enabled in the client (the trick I learned you ;-) ) also im not sure if databroadcasts work right when using plain queries, how do you load that foundset? Withbdataset? Or query in loadRecords()?

Thunder:
Hi Lambert

The solution slows down (almost stops functioning entirely), and all the while the blue exclamation flashes - which indicates data broadcasting. It also makes sense, when two people view the same data, one has to broadcast to the other if anything changes. If one client loads all child records (say 1500), and the other client views a subset group (say 100 child records), the all records person has child records in their foundset which must also be in the subset of the other user. It improves if each is in a separate group, but this is impossible to programatically control.

Equally, if a user is in a parent record in which no other user is viewing, it works fine. The problem in this case is that there may be thousands of child records, and someone viewing a foundset including them causes a broadcast problem.

:)

Bevil

how many real data changes does the first person do? Really that many?

I guess it could be what harjo explains that a calc is constantly updating itself or something like that.
(but then both sides should be affected)

Hi Johan

The first person can just leave the solution open and do nothing…

The second person, trying to work, gets the very slow solutin, broadcasting trouble and blue exclamation.

It is improved with the first person working in a smaller group of items rather than all (which would include all groups), and yes, it does seem it might be a calc that is bouncing between the two users, but how do I fix that if I need that calc?

Thunder:
Hi Johan
It is improved with the first person working in a smaller group of items rather than all (which would include all groups), and yes, it does seem it might be a calc that is bouncing between the two users, but how do I fix that if I need that calc?

Look with tracing on, in the client, which calc it is? and try to figure out, why, the calcs bounce, between to clients… Most of the time, it has something to do, with datetime calcs, and both clients have there local time zone, differently set, for example…

Thunder,

What are the datatypes of the columns that are broadcasting? Are they floats?

Some are, yes.

Good thinking Harjo. I will check whether there are datetime fields… I think there are not, although i have only recently been using serverdatetime rather than datetime. Serverdatetime would cure that problem if I have a modified date in each line? Thinking about it, I guess not since the server datetime is also still going to be changing every millisecond…

Floats there definitely are, but would two clients calculate a change in a float?

Thanks for the help with this guys…

Bevil

Yes, I will try it with a trace on like you suggested Harjo. I’ll just have to find a time when I can suggest to the client to create the scenario…

I also have a log server tracking every change, so I guess I should see it in there?

:)

Bevil

Floats there definitely are, but would two clients calculate a change in a float?

See: viewtopic.php?f=4&t=15286&p=81914&hilit=storm#p81914

Specifically ryanparrish’s posts

Perhaps the issue is similar?