My WsBroker Agents is missing....

yoachan

Member
Hi all!
I have a minor but serious problem here.
I have a 5 user lisence webspeed. So when I started wsbroker I have five agents. The query result shown 5 agents available.
But some times weird things happened. It's hard to explain (my bad english), but I'll give an example.
I have a record with a value '20'. Then I update the value to '50' (wether using PROGRESS EDITOR or using .R web program). But when I display it's value in my web program, it's still -proudly- showing 20. not 50 as it shold!. When I check directly trough the database using PROGRESS EDITOR, it shown the correct value: 50.
So the conclusion is my web program did not refresh it's value. It's not always happening. Just some case, but really often. about one in two days.
What makes it weirder, when I query my wsbroker, it only displayed 1 agents available (sometime 2).
So when this 'late data refresh' problem occur, I must restart my wsbroker so it gains 5 agents again. and voilla! my program displays data correctly.
My question is:
1. What makes my broker missing? Was it my code, lack of memory or else.
2. Is there any way to fix it? This 'late refresh' thing is so anoying, and I think restarting my broker isn't a good solution .
As a note, my broker was connected with 2 database in a DELL sever with RAM 1GB, processor clock 2.x GHz (I forgot).
Thanks in advanced
 
You need to start your broker with -rereadnolock parameter
Did u mean when I started my broker like this?
wtbman -name wsbroker1 -start -rereadnolock or
wtbman -name wsbroker1 -rereadnolock
Well, I'm using PROGRESS 9.1D, and my wtbman doesn't have '-rereadnolock' parameter. So it's failed. Any suggestion?
 
Hi,

The rereadnolock parameter always rereads the records from the database when a request for record retriveal with no-lock is made.
Without this parameter it can happen that if the record is already being used NO-LOCK by another 4GL buffer, the old copy remains in memory rather than it being replaced with a new copy.

From KB:
PROGRESS first fetches the record from the database. PROGRESS then
takes the ROWID of the record and compares it to the ROWIDs of records that are already in memory, in use by other 4GL buffers.
If the ROWID matches one of the records in memory, PROGRESS usually
discards the new one, instead of the older record. This does not
happen when the new record contains more information than the old one, for example, when the new record has more fields because it was based on a different field list.

Use of rereadnolock does not affect performance.

You can put this parameter also in Agent startup parameter list: e.g.
-p web\objects\web-disp.p -weblogerror -db ... -T ... -t -rereadnolock

The reason you see only 1 or two agents after some time probably has to do with your configuration. You probably set minimum agents to 1. If hte agents aren;t used for some time (AutoTrim Timeout) the agents are automaticallly trimmed. If you always want 5 agents then you have to set minimum agents to 5 as well.

Regards,

Casper
 
Back
Top