[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Ftpapi] LIBHTTP/QRPGLESRC,COMMTCPR4



Anthony,

For some reason you are running out of available descriptors.  Do you have any code in the job that is opening IFS files, pipes or sockets?  (Aside from HTTPAPI.)   HTTPAPI will also open some.  Once the total open in the job exceeds 224 descriptors, you'll run into this error when calling HTTPAPI.

-- 
Scott Klement
sk@xxxxxxxxxxxxxxxx
On 2/24/2021 10:46 AM, Anthony Shrader wrote:

I recently started consuming several AWS api’s and I’m getting an error I’ve never seen before. I can’t seem to recreate the error and it always seems to happen in a different area of the process.  

 

I was able to narrow it down a little further by running in debug. It breaks in COMMTCPR4 at this procedure…

 

P CommTCP_FD_SET...                                                     

P                 B                   EXPORT                             

D CommTCP_FD_SET...                                                     

D                 PI                                                    

D   peFD                        10I 0                                   

D   peFDSet                           like(fdset)                       

D wkByteNo        S              5I 0                                   

D wkMask          S              1A                                     

D wkByte          S              1A                                      

C                   callp     CalcBitPos(peFD:wkByteNo:wkMask)          

c                   eval      wkByte = %subst(peFDSet:wkByteNo:1)       

c                   biton     wkMask        wkByte                      

c                   eval      %subst(peFDSet:wkByteNo:1) = wkByte       

P                 E                                                     

 

wkByteNo turns out to be 32.

It makes sense because peFDSet is only 28 bytes.

I’ve re-run the same request immediately after this error and it works just fine. If I happened to be running it interactively I have to sign-off then sign back on first.

 

We’ve considered increasing the length of the fdset variable in LIBHTTP/PRIVATE_H but there are so many procedures referencing it. I don’t want to rock the boat.

I also have a hard time believing that the variable in the copybook needs to be changed. It HAS to be something I’m doing right?

 

The only real difference I can spot is that this new AWS stuff requires a lot more http requests per process than any other web service we use. We’re talking 3-4 times more. Could the amount of requests in a job be related?

 

Thanks

Anthony Shrader

Maples Industries, Inc.

ashrader@xxxxxxxxxxxxxx

256-259-1277   Ext:649

Description: MaplesLogo2

 


-- 
_______________________________________________
Ftpapi mailing list
Ftpapi@xxxxxxxxxxxxxxxxxxxxxx
http://scottklement.com/mailman/listinfo/ftpapi