Kbase P170881: Client session dies with error 1101 when attempting to update a field with data > 32K via DataServer
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  8/2/2010 |
|
Status: Unverified
SYMPTOM(s):
Client session dies with error 1101 when attempting to update a field with data > 32K via DataServer for MS SQL Server
SYSTEM ERROR: <function-name>: invalid parameter, size=<value>. (1101)
SYSTEM ERROR: bfget: invalid parameter, size=32665. (1101)
Stack trace from PROWIN32 reads:
bfget
odbc_scrlfnd
odblck
fdlck
Locking level is not explicitly declared in the ABL code
Updating records from PROWIN32: /* where bigfield is already 31850 in length */
FIND FIRST myTable.
bigfield = bigfield + FILL("x",1).
FACT(s) (Environment):
Error 12370 is raised when attempting to create a record with > 32K but the client session does not die
Attempt to update <name> record data exceeding <number>. (12370)
Field being updated has the following data type definitions:
Microsoft SQL Server database: VARCHAR(MAX)
Schema holder FOREIGN-TYPE: VARCHAR
OpenEdge: CHARACTER
OpenEdge 10.2x
Windows
MS SQL Server
CAUSE:
Bug# OE00199039
CAUSE:
This error is happening in the OpenEdge client as the result of a lock-upgrade requirement. The application appears to be crashing but actually it is a controlled death. When the ABL client receives a record allocation error from an overflow condition, the 1101 error initiates an automatic shutdown. This is not GPF but does abruptly and immediately terminate the application session in order to avoid data corruption. These are events that are not supposed to occur and when they do, the only proper response is immediate termination.
FIX:
Explicitly set the lock-type on the FIND to avoid lock-upgrades, e.g.
FIND FIRST customer EXCLUSIVE-LOCK.
Instead of:
FIND FIRST customer.
This will ensure that error 12370 is encountered rather than error 1101; error 12370 can be handled with error-handling.