Did this article resolve your question/issue?



DB with -directio leaves file handles open in Connect&Disconnect cycle after ADDONLINE

« Go Back


TitleDB with -directio leaves file handles open in Connect&Disconnect cycle after ADDONLINE
URL Name000032220
Article Number000152733
EnvironmentProduct: OpenEdge
Version: 10.1x, 10.2x, 11.x, 12.0x, 12.1x
Question/Problem Description
After adding extents online (addonlineclient sessions eventually fail to open a connection to the database having exhausted filehandles
Clients are unable to open a connection to the database as all system file handles had been allocated
Client session connection fails with error 43 errno 24: Too many open files
File handles are exhausted (ulimit -n)

Database extents were added online: prostrct addonline.
Database started with -directio startup parameter which uses Unbuffered Synchronous I/O (O_RDWR|O_DSYNC) 

Strace of the client session shows the added extent(s) are opened with two file handles:
open("../dbname_7.d6", O_RDWR) = 29
open("../dbname_7.d6", O_RDWR|O_DSYNC) = 30

Strace of the client session shows older extents are opened with on file handle:
open("../dbname_7.d5", O_RDWR|O_DSYNC) = 28
Steps to Reproduce
Clarifying Information
Without directio file handles are properly closed on client disconnect.
After database shutdown and restart with -directio, file handles are closed on client disconnect as they should be.
errno 24: Too many open files
Error MessageCannot find or open file <file-name>, errno = 0. (43)
Cannot find or open file <file-name>, errno = 24 (43)
Defect NumberDefect PSC00245008 / OE00221787; Defect PSC00361789 / OCTA-3841
Enhancement Number
New connections opens double amount of file handles after prostrct addonline.
  • Older extents are opened with with “UNBUFIO” once == O_RDWR|O_DSYNC
  • Newly added extents are opened with “BOTHIO” which results 2 file handles, one for “BUFIO”, one for “UNBUFIO”
Upgrade to OpenEdge 12.2 where PROSTRCT addonline sets the mode for newly added extents as "UNBUFIO"
When using the -directio database startup parameter, schedule downtime to add extents to the database.
Last Modified Date11/20/2020 7:30 AM
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.