Consultor Eletrônico



Kbase 21908: Unable to Create Compile File on Database with Many Extents
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   15/04/2002
SUMMARY:

If you attempt to compile code via a local client session against a database with a lot of database extents (235+) you might receive the message:

Unable to create compile file. Compilation cancelled

EXPLANATION:

When an open() call is performed, a file descriptor is created for each file being opened. The file descriptor is used for all I/O associated with that specific file. The file descriptor remains open until either the file is closed or the calling process is terminated.

File descriptors are typically created in the 0 - 255 range. Other open calls not relying on the STDIO library are able to access file descriptors in and beyond the 0 - 255 range. Progress uses various open() and I/O calls. The 4GL tty client makes use of Vermont Views. The fopen() call within Vermont Views is using the STDIO library. The open() or fopen() calls associated with the STDIO library are limited to 256 file descriptors. If you exceed file descriptors in the 0 - 255 range, you will be unable to perform additional I/O operations for your client session. This includes compiling and executing code against your database.

NOTE: This behavior relates to bug 19980407-036.

SOLUTION:

Progress version 9.1C has "Large File" Support for Database files. A
workaround for this issue would be to create fewer extents for the database which have a larger size. See KBase #: 21184
Title: Version 9.1C Supports Large Files (EnableLargeFiles) > 2GB for additional information regarding "Large File" Support.

Progress verisons prior to 9.1C, can use either of these recommendations:

To resolve the problem, use one of these two solutions:

-- Use a dummy database

1) Create a sports database or some other dummy database.

2) Connect to this database prior to connecting to the larger
database.

3) Once connected to both databases, disconnect from the dummy one.
You will now be able to compile code against your database with
the larger number of database extents.

NOTE: This solution is successful because by attaching to a
smaller database initially, you reserve file descriptors in the
lower range of 0 - 255. Then when you disconnect the database,
these file descriptors are now available for additional I/O you
perform against the larger database; functions like running
or compiling procedures, temp-table and sort files, etc.

- or -

-- Attach to the database as a remote client using the -H, -S and -N
parameters.