Re: [ccache] What to do when there are problems writing to the cache directory?

2012-05-13 Thread Joel Rosdahl
On 7 February 2012 19:55, Frank Klotz  wrote:
> [...] inability to write to the stats file should be a fatal error (it will
> get attention FAST, and so fixed quickly), but [...] when the stats file is
> writable, then placing an indication of the problem there is "not silent", so
> it would be acceptable to document the failure in the stats and continue with
> a regular compilation that is "otherwise silent".

One problem with putting such an error log in the stats files: who will trim
the error log from the stats files? The files are rewritten for each cache
hit/miss, which means that it's not good if they grow. Another minor but valid
problem with the approach is that it's not backward compatible - old ccache
versions (which may use the same ccache directory as a new version) throw away
anything they don't understand from the stats files. I guess it would be
possible to write the log to some other file in the ccache directory, though,
unless that's not possible either...

> If other people check "ccache -s" as often as I do [...]

I doubt many people check "ccache -s" often, I'm afraid.

-- Joel
___
ccache mailing list
ccache@lists.samba.org
https://lists.samba.org/mailman/listinfo/ccache


Re: [ccache] What to do when there are problems writing to the cache directory?

2012-02-07 Thread Frank Klotz
 After letting this percolate in my mind for a few weeks, I am now 
feeling a little more strongly that inability to write to the stats file 
should be a fatal error (it will get attention FAST, and so fixed 
quickly), but that when the stats file is writable, then placing an 
indication of the problem there is "not silent", so it would be 
acceptable to document the failure in the stats and continue with a 
regular compilation that is "otherwise silent".  If other people check 
"ccache -s" as often as I do, and the error indicator in that output is 
at all eye-catching, they will know soon enough that there is a problem 
to be addressed, and someone with adequate privileges will address it 
"soon", while others (including perhaps people without the privileges to 
fix the problem) are able to continue compiling and get successful 
builds rather than failures.


If I were looking at "ccache -s" output and saw a line like:
Unable to write to $CCACHE_DIR/a/b/ - permission denied:303
I would certainly know that I needed to fix the permissions on that 
directory.


And with that scheme, I think we could avoid adding any new CCACHE 
environment variables to control different failure handling options.


Thanks,
Frank

On 01/10/2012 02:45 PM, Frank Klotz wrote:

   I agree that "tools should not fail silently", but the problem here is
the definition of "fail".  And that definition is going to depend on
context.

Ccache is not a compiler, but a compiler wrapper whose purpose is to
keep the functionality of the compiler it wraps, but merely speed it
up.  Under some conditions (e.g., a nightly build where performance is
nice, but successful compilation if possible is crucial), getting a
compilation failure because the wrapper couldn't do what it wants would
be undesirable. For this case, silently falling back to a non-ccache
compilation would AVOID a failure, by successfully doing the compile
despite wrapper issues.

Under other circumstances (e.g., a small interactive build), you would
WANT to know right away if there is some issue with the wrapper, so you
can fix it immediately and all subsequent builds do get the performance
improvement offered by the wrapper.  So here silently falling back to a
non-ccache compilation would BE a failure.

I hate to say it, but I kinda think you need to add another environment
variable - CCACHE_FALLBACK - with at least two possible values: hard
fail and fallback (there may be other possibilities as well - say "email
f...@bar.com", which would say "mail details of the problem to foo, but
go ahead and compile the dang file already!"  Not actually recommending
that, but )

Then users can decide for themselves (on a per-task basis if necessary)
whether they care more about getting a successful compile whatever that
takes, or about having all compiles be as fast as possible, even if the
tool has to fail to compile something it COULD have compiled, in order
to get attention on a problem with the tool as fast as possible.

Which simply moves your question back a step to "what should be the
DEFAULT behaviour for this?
My suggestion on that would be:
  If you can write to the ccache stats file(s) (cases 3 and 4), add
an error indication there, and silently fall back to non-ccache
compile.  If you cannot even write to the stats file (cases 1 and 2),
fail.  Maybe add a further refinement depending on whether the compile
is done in an interactive shell or not - people might want their nightly
cronjobs to succeed even if slower than ideal, but interactive builds to
fail so they can solve the issue.

But I don't have a really strong feeling on any of these.

Thanks,
Frank

On 01/09/2012 01:34 PM, Joel Rosdahl wrote:

Hi,

I would like to get some feedback on what ccache users think ccache's
behavior should be when it fails to create files or directories in the
cache directory.

Here are some different cases to consider:

1. CCACHE_DIR is set to a directory that doesn't exist and can't be created.
2. CCACHE_DIR is set to a directory that exists but is unwritable.
3. CCACHE_DIR is set to a directory that exists, but one of the
subdirectories storing the cache data (e.g. $CCACHE_DIR/a/b) is
unwritable or not possible to create.
4. CCACHE_DIR is set to a directory that exists, but CCACHE_TEMPDIR
(defaults to $CCACHE_DIR/tmp for ccache 3 and $CCACHE_DIR for ccache
2) is unwritable or not possible to create.

Here's what happens with ccache 2.4:

1. Fatal error, non-zero exit code.
2. Silent failure, falling back to running the compiler.
3. Silent failure, falling back to running the compiler.
4. Silent failure, falling back to running the compiler.

ccache 3.0-3.1.6 (I think, haven't checked all versions):

1. Fatal error, non-zero exit code.
2. Fatal error, non-zero exit code.
3. Silent failure, falling back to running the compiler.
4. Silent failure, falling back to running the compiler.

ccache 3.1.7:

1. Fatal error, non-zero exit code.
2. Fatal error, non-zero exit code.
3. Fatal

Re: [ccache] What to do when there are problems writing to the cache directory?

2012-01-10 Thread Frank Klotz
 I agree that "tools should not fail silently", but the problem here is 
the definition of "fail".  And that definition is going to depend on 
context.


Ccache is not a compiler, but a compiler wrapper whose purpose is to 
keep the functionality of the compiler it wraps, but merely speed it 
up.  Under some conditions (e.g., a nightly build where performance is 
nice, but successful compilation if possible is crucial), getting a 
compilation failure because the wrapper couldn't do what it wants would 
be undesirable. For this case, silently falling back to a non-ccache 
compilation would AVOID a failure, by successfully doing the compile 
despite wrapper issues.


Under other circumstances (e.g., a small interactive build), you would 
WANT to know right away if there is some issue with the wrapper, so you 
can fix it immediately and all subsequent builds do get the performance 
improvement offered by the wrapper.  So here silently falling back to a 
non-ccache compilation would BE a failure.


I hate to say it, but I kinda think you need to add another environment 
variable - CCACHE_FALLBACK - with at least two possible values: hard 
fail and fallback (there may be other possibilities as well - say "email 
f...@bar.com", which would say "mail details of the problem to foo, but 
go ahead and compile the dang file already!"  Not actually recommending 
that, but )


Then users can decide for themselves (on a per-task basis if necessary) 
whether they care more about getting a successful compile whatever that 
takes, or about having all compiles be as fast as possible, even if the 
tool has to fail to compile something it COULD have compiled, in order 
to get attention on a problem with the tool as fast as possible.


Which simply moves your question back a step to "what should be the 
DEFAULT behaviour for this?

My suggestion on that would be:
If you can write to the ccache stats file(s) (cases 3 and 4), add 
an error indication there, and silently fall back to non-ccache 
compile.  If you cannot even write to the stats file (cases 1 and 2), 
fail.  Maybe add a further refinement depending on whether the compile 
is done in an interactive shell or not - people might want their nightly 
cronjobs to succeed even if slower than ideal, but interactive builds to 
fail so they can solve the issue.


But I don't have a really strong feeling on any of these.

Thanks,
Frank

On 01/09/2012 01:34 PM, Joel Rosdahl wrote:

Hi,

I would like to get some feedback on what ccache users think ccache's
behavior should be when it fails to create files or directories in the
cache directory.

Here are some different cases to consider:

1. CCACHE_DIR is set to a directory that doesn't exist and can't be created.
2. CCACHE_DIR is set to a directory that exists but is unwritable.
3. CCACHE_DIR is set to a directory that exists, but one of the
subdirectories storing the cache data (e.g. $CCACHE_DIR/a/b) is
unwritable or not possible to create.
4. CCACHE_DIR is set to a directory that exists, but CCACHE_TEMPDIR
(defaults to $CCACHE_DIR/tmp for ccache 3 and $CCACHE_DIR for ccache
2) is unwritable or not possible to create.

Here's what happens with ccache 2.4:

1. Fatal error, non-zero exit code.
2. Silent failure, falling back to running the compiler.
3. Silent failure, falling back to running the compiler.
4. Silent failure, falling back to running the compiler.

ccache 3.0-3.1.6 (I think, haven't checked all versions):

1. Fatal error, non-zero exit code.
2. Fatal error, non-zero exit code.
3. Silent failure, falling back to running the compiler.
4. Silent failure, falling back to running the compiler.

ccache 3.1.7:

1. Fatal error, non-zero exit code.
2. Fatal error, non-zero exit code.
3. Fatal error, non-zero exit code.
4. Silent failure, falling back to running the compiler.

ccache has previously been more forgiving, so one might argue that
ccache 3.x more strict behavior is a regression from version 2.4 that
should be fixed. Also, one might argue that ccache should never fail
fatally so that case 1 should silently fall back to running the
compiler as well.

On the other hand, my general opinion is that tools should not fail
silently. As a ccache user, I would like to be informed if something
is badly configured, for instance if the cache directory is unwritable
by me, so that I get alerted that something is wrong.

What do you think?

-- Joel
___
ccache mailing list
ccache@lists.samba.org
https://lists.samba.org/mailman/listinfo/ccache


___
ccache mailing list
ccache@lists.samba.org
https://lists.samba.org/mailman/listinfo/ccache


Re: [ccache] What to do when there are problems writing to the cache directory?

2012-01-10 Thread Joel Rosdahl
On 10 January 2012 05:32, Martin Pool  wrote:
> I would be inclined to at least give a suppressible warning rather
> than just silently falling back.

As far as I know, there's no good way of notifying the user other than
stopping with a non-zero error code. Just printing a warning message
to stderr is not acceptable since there are things like autoconf tests
that consider a compiler writing to stderr as non-functional.

-- Joel
___
ccache mailing list
ccache@lists.samba.org
https://lists.samba.org/mailman/listinfo/ccache


Re: [ccache] What to do when there are problems writing to the cache directory?

2012-01-09 Thread Martin Pool
On 9 January 2012 22:34, Joel Rosdahl  wrote:
> On the other hand, my general opinion is that tools should not fail
> silently. As a ccache user, I would like to be informed if something
> is badly configured, for instance if the cache directory is unwritable
> by me, so that I get alerted that something is wrong.
>
> What do you think?

I agree with the general approach.

I suspect a common case where people hit this is something like 'make
&& sudo make install' which can end up with some files being owned by
a different user.  In a sense they ought to fix this but perhaps many
people would prefer to just have some stuff uncached.

I would be inclined to at least give a suppressible warning rather
than just silently falling back.

-- 
Martin
___
ccache mailing list
ccache@lists.samba.org
https://lists.samba.org/mailman/listinfo/ccache


[ccache] What to do when there are problems writing to the cache directory?

2012-01-09 Thread Joel Rosdahl
Hi,

I would like to get some feedback on what ccache users think ccache's
behavior should be when it fails to create files or directories in the
cache directory.

Here are some different cases to consider:

1. CCACHE_DIR is set to a directory that doesn't exist and can't be created.
2. CCACHE_DIR is set to a directory that exists but is unwritable.
3. CCACHE_DIR is set to a directory that exists, but one of the
subdirectories storing the cache data (e.g. $CCACHE_DIR/a/b) is
unwritable or not possible to create.
4. CCACHE_DIR is set to a directory that exists, but CCACHE_TEMPDIR
(defaults to $CCACHE_DIR/tmp for ccache 3 and $CCACHE_DIR for ccache
2) is unwritable or not possible to create.

Here's what happens with ccache 2.4:

1. Fatal error, non-zero exit code.
2. Silent failure, falling back to running the compiler.
3. Silent failure, falling back to running the compiler.
4. Silent failure, falling back to running the compiler.

ccache 3.0-3.1.6 (I think, haven't checked all versions):

1. Fatal error, non-zero exit code.
2. Fatal error, non-zero exit code.
3. Silent failure, falling back to running the compiler.
4. Silent failure, falling back to running the compiler.

ccache 3.1.7:

1. Fatal error, non-zero exit code.
2. Fatal error, non-zero exit code.
3. Fatal error, non-zero exit code.
4. Silent failure, falling back to running the compiler.

ccache has previously been more forgiving, so one might argue that
ccache 3.x more strict behavior is a regression from version 2.4 that
should be fixed. Also, one might argue that ccache should never fail
fatally so that case 1 should silently fall back to running the
compiler as well.

On the other hand, my general opinion is that tools should not fail
silently. As a ccache user, I would like to be informed if something
is badly configured, for instance if the cache directory is unwritable
by me, so that I get alerted that something is wrong.

What do you think?

-- Joel
___
ccache mailing list
ccache@lists.samba.org
https://lists.samba.org/mailman/listinfo/ccache