Consultor Eletrônico



Kbase P130608: bfc file continually grows and is not overwritten
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   02/07/2008
Status: Unverified

SYMPTOM(s):

bfc file continually grows and is not overwritten which causes performance issues over time


FACT(s) (Environment):

Windows
OpenEdge 10.1x
Progress 9.1E04 Service Pack
Progress 9.1D
MS SQL 2000
MS SQL 2005

CAUSE:

This is a known issue

CAUSE:

There are 2 issues here. The obvious one is that the client is not reseting the bfc file location when the transaction ends.
The bfc facility is used in 2 situations: when writing records to the db and when undoing a record delete.
This facility is used specifically for DataServers, and it is used to keep track of rowid changes for the records in those 2 cases.

The other issue is that the reason why the DataServer client side is writing to the bfc file is that it has a bug when comparing the ROWID
when doing an update.
The code is comparing past the rowid value and thinks that the rowid has changed and then writes the info to the bfc
file.

FIX:

If the code contains something like this:

do trans:

func()

assign field.

release.

end.

func()

do trans: /* removing this solves the issue */

creare rec.

assign fields.

end,

end function.

The reason for the issue not to happen when the DO TRANS is removed from within the function is that when there is a DO block, we will validate
the record at that point, and write it out to the db. Then back to the caller, the record is again changed and then released,
in which case we will have to write the record once more, and that's when we will write to the bfc file.

If you remove the do trans, then we will only write the record when we get to the RELEASE on the caller, and won't get through the code that
incorrectly writes to the bfc file.