Thanks Karen.
Had a separate conversation with Evan. I guess it'd be nice if hg can do this 
automagically. Maybe there's a macro or something that can be defined for hg to 
do such things? Not sure... just that it'd be nice.
webrev is updated.

Martin

On 2/23/2011 1:34 PM, Karen Tung wrote:
Hi Martin,

Please update copyright in test_logger.py

Other changes look good to me.

Thanks,

--Karen

On 02/23/11 12:27 PM, Martin Widjaja wrote:
All,

Quick review on this is appreciated. Hopefully this is it (in hindsight I 
should've stayed away from logger bugs.. ;-)
- Removed source arg from transfer_log and the corresponding 
filehandler.transfer_log.
- Modified logger test for source>dest test

Webrev:http://cr.opensolaris.org/~widjaja/logger-fix/ 
<http://cr.opensolaris.org/%7Ewidjaja/logger-fix/>

Bugs:
7006785  <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=7006785>  
some of the logging unittests are broken
7012566  <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=7012566>  
InstallLogger.close() is broken

Martin

On 2/22/2011 9:02 PM, Martin Widjaja wrote:
Hi Karen,

Thanks for the comments. Please see below...

On 2/22/2011 2:15 PM, Karen Tung wrote:
Hi Martin,

Please see my comments below.

On 02/22/11 13:13, Martin Widjaja wrote:
Here's what I am proposing:

- FileHandler.transfer_log to have source as keyword (optional) arg to provide 
flexibility for people to use this
- FileHandler.transfer_log to throw an exception if it currently has an open 
reference to a file different from what's passed into the source

I do not think there's any value to pass source as a keyword argument, even if 
it is optional.

When a FileHandler is created, the file it needs to handle is provided as a 
required argument.
So, the FileHandler class should always have a reference to the "source" file.  
It's unnecessary to pass it in as an argument.
Yes, that's what makes sense for such thing as filehandler, and I even thought 
this was kind of strange, but based on some of the earlier comments that this 
was a needed functionality, I didn't want to make so much changes that would 
break others. Thus, to achieve the needed balance, though not ideal, I have 
decided to go with whatever was already in place and just fix the immediate 
issue/bug.


Further, I don't see how it would be useful to allow people to pass in a 
source, and then, raise an exception
if the source passed in differs from the file the FileHandler is working with. 
This means if people pass in
a source that's different than the file it specified when it created the 
FileHandler, we will get an exception.
So, there's really no flexibility provided.
Yeah, thinking about this more, you are right. If the goal was to provide 
flexibility, this exception is not going to work. I guess earlier I was 
reacting to Keith's comments on the problem when someone passes in a file 
that's not the original file referenced by the descriptor.



This is still combining the two functionalities somewhat into FileHandler but 
with explicit error handling mechanism to prevent people from doing whatever 
they can, but at the same time allowing ICT functionality which is already 
using FileHandler.transfer_log to continue to work until a later time we 
decided to move this somewhere.

We need to provide a transfer_log function in InstalllLogger to move the 
default log to the provided location
because the application have no control over where is the default log, what's 
the default log's name...etc..
So, InstallLogger.transfer_log() is provided to move the default log to a 
location specified by the application.

Unlike the default log, the application itself creates the other FileHandlers 
providing a name.
So, the applications know exactly where those log files are.  When the 
application is done
with logging, it can use normal Python functionality to move those log files.
I do not see any value in providing this functionality in the InstallLogger.
Yes, I guess this all makes sense now. Much earlier (on Friday) I didn't 
realize that FileHandlers were actually being used directly by different 
applications, and I thought that apps only call this through transfer_log 
method.
I guess I misunderstood the use case for this Filehandlers, though Alok did 
mention DC functionality would break, but it didn't quite click until today 
when someone made that comments.

Anyway, I'll remove that functionality and I'll coordinate with 
Ginnie/Darren/Matt to make sure they are not going to be affected for their 
future work (I am assuming they don't have this call yet because this is 
something that's not there).

Thanks,
Martin


Thanks,

--Karen


I am not familiar with the transfer module, so if anyone (Keith and Ginnie in 
particular?) thinks this can be better off somewhere and we can shut source 
argument from filehandler forever, then we should discuss further.

Ginnie - Is the usage of this transfer_log pretty widespread in the ICT area?

Thanks,
Martin

On 2/22/2011 11:28 AM, Keith Mitchell wrote:
If that is the functionality needed, then what really is needed is two separate 
functions:

1) To transfer an arbitrary, *closed* and completed log file from one location 
to another. A glorified shutil.copy, as it were.
2) A function on the FileHandler that closes its current log file, moves it, 
and re-opens it for appending, to allow for continued logging to that file.

Combining the two into a single function that tries to do both is only going to 
lead to odd bugs and inconsistent log files.

#2 is how FileHandler.transfer_log() is currently implemented. Its behavior 
can't be changed without breaking DC's use case
#1 sounds an awful lot like what the transfer module does...

There's certainly some commonality - a helper function that does the "make dirs as 
needed, then move the file" portion might be warranted.

- Keith

On 02/22/11 10:28 AM, Virginia Wray wrote:
Hi -

We do need a means of transferring a source file to a destination. The icts 
have that functionality currently, and I've had a conversation with Darren and 
Matt around the need for moving various files to a different destination as 
part of the AI work.

Rather than making the transfer_logs funtionality tied only to the 
DEFAULTFILEHANDLER, could we make it more robust so that it could handle any 
source/destination file transfer? I think something along those lines was part 
of the original transfer_logs code.

thanks,
ginnie


On 02/22/11 10:56 AM, Keith Mitchell wrote:
[Re-send, first attempt failed...]

On 02/22/11 09:52 AM, Keith Mitchell wrote:
Hi Martin,

I'm still not sure adding the source parameter is the correct route. First, 
source should be a keyword (optional) argument here, if anything. But more 
importantly, consider the side effects of passing in source:

A FileHandler, fh, has an open reference to file X
Someone calls fh.transfer_log(source=Y, destination=Z)
The transfer_log code will now:
- close the reference to X, meaning that the filehandler is now no longer able 
to log to the place it's supposed to be logging to
- Copy Y to Z
- Continue logging by appending to Z.

This will lead to half of that FileHandler's log data in X, and half appended 
to Z. There's a major disconnect there that will be *very* confusing.

- Keith

On 02/21/11 05:27 PM, Martin Widjaja wrote:
Hi all,

Can I get a review of the logger bugs that are reported in the following 2 
issues:
7006785  <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=7006785>  
some of the logging unittests are broken
7012566  <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=7012566>  
InstallLogger.close() is broken
The webrev is available at:
http://cr.opensolaris.org/~widjaja/logger-fix/ 
<http://cr.opensolaris.org/%7Ewidjaja/logger-fix/>

This is a continuation of the fix I did for 7012566. As I was unit testing my 
fixes, I ran into more issues causing several unit test errors, so decided to 
do all the fix in one txn.

Note that I attempted to keep all the old test functionalities such as 
transfer_log test with source specified, although some of you mentioned to me 
this is not really needed any longer. I thought that providing more flexibility 
to transfer_log (to specify source) is a better fix than removing the test case 
for it. Plus, not knowing the background story it seems to make more sense for 
me to keep all these tests around for now, at least.

Thanks,
Martin


_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss



_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss


_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss


_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss


_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss


_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss


_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

Reply via email to