From: "Adrian Crum" <adrian.c...@sandglass-software.com>
> On 4/7/2013 10:30 AM, Jacques Le Roux wrote:
>> From: "Adrian Crum" <adrian.c...@sandglass-software.com>
>>>  From my perspective, you are the one complicating things. If you don't
>>> want to slow down the system with logging I/O, then turn logging off.
>> When you are continously developping a system, removing all log info/timing 
>> from production can be problematic.
>> It's sometimes the only way you have to understand why and how a random 
>> issue appears.
> 
> 
> That is helpful. So, when you are troubleshooting a production 
> installation, you enable TIMING and INFO logging to see what's going on. 
> Understood. Now, what is the purpose of using a threshold?

To separate slow services and, for the 2nd  threshold, possibly very slow ones.
Sometimes, it depends not only on external system but also on a whole 
"ecosystem" (net connections, firewalls, etc.)
We know things always changes, it's like a chaos sometimes.

At this stage you are yet sure not what for looking for.
So you need a 1st rough filter to better understand what's going on
Putting thresholds on services durations can then help to separate cases.
 
> You mentioned marking slow services, but a single threshold value for 
> all services will not do that - because every service is different and 
> each one will have a unique typical elapsed time. That was the reason 
> why I changed the text of the message - because services that were 
> completed in timely manner were being logged as "slow" - which was not true.

There were slow and very slow, that why I used 2 properties, and set the 1st to 
0, to have the behaviour you introduced and I agree with for OOTB setting (show 
all services duration)
 
> Have you considered using the metrics feature?

Ha forgot to ask about it, now I see and remember this thread and I will digg 
in http://markmail.org/message/x4lzvda66ju6gdg5

Of course, I'd not be against a brief briefing, or a link to explain.

Thanks for the reminder

Jacques

> 
> 
>>   
>>> "We've always done it that way" is not a valid argument.
>> I was just saying that personally I did not have problems whith how it was 
>> before your change. I was easy to adapt to my need. I have also no problems 
>> with your change, it's sill easy to adapt.
>>
>>> You still haven't given us any requirements that demonstrate the need to
>>> put complicated decision making around a single log entry.
>> My solution is not complicated at all 2 properties for 2 thresholds. Why do 
>> you feel it as complicated?
>> Actually I'm not stuck with this solution. If you want, comment it out or 
>> even revert and the chapter is closed.
>>
>> Jacques
>>
>>> -Adrian
>>>
>>> On 4/7/2013 9:18 AM, Jacques Le Roux wrote:
>>>> This seems over complicated to me. Don't arbitrarily slow OFBiz by storing 
>>>> (IOs) services durations at each service call. Let's keep it simple and 
>>>> easy tunable.
>>>>
>>>> The way it was before ( >50 => slow; > 200 => very slow) was there for 
>>>> years. I did not code it, and after a decade we want to change it, OK.
>>>>
>>>> Most of the time you don't care about that. When you do, you simply want 
>>>> to separate slow services from others.
>>>>
>>>> I believe OOTB 2 properties are enough. I set them to allow to see all 
>>>> services durations and to specifically mark slow services. I picked 1 sec, 
>>>> why? It would be terribly slow services internally, but externals ones can 
>>>> vary much more.
>>>> If you need more thresholds/separations it's easy from what is coded now 
>>>> to add suiting your needs.
>>>>
>>>>   From my experience, when looking at logs on a system you quickly know 
>>>> which are these values, when you are interested by them
>>>>
>>>> The most important point here is not slow the system and to follow 
>>>> KISS/YAGNI ways.
>>>>
>>>> Please don't complicate things, thanks!
>>>>
>>>> Jacques
>>>>
>>>>
>>>> From: "Atul Vani" <atul.v...@hotwaxmedia.com>
>>>>> Here's what I think, it's all raw though :)
>>>>> * As suggested by Jacopo, we maintain stats in some kind of entity. Let's
>>>>> say average running time.
>>>>> * We use this average running time to decide if a timing log should be
>>>>> printed. The thing is, not all services are same, some are complex and are
>>>>> supposed to take longer than others, so a static number would never
>>>>> suffice. We do not have any means to calculate the complexity of a service
>>>>> (by looking at the mini-lang code) to decide this number, so either a user
>>>>> will tell it or we can compute it on the basis of past run times.
>>>>> * There can come cases when user would want to tell the number (all past
>>>>> experiences were bad ones, or he just optimized), so we can add some
>>>>> attribute to the service definition. There is something like metric
>>>>> already present, not sure how that works.
>>>>> * A single number for all services does not make sense to me, because (as
>>>>> mentioned above) not all services are same.
>>>>>
>>>>> On Sun, 07 Apr 2013 04:14:58 +0530, Adrian Crum
>>>>> <adrian.c...@sandglass-software.com> wrote:
>>>>>
>>>>>> No, a commit is NOT a reply to an email.
>>>>>>
>>>>>> Please, let's discuss this. You seem to be forcing your perception of
>>>>>> how logging should be done on the rest of the community. I would prefer
>>>>>> that we all participate in a discussion and come up with a design that
>>>>>> works for everyone.
>>>>>>
>>>>>> -Adrian
>>>>>>
>>>>>> On 4/6/2013 5:32 PM, Jacques Le Roux wrote:
>>>>>>> I thought the commit comment answered your question
>>>>>>>
>>>>>>> OOTB, there is only 1 change from what you committed: now services
>>>>>>> longer than 1 sec will also show as slow in log
>>>>>>>
>>>>>>> Jacques
>>>>>>>
>>>>>>> From: "Adrian Crum" <adrian.c...@sandglass-software.com>
>>>>>>>> Please don't change the timing logging - there should not be any
>>>>>>>> conditions placed on it.
>>>>>>>>
>>>>>>>> You didn't answer my question. I was hoping we could avoid a commit war
>>>>>>>> by discussing your requirements and designing a solution that makes
>>>>>>>> everyone happy.
>>>>>>>>
>>>>>>>> -Adrian
>>>>>>>>
>>>>>>>> On 4/6/2013 12:00 PM, Jacques Le Roux wrote:
>>>>>>>>> Hi Adrian,
>>>>>>>>>
>>>>>>>>> Thanks for asking, I committed and commented at revision: 1465223
>>>>>>>>>
>>>>>>>>> Atul,
>>>>>>>>>
>>>>>>>>> It was not easy to read your patch in the email (cut at 80 chars).
>>>>>>>>> Please open a Jira if you want to improve my commit.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>> Jacques
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> From: "Adrian Crum" <adrian.c...@sandglass-software.com>
>>>>>>>>>> Jacques,
>>>>>>>>>>
>>>>>>>>>> What are your requirements? What are you looking for in the logs?
>>>>>>>>>>
>>>>>>>>>> -Adrian
>>>>>>>>>>
>>>>>>>>>> On 4/4/2013 10:54 PM, Jacques Le Roux wrote:
>>>>>>>>>>> These numbers are from experience of hours and hours staring at
>>>>>>>>>>> clusters logs, but yes it's arbitrary and depend on context (as I
>>>>>>>>>>> guess were picked the initial numbers which are there for years
>>>>>>>>>>> Then why not the obvious solution Jacopo proposed of properties,
>>>>>>>>>>> easy to change even dynamically...
>>>>>>>>>>> I can't see anything more flexible, at least at 23:43 after days of
>>>>>>>>>>> works.
>>>>>>>>>>> AS you said, once you spot one such line in log it's not a biggie
>>>>>>>>>>> to get there (you have the class line in log) and adapt suiting
>>>>>>>>>>> your needs.
>>>>>>>>>>> So maybe "like you proposed" we could indeed put a very low value
>>>>>>>>>>> (I mean 0) as property.
>>>>>>>>>>>
>>>>>>>>>>> For Atul's proposition, sorry not the courage to check tonight
>>>>>>>>>>> (maybe a patch in a Jira would help to read)
>>>>>>>>>>>
>>>>>>>>>>> Jacques
>>>>>>>>>>> PS: I guessed "fuss around", knew tinker, not fidget :D
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Adrian Crum wrote:
>>>>>>>>>>>> Why not 20 or 30 or 40?
>>>>>>>>>>>>
>>>>>>>>>>>> That's the problem with arbitrary values - they don't mean
>>>>>>>>>>>> anything.
>>>>>>>>>>>>
>>>>>>>>>>>>      From my perspective, if anyone has timing enabled, then they
>>>>>>>>>>>> want to
>>>>>>>>>>>> see what's going on in the system.
>>>>>>>>>>>>
>>>>>>>>>>>> Feel free to change it.
>>>>>>>>>>>>
>>>>>>>>>>>> -Adrian
>>>>>>>>>>>>
>>>>>>>>>>>> On 4/3/2013 9:22 AM, Jacques Le Roux wrote:
>>>>>>>>>>>>> Hi Adrian, All,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Should we really show the timing for all services?
>>>>>>>>>>>>> Maybe increasing from 50 to 75 or even 100 for the 1st case would
>>>>>>>>>>>>> be enough?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Jacques
>>>>>>>>>>>>>
>>>>>>>>>>>>> From: <adri...@apache.org>
>>>>>>>>>>>>>> Author: adrianc
>>>>>>>>>>>>>> Date: Wed Apr  3 07:57:24 2013
>>>>>>>>>>>>>> New Revision: 1463863
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> URL: http://svn.apache.org/r1463863
>>>>>>>>>>>>>> Log:
>>>>>>>>>>>>>> Log message cleanup in ServiceDispatcher.java. Removed confusing
>>>>>>>>>>>>>> text about services taking too long.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Modified:
>>>>>>>>>>>>>>          
>>>>>>>>>>>>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Modified:
>>>>>>>>>>>>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
>>>>>>>>>>>>>> URL:
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java?rev=1463863&r1=1463862&r2=1463863&view=diff
>>>>>>>>>>>>>> ==============================================================================
>>>>>>>>>>>>>> ---
>>>>>>>>>>>>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
>>>>>>>>>>>>>> (original) +++
>>>>>>>>>>>>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
>>>>>>>>>>>>>> Wed Apr  3 07:57:24 2013 @@ -571,10 +571,8 @@ public
>>>>>>>>>>>>>>               class ServiceDispatcher { rs.setEndStamp();
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>               long timeToRun = System.currentTimeMillis() -
>>>>>>>>>>>>>> serviceStartTime;
>>>>>>>>>>>>>> -        if (Debug.timingOn() && timeToRun > 50) {
>>>>>>>>>>>>>> -            Debug.logTiming("Slow sync service execution
>>>>>>>>>>>>>> detected: service [" + localName + "/" + modelService.name + "]
>>>>>>>>>>>>>> finished in [" + timeToRun + "] milliseconds", module);
>>>>>>>>>>>>>> -        } else if (Debug.infoOn() && timeToRun > 200) {
>>>>>>>>>>>>>> -            Debug.logInfo("Very slow sync service execution
>>>>>>>>>>>>>> detected: service [" + localName + "/" + modelService.name + "]
>>>>>>>>>>>>>> finished in [" + timeToRun + "] milliseconds", module); +
>>>>>>>>>>>>>> if (Debug.timingOn()) {
>>>>>>>>>>>>>> +            Debug.logTiming("Sync service [" + localName + "/"
>>>>>>>>>>>>>> + modelService.name + "] finished in [" + timeToRun + "]
>>>>>>>>>>>>>>               milliseconds", module); }
>>>>>>>>>>>>>>               if ((Debug.verboseOn() || modelService.debug) &&
>>>>>>>>>>>>>> timeToRun > 50 && !modelService.hideResultInLog) {
>>>>>>>>>>>>>>                   // Sanity check - some service results can be
>>>>>>>>>>>>>> multiple MB in size. Limit message size to 10K.
>>>>> -- 
>>>>> Using Opera's revolutionary email client: http://www.opera.com/mail/
>

Reply via email to