You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2011/07/19 01:33:12 UTC
svn commit: r1148096 - in /trafficserver/traffic/trunk: lib/ts/Makefile.am
lib/ts/ink_sys_control.cc lib/ts/ink_sys_control.h mgmt/Main.cc
proxy/Initialize.cc proxy/Main.cc proxy/logging/LogStandalone.cc
Author: zwoop
Date: Mon Jul 18 23:33:11 2011
New Revision: 1148096
URL: http://svn.apache.org/viewvc?rev=1148096&view=rev
Log:
TS-882 traffic_logstats dies when printing log.
Added:
trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc
trafficserver/traffic/trunk/lib/ts/ink_sys_control.h
Modified:
trafficserver/traffic/trunk/lib/ts/Makefile.am
trafficserver/traffic/trunk/mgmt/Main.cc
trafficserver/traffic/trunk/proxy/Initialize.cc
trafficserver/traffic/trunk/proxy/Main.cc
trafficserver/traffic/trunk/proxy/logging/LogStandalone.cc
Modified: trafficserver/traffic/trunk/lib/ts/Makefile.am
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/Makefile.am?rev=1148096&r1=1148095&r2=1148096&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/Makefile.am (original)
+++ trafficserver/traffic/trunk/lib/ts/Makefile.am Mon Jul 18 23:33:11 2011
@@ -109,6 +109,8 @@ libtsutil_la_SOURCES = \
ink_string++.cc \
ink_string.h \
ink_string++.h \
+ ink_sys_control.cc \
+ ink_sys_control.h \
ink_syslog.cc \
ink_syslog.h \
ink_thread.cc \
Added: trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc?rev=1148096&view=auto
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc (added)
+++ trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc Mon Jul 18 23:33:11 2011
@@ -0,0 +1,64 @@
+/** @file
+
+ A brief file description
+
+ @section license License
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#include "ink_sys_control.h"
+#include "ink_assert.h"
+
+rlim_t
+ink_max_out_rlimit(int which, bool max_it, bool unlim_it)
+{
+ struct rlimit rl;
+
+#if defined(linux)
+# define MAGIC_CAST(x) (enum __rlimit_resource)(x)
+#else
+# define MAGIC_CAST(x) x
+#endif
+
+ if (max_it) {
+ ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
+ if (rl.rlim_cur != rl.rlim_max) {
+#if defined(darwin)
+ if (which == RLIMIT_NOFILE)
+ rl.rlim_cur = fmin(OPEN_MAX, rl.rlim_max);
+ else
+ rl.rlim_cur = rl.rlim_max;
+#else
+ rl.rlim_cur = rl.rlim_max;
+#endif
+ ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
+ }
+ }
+
+#if !defined(darwin)
+ if (unlim_it) {
+ ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
+ if (rl.rlim_cur != (rlim_t)RLIM_INFINITY) {
+ rl.rlim_cur = (rl.rlim_max = RLIM_INFINITY);
+ ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
+ }
+ }
+#endif
+ ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
+ return rl.rlim_cur;
+}
Added: trafficserver/traffic/trunk/lib/ts/ink_sys_control.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_sys_control.h?rev=1148096&view=auto
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_sys_control.h (added)
+++ trafficserver/traffic/trunk/lib/ts/ink_sys_control.h Mon Jul 18 23:33:11 2011
@@ -0,0 +1,40 @@
+/** @file
+
+ A brief file description
+
+ @section license License
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#ifndef _INK_SYS_CONTROL_H
+#define _INK_SYS_CONTROL_H
+
+#include <sys/resource.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+rlim_t ink_max_out_rlimit(int which, bool max_it=true, bool unlim_it=true);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /*_INK_SYS_CONTROL_H*/
Modified: trafficserver/traffic/trunk/mgmt/Main.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/Main.cc?rev=1148096&r1=1148095&r2=1148096&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/Main.cc (original)
+++ trafficserver/traffic/trunk/mgmt/Main.cc Mon Jul 18 23:33:11 2011
@@ -32,6 +32,7 @@
#include "ink_config.h"
#include "ink_platform.h"
+#include "ink_sys_control.h"
#include "Main.h"
#include "MgmtUtils.h"
@@ -354,50 +355,6 @@ chdir_root()
}
}
-#define set_rlimit(name,max_it,ulim_it) max_out_limit(#name, name, max_it, ulim_it)
-static rlim_t
-max_out_limit(const char *name, int which, bool max_it = true, bool unlim_it = true)
-{
- NOWARN_UNUSED(name);
- struct rlimit rl;
-
-#if defined(linux)
-# define MAGIC_CAST(x) (enum __rlimit_resource)(x)
-#else
-# define MAGIC_CAST(x) x
-#endif
-
- if (max_it) {
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- if (rl.rlim_cur != rl.rlim_max) {
-#if defined(darwin)
- if (which == RLIMIT_NOFILE)
- rl.rlim_cur = fmin(OPEN_MAX, rl.rlim_max);
- else
- rl.rlim_cur = rl.rlim_max;
-#else
- rl.rlim_cur = rl.rlim_max;
-#endif
- ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
- }
- }
-
-#if !defined(darwin)
- if (unlim_it) {
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- if (rl.rlim_cur != (rlim_t)RLIM_INFINITY) {
- rl.rlim_cur = (rl.rlim_max = RLIM_INFINITY);
- ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
- }
- }
-#endif
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
-#ifdef MGMT_USE_SYSLOG
- //syslog(LOG_NOTICE, "NOTE: %s(%d):cur(%d),max(%d)", name, which, (int)rl.rlim_cur, (int)rl.rlim_max);
-#endif
- return rl.rlim_cur;
-}
-
static void
set_process_limits(int fds_throttle)
@@ -405,12 +362,12 @@ set_process_limits(int fds_throttle)
struct rlimit lim;
// Set needed rlimits (root)
- set_rlimit(RLIMIT_NOFILE, true, false);
- set_rlimit(RLIMIT_STACK, true, true);
- set_rlimit(RLIMIT_DATA, true, true);
- set_rlimit(RLIMIT_FSIZE, true, false);
+ ink_max_out_rlimit(RLIMIT_NOFILE, true, false);
+ ink_max_out_rlimit(RLIMIT_STACK, true, true);
+ ink_max_out_rlimit(RLIMIT_DATA, true, true);
+ ink_max_out_rlimit(RLIMIT_FSIZE, true, false);
#ifdef RLIMIT_RSS
- set_rlimit(RLIMIT_RSS, true, true);
+ ink_max_out_rlimit(RLIMIT_RSS, true, true);
#endif
if (!getrlimit(RLIMIT_NOFILE, &lim)) {
Modified: trafficserver/traffic/trunk/proxy/Initialize.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/Initialize.cc?rev=1148096&r1=1148095&r2=1148096&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/Initialize.cc (original)
+++ trafficserver/traffic/trunk/proxy/Initialize.cc Mon Jul 18 23:33:11 2011
@@ -39,45 +39,6 @@
#include "Initialize.h" // TODO: move to I_Initialize.h ???
-#define set_rlimit(name,max_it,ulim_it) max_out_limit(#name, name, max_it, ulim_it)
-static rlim_t
-max_out_limit(const char *name, int which, bool max_it = true, bool unlim_it = true)
-{
- struct rlimit rl;
-
-#if defined(linux)
-# define MAGIC_CAST(x) (enum __rlimit_resource)(x)
-#else
-# define MAGIC_CAST(x) x
-#endif
-
- if (max_it) {
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- if (rl.rlim_cur != rl.rlim_max) {
-#if defined(darwin)
- if (which == RLIMIT_NOFILE)
- rl.rlim_cur = fmin(OPEN_MAX, rl.rlim_max);
- else
- rl.rlim_cur = rl.rlim_max;
-#else
- rl.rlim_cur = rl.rlim_max;
-#endif
- ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
- }
- }
-
- if (unlim_it) {
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- if (rl.rlim_cur != RLIM_INFINITY) {
- rl.rlim_cur = (rl.rlim_max = RLIM_INFINITY);
- ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
- }
- }
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- //syslog(LOG_NOTICE, "NOTE: %s(%d):cur(%d),max(%d)", name, which, (int)rl.rlim_cur, (int)rl.rlim_max);
- return rl.rlim_cur;
-}
-
//
// Initialize operating system related information/services
//
@@ -85,13 +46,13 @@ void
init_system_settings(void)
{
// Delimit file Descriptors
- fds_limit = set_rlimit(RLIMIT_NOFILE, true, false);
+ fds_limit = ink_max_out_rlimit(RLIMIT_NOFILE, true, false);
- set_rlimit(RLIMIT_STACK,true,true);
- set_rlimit(RLIMIT_DATA,true,true);
- set_rlimit(RLIMIT_FSIZE, true, false);
+ ink_max_out_rlimit(RLIMIT_STACK,true,true);
+ ink_max_out_rlimit(RLIMIT_DATA,true,true);
+ ink_max_out_rlimit(RLIMIT_FSIZE, true, false);
#ifdef RLIMIT_RSS
- set_rlimit(RLIMIT_RSS,true,true);
+ ink_max_out_rlimit(RLIMIT_RSS,true,true);
#endif
}
Modified: trafficserver/traffic/trunk/proxy/Main.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/Main.cc?rev=1148096&r1=1148095&r2=1148096&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/Main.cc (original)
+++ trafficserver/traffic/trunk/proxy/Main.cc Mon Jul 18 23:33:11 2011
@@ -33,10 +33,11 @@
#include "ink_config.h"
#include "libts.h"
+#include "ink_sys_control.h"
+
#if !defined(linux)
#include <sys/lock.h>
#endif
-#include <sys/resource.h>
#if defined(linux)
extern "C" int plock(int);
#else
@@ -274,48 +275,6 @@ ArgumentDescription argument_description
};
int n_argument_descriptions = SIZE(argument_descriptions);
-
-#define set_rlimit(name,max_it,ulim_it) max_out_limit(#name, name, max_it, ulim_it)
-static rlim_t
-max_out_limit(const char *name, int which, bool max_it = true, bool unlim_it = true)
-{
- NOWARN_UNUSED(name);
- struct rlimit rl;
-
-#if defined(linux)
-# define MAGIC_CAST(x) (enum __rlimit_resource)(x)
-#else
-# define MAGIC_CAST(x) x
-#endif
-
- if (max_it) {
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- if (rl.rlim_cur != rl.rlim_max) {
-#if defined(darwin)
- if (which == RLIMIT_NOFILE)
- rl.rlim_cur = fmin(OPEN_MAX, rl.rlim_max);
- else
- rl.rlim_cur = rl.rlim_max;
-#else
- rl.rlim_cur = rl.rlim_max;
-#endif
- ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
- }
- }
-
- if (unlim_it) {
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- if (rl.rlim_cur != (rlim_t)RLIM_INFINITY) {
- rl.rlim_cur = (rl.rlim_max = RLIM_INFINITY);
- ink_release_assert(setrlimit(MAGIC_CAST(which), &rl) >= 0);
- }
- }
- ink_release_assert(getrlimit(MAGIC_CAST(which), &rl) >= 0);
- //syslog(LOG_NOTICE, "NOTE: %s(%d):cur(%d),max(%d)", name, which, (int)rl.rlim_cur, (int)rl.rlim_max);
- return rl.rlim_cur;
-}
-
-
//
// Initialize operating system related information/services
//
@@ -338,7 +297,7 @@ init_system()
//
// Delimit file Descriptors
//
- fds_limit = set_rlimit(RLIMIT_NOFILE, true, false);
+ fds_limit = ink_max_out_rlimit(RLIMIT_NOFILE, true, false);
}
static void
@@ -1078,11 +1037,11 @@ adjust_sys_settings(void)
}
}
- set_rlimit(RLIMIT_STACK,true,true);
- set_rlimit(RLIMIT_DATA,true,true);
- set_rlimit(RLIMIT_FSIZE, true, false);
+ ink_max_out_rlimit(RLIMIT_STACK,true,true);
+ ink_max_out_rlimit(RLIMIT_DATA,true,true);
+ ink_max_out_rlimit(RLIMIT_FSIZE, true, false);
#ifdef RLIMIT_RSS
- set_rlimit(RLIMIT_RSS,true,true);
+ ink_max_out_rlimit(RLIMIT_RSS,true,true);
#endif
#endif // linux check
Modified: trafficserver/traffic/trunk/proxy/logging/LogStandalone.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogStandalone.cc?rev=1148096&r1=1148095&r2=1148096&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogStandalone.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogStandalone.cc Mon Jul 18 23:33:11 2011
@@ -28,6 +28,7 @@
***************************************************************************/
#include "libts.h"
+#include "ink_sys_control.h"
#include "signals.h"
#include "DiagsConfig.h"
#include "Main.h"
@@ -74,34 +75,6 @@ DiagsConfig *diagsConfig = NULL;
HttpBodyFactory *body_factory = NULL;
AppVersionInfo appVersionInfo;
-
-/*-------------------------------------------------------------------------
- max_out_limit
- -------------------------------------------------------------------------*/
-#if defined(linux)
- /* Stupid PICKY stupid (did I mention that?) C++ compielrs */
-#define RLIMCAST enum __rlimit_resource
-#else
-#define RLIMCAST int
-#endif
-
-static rlim_t
-max_out_limit(int which, bool max_it)
-{
- struct rlimit rl;
-
- ink_release_assert(getrlimit((RLIMCAST) which, &rl) >= 0);
- if (max_it) {
- rl.rlim_cur = rl.rlim_max;
- ink_release_assert(setrlimit((RLIMCAST) which, &rl) >= 0);
- }
-
- ink_release_assert(getrlimit((RLIMCAST) which, &rl) >= 0);
- rlim_t ret = rl.rlim_cur;
-
- return ret;
-}
-
/*-------------------------------------------------------------------------
init_system
-------------------------------------------------------------------------*/
@@ -109,9 +82,7 @@ max_out_limit(int which, bool max_it)
void
init_system()
{
-
- fds_limit = max_out_limit(RLIMIT_NOFILE, true);
-
+ fds_limit = ink_max_out_rlimit(RLIMIT_NOFILE, true, false);
init_signals();
syslog(LOG_NOTICE, "NOTE: --- SAC Starting ---");
Re: svn commit: r1148096 - in /trafficserver/traffic/trunk: lib/ts/Makefile.am
lib/ts/ink_sys_control.cc lib/ts/ink_sys_control.h mgmt/Main.cc proxy/Initialize.cc
proxy/Main.cc proxy/logging/LogStandalone.cc
Posted by Leif Hedstrom <zw...@apache.org>.
On 08/17/2011 05:21 AM, Igor Galić wrote:
> Added: trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc
>> URL:
>> http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc?rev=1148096&view=auto
>> ==============================================================================
>> --- trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc (added)
>> +++ trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc Mon Jul 18
>> 23:33:11 2011
>> @@ -0,0 +1,64 @@
>> +/** @file
>> +
>> + A brief file description
> Is it somehow possible we have anything other than "A brief file description"
> as a brief file description? At least for files we *add* as new
Probably, make it so #1.
-- Leif
Re: svn commit: r1148096 - in /trafficserver/traffic/trunk: lib/ts/Makefile.am lib/ts/ink_sys_control.cc lib/ts/ink_sys_control.h mgmt/Main.cc proxy/Initialize.cc proxy/Main.cc proxy/logging/LogStandalone.cc
Posted by Igor Galić <i....@brainsware.org>.
----- Original Message -----
> Author: zwoop
> Date: Mon Jul 18 23:33:11 2011
> New Revision: 1148096
>
> URL: http://svn.apache.org/viewvc?rev=1148096&view=rev
> Log:
> TS-882 traffic_logstats dies when printing log.
>
> Added:
> trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc
> trafficserver/traffic/trunk/lib/ts/ink_sys_control.h
[snip]
> Added: trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc
> URL:
> http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc?rev=1148096&view=auto
> ==============================================================================
> --- trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc (added)
> +++ trafficserver/traffic/trunk/lib/ts/ink_sys_control.cc Mon Jul 18
> 23:33:11 2011
> @@ -0,0 +1,64 @@
> +/** @file
> +
> + A brief file description
Is it somehow possible we have anything other than "A brief file description"
as a brief file description? At least for files we *add* as new
i
--
Igor Galić
Tel: +43 (0) 664 886 22 883
Mail: i.galic@brainsware.org
URL: http://brainsware.org/
GPG: 571B 8B8A FC97 266D BDA3 EF6F 43AD 80A4 5779 3257