Can someone please explain the logic behind this?
I think I understand, but I'd like to know what people are trying
to achieve.
Adrian
On Sat, Feb 23, 2008, chtsanti wrote:
> Update of cvs.devel.squid-cache.org:/cvsroot/squid/squid3/src
> 
> Modified Files:
>       Tag: async-calls
> 	debug.cc Debug.h main.cc structs.h cf.data.pre 
> Log Message:
> - Add TheAssertsPerStep counter to count the number of assertions per
> single main loop iteration. This counter is reset to zero at the
> beginning of every main loop iteration.
> 
> - To reset the TheAssertsPerStep counter a new AsyncEngine based class used,
> the XAssertsEngine.
> 
> - Add "assert_burst_max <int>" to squid.conf. If TheAssertsPerStep
> counter exceeds a non-negative assert_burst_max, we abort().
> If set to zero, the first assertion aborts Squid, giving users the old
> behavior. If set to a negative number, there is no limit.
> 
> 
> 
> Index: cf.data.pre
> ===================================================================
> RCS file: /cvsroot/squid/squid3/src/cf.data.pre,v
> retrieving revision 1.155.4.3
> retrieving revision 1.155.4.4
> diff -C2 -d -r1.155.4.3 -r1.155.4.4
> *** cf.data.pre	12 Feb 2008 19:04:39 -0000	1.155.4.3
> --- cf.data.pre	23 Feb 2008 10:31:18 -0000	1.155.4.4
> ***************
> *** 5610,5612 ****
> --- 5610,5628 ----
>   DOC_END
>   
> + NAME: assert_burst_max
> + TYPE: int
> + LOC: Config.assert_burst_max
> + DEFAULT: 100
> + DOC_START
> + 	When this is set to a possitive number then Squid will abort 
> + 	if an assertions burst exceeds this number. 
> + 	If set to zero, the first assertion aborts Squid, giving users
> + 	the old behavior. If set to a negative number, there is no 
> + 	limit.
> + 	An asssertions burst defined as the number of assertions per 
> + 	single Squid main loop iteration.
> + 	WARNING! This is an experimental feature and the definition 
> + 	of a "burst" can change
> + DOC_END
> + 
>   EOF
> 
> Index: main.cc
> ===================================================================
> RCS file: /cvsroot/squid/squid3/src/main.cc,v
> retrieving revision 1.89.4.7
> retrieving revision 1.89.4.8
> diff -C2 -d -r1.89.4.7 -r1.89.4.8
> *** main.cc	12 Feb 2008 19:05:00 -0000	1.89.4.7
> --- main.cc	23 Feb 2008 10:31:18 -0000	1.89.4.8
> ***************
> *** 144,147 ****
> --- 144,158 ----
>   };
>   
> + class XAssertsEngine : public AsyncEngine
> + {
> + 
> + public:
> +     int checkEvents(int timeout)
> +     {
> + 	TheAssertsPerStep = 0;
> +         return EVENT_IDLE;
> +     };
> + };
> + 
>   class SignalEngine: public AsyncEngine
>   {
> ***************
> *** 1297,1300 ****
> --- 1308,1314 ----
>       mainLoop.registerEngine(&signalEngine);
>   
> +     XAssertsEngine xassertsEngine;
> +     mainLoop.registerEngine(&xassertsEngine);
> + 
>       /* TODO: stop requiring the singleton here */
>       mainLoop.registerEngine(EventScheduler::GetInstance());
> 
> Index: debug.cc
> ===================================================================
> RCS file: /cvsroot/squid/squid3/src/debug.cc,v
> retrieving revision 1.18.4.4
> retrieving revision 1.18.4.5
> diff -C2 -d -r1.18.4.4 -r1.18.4.5
> *** debug.cc	16 Feb 2008 21:06:42 -0000	1.18.4.4
> --- debug.cc	23 Feb 2008 10:31:18 -0000	1.18.4.5
> ***************
> *** 45,48 ****
> --- 45,49 ----
>   int TheCascadingAsserts = 0;
>   int TheSalvagedAsserts = 0;
> + int TheAssertsPerStep = 0;
>   
>   static char *debug_log_file = NULL;
> ***************
> *** 591,606 ****
>   xassert(const char *msg, const char *file, int line) {
>   
> !     if (TheCascadingAsserts < MAX_CASCADING_ASSERTS && AsyncCall_Handling_Exceptions) {
>   	TheCascadingAsserts++;
>   	TheSalvagedAsserts++;
> ! 	debugs(0, 0, "assertion failed: " << file << ":" << line << ": \"" << msg << "\". Trying to survive. Salvaged assertions: " << TheSalvagedAsserts);
>   
>   	throw TextException(msg, file, line);
>       }
>       
> -     debugs(0, 0, "assertion failed: " << file << ":" << line << ": \"" << msg << "\"");
>   
>       if(TheCascadingAsserts >= MAX_CASCADING_ASSERTS)
> ! 	debugs(0, 0, "I am dying after " << TheCascadingAsserts << "cascading assertions!" );
>   
>       if (!shutting_down)
> --- 592,619 ----
>   xassert(const char *msg, const char *file, int line) {
>   
> !     debugs(0, 0, "assertion failed: " << file << ":" << line << ": \"" << msg << "\"");    
> ! 
> !     if (AsyncCall_Handling_Exceptions &&
> ! 	TheCascadingAsserts < MAX_CASCADING_ASSERTS && 
> ! 	( Config.assert_burst_max < 0 ||
> ! 	  (Config.assert_burst_max > 0 && TheAssertsPerStep < Config.assert_burst_max)
> ! 	    )
> ! 	) {
>   	TheCascadingAsserts++;
>   	TheSalvagedAsserts++;
> ! 	TheAssertsPerStep++;
> ! 
> ! 	debugs(0, 0, "salvaging assertion #" << TheSalvagedAsserts << " (" <<
> ! 	       TheAssertsPerStep << "/" << Config.assert_burst_max << ")");
>   
>   	throw TextException(msg, file, line);
>       }
>       
>   
>       if(TheCascadingAsserts >= MAX_CASCADING_ASSERTS)
> ! 	debugs(0, 0, "dying after " << TheCascadingAsserts << "cascading assertions" );
> !     
> !     if(Config.assert_burst_max > 0 && TheAssertsPerStep >= Config.assert_burst_max)
> ! 	debugs(0, 0, "dying after an " << TheAssertsPerStep << " assertions burst" );
>   
>       if (!shutting_down)
> 
> Index: Debug.h
> ===================================================================
> RCS file: /cvsroot/squid/squid3/src/Debug.h,v
> retrieving revision 1.10.4.3
> retrieving revision 1.10.4.4
> diff -C2 -d -r1.10.4.3 -r1.10.4.4
> *** Debug.h	14 Feb 2008 21:46:38 -0000	1.10.4.3
> --- Debug.h	23 Feb 2008 10:31:18 -0000	1.10.4.4
> ***************
> *** 55,58 ****
> --- 55,60 ----
>   void WillCatchException(int debug_section, int debug_level, const char *who);
>   void WontCatchException();
> + extern int TheSalvagedAsserts;
> + extern int TheAssertsPerStep;
>   
>   /* defined names for Debug Levels */
> 
> Index: structs.h
> ===================================================================
> RCS file: /cvsroot/squid/squid3/src/structs.h,v
> retrieving revision 1.116.4.3
> retrieving revision 1.116.4.4
> diff -C2 -d -r1.116.4.3 -r1.116.4.4
> *** structs.h	12 Feb 2008 19:05:14 -0000	1.116.4.3
> --- structs.h	23 Feb 2008 10:31:18 -0000	1.116.4.4
> ***************
> *** 693,696 ****
> --- 693,697 ----
>   
>       char *accept_filter;
> +     int assert_burst_max;
>   };
>   
Received on Sat Feb 23 2008 - 03:34:20 MST
This archive was generated by hypermail pre-2.1.9 : Sat Mar 01 2008 - 12:00:09 MST