Re: [PATCH v2 00/10] improve reporting of unexpected objects

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 29, 2021 at 03:34:03PM +0200, Ævar Arnfjörð Bjarmason wrote:

> > But I think it still has the "oops, somebody made a wrong reference much
> > earlier" problem. The actual bug is in some other object entirely, whose
> > identity is long forgotten. I think we would be much better off to say
> > something like "somebody expected X to be a commit, but now somebody
> > else expects it to be a blob", which is all that we can reliably say.
> > And the next step really ought to be running "git fsck" to figure out
> > what is going on (and we should perhaps even say so via advise()).
> 
> Yes I'm totally side-stepping the issue, but I don't see a way around
> that that doesn't make the whole object lookup code either much slower,
> or more complex.
> 
> I.e. the whole thing is an emergent effect of us seeing a tag object,
> and noting in-memory that we saw a given OID of type X, but we don't
> even know if we can look it up at that point, or that it's not type Y.
> 
> I don't think it's guaranteed that we're neatly in one single object
> traversal at that point (e.g. if we're looking at N tags, and only later
> dereferencing their "object" pointers). So passing a "object A which I
> have now says B is a X, assert!" wouldn't work.
> 
> We could eagerly get the object from disk when parsing tags (slow?), or
> have a void* in the object struct or whatever to say "this is the OID
> that claimed you were XYZ" (ew!).
> 
> Or, which I think makes sense here, just don't worry about it and error
> with the limited info we have at hand. Yes we can't report who the
> ultimate culprit is without an fsck, but that's not different than a lot
> of other error() and die() messages in the object code now.

Yes, that "don't worry too much about it" was where my line of thinking
is going. But then I do not see all that much point in your final patch
at all. I.e., I think just changing the message to more clearly say what
we do know in lookup_commit(), etc, would be sufficient.

> So if we're going to emit an advise() that seems generally useful for
> many of those error()/die() messages, and not something we should tack
> onto this incremental improvement to one error.

Yeah, I think doing an advise() is probably overkill. My next step would
always be "run fsck", and I was thinking only that we might point the
user in that direction. But it's probably fine to just emit the error.

-Peff



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux