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
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.
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.
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…
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?