Consultor Eletrônico



Kbase P127816: Client-Server connections Cannot see schema changes applied online
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   13/01/2011
Status: Verified

SYMPTOM(s):

Existing Client-Server connection fails to read table with errors 450 3191

Cannot see schema changes added on-line

SYSTEM ERROR: Cannot read field from record, not enough fields. (450)

SYSTEM ERROR: Failed to extract field <field-num> from <file-name> record (table <table-num>) with recid <RECID>. (3191)

Couldn't extract field '<field>' from source in a BUFFER-COPY statement. (5367)

FACT(s) (Environment):

Adding new objects on-line from *.df file
Adding new fields to existing table with "Add new objects on-line" option in "Load Data Definitions" frame
New fields are seen in "Detailed Table Report" in Data Dictionary
A new self-service client session finds the newly added objects
A new client-server client session fails to find newly added objects with errors 450 3191
If new objects are added **without** "Add new objects on-line" option new objects are found
OpenEdge 10.1x
OpenEdge Database Category: Maintenance
All Supported Operating Systems

CAUSE:

Starting in OpenEdge 10.1A, Progress relaxed the requirement for exclusive access to a database by allowing for the addition of sequences, 4GL tables and any fields, indexes, and database triggers associated with a new and existing tables (in later 10.1x releases) as long as they are added in the same transaction as the table. The behavior is somewhat expected. Please refer to Progress Solution P126802, "Cannot see schema changes applied online".

This issue is specific to existing Client-Server connections that held a lock from the remote server on the database table while adding the df or changing the schema online.

CAUSE:

Bug# OE00162928

FIX:

Upgrade to OpenEdge 10.2A where this issue has been fixed.

Workarounds:

Option 1: Shut-down the database and apply schema changes single-user or

Option 2: Request all Client-Server sessions to disconnect, then stop the spawned remote servers with:

$ promon > R&D > 4. Administrative Functions > 7. Terminate a Server

If there are too many server processes to terminate in this manner, you could make use of a script on UNIX that does a kill -15 on the PIDs (Process IDs) associated with the servers to have the processes terminate. When new server processes are started, they will recognize the new schema changes.

Then send an alert for re-connection. For further information please refer to Solution: P39432, "How to trim ABL and SQL remote server processes"

The remaining Options are only listed as considerations, they are unlikely to be employed in a production environment.

Option 3: Request all Client-Server sessions to re-connect self-service.

Option 4: Add schema changes online without the "Add new objects online" option if the application environment is client-server. This will require a schema lock first on the database, which defeats the object of an online schema change for new objects.