[ 
https://issues.apache.org/jira/browse/TS-4885?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bryan Call updated TS-4885:
---------------------------
    Fix Version/s:     (was: 7.1.0)
                   7.0.0

> Incorrect checking of fds_throttle and fds_limit
> ------------------------------------------------
>
>                 Key: TS-4885
>                 URL: https://issues.apache.org/jira/browse/TS-4885
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Core
>            Reporter: Oknet Xu
>            Assignee: Oknet Xu
>             Fix For: 7.0.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> {code}
>  902 static void
>  903 check_fd_limit()
>  904 {
>  905   int fds_throttle = -1;
>  906   REC_ReadConfigInteger(fds_throttle, 
> "proxy.config.net.connections_throttle");
>  907   if (fds_throttle > fds_limit + THROTTLE_FD_HEADROOM) {      // 
> -------> Incorrect
>  908     int new_fds_throttle = fds_limit - THROTTLE_FD_HEADROOM;
>  909     if (new_fds_throttle < 1) {
>  910       ink_abort("too few file descriptors (%d) available", fds_limit);
>  911     }
>  912     char msg[256];
>  913     snprintf(msg, sizeof(msg), "connection throttle too high, "
>  914                                "%d (throttle) + %d (internal use) > %d 
> (file descriptor limit), "
>  915                                "using throttle of %d",
>  916              fds_throttle, THROTTLE_FD_HEADROOM, fds_limit, 
> new_fds_throttle);
>  917     SignalWarning(MGMT_SIGNAL_SYSTEM_ERROR, msg);
>  918   }
>  919 }
> {code}
> {code}
> 1001 static void
> 1002 adjust_sys_settings(void)
> 1003 {
> ...
> 1024   REC_ReadConfigInteger(fds_throttle, 
> "proxy.config.net.connections_throttle");
> 1025 
> 1026   if (getrlimit(RLIMIT_NOFILE, &lim) == 0) {
> 1027     if (fds_throttle > (int)(lim.rlim_cur + THROTTLE_FD_HEADROOM)) {  // 
> ------> Incorrect
> 1028       lim.rlim_cur = (lim.rlim_max = (rlim_t)fds_throttle);
> 1029       if (setrlimit(RLIMIT_NOFILE, &lim) == 0 && 
> getrlimit(RLIMIT_NOFILE, &lim) == 0) {
> 1030         fds_limit = (int)lim.rlim_cur;
> 1031         syslog(LOG_NOTICE, "NOTE: RLIMIT_NOFILE(%d):cur(%d),max(%d)", 
> RLIMIT_NOFILE, (int)lim.rlim_cur, (int)lim.rlim_max);
> 1032       }
> 1033     }
> 1034   }
> ...
> 1043 }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to