mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benjamin Mahler <bmah...@apache.org>
Subject Re: Review Request 53365: Fixed an issue in the gzip error handling.
Date Tue, 08 Nov 2016 04:19:57 GMT


> On Nov. 6, 2016, 5:47 p.m., Anand Mazumdar wrote:
> > hmm, I couldn't find any documentation around when `msg` may be not be set for error
cases except for `deflateEnd()` and `inflateEnd()`. Can you share some? 
> > AFAICT, we only need to add a fallback for these 2 calls and not all of the ones
as has been done in this review. Also, I don't think we need to even check the return type
of `deflateEnd()`/`inflateEnd()` since we are sure that the state of the stream is consistent
i.e., `Z_STREAM_END`?

Per our offline discussion, it appears that zlib does not set `msg` in many cases and other
libraries work around this, e.g.
https://github.com/python/cpython/blob/c30098c8c6014f3340a369a31df9c74bdbacc269/Modules/zlibmodule.c#L59-L86

I've updated this patch to introduce an `internal::GzipError` to simply the error handling
logic.
I've also updated to `ABORT` for any programming errors, that is (in|de)flateInit2 / (in|de)flateEnd
failures, since these have to be run inside the Decompressor and Compressor (in the future)
constructors and destructors.


- Benjamin


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/53365/#review155091
-----------------------------------------------------------


On Nov. 8, 2016, 4:17 a.m., Benjamin Mahler wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/53365/
> -----------------------------------------------------------
> 
> (Updated Nov. 8, 2016, 4:17 a.m.)
> 
> 
> Review request for mesos and Anand Mazumdar.
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> It turns out that zlib does not always set the `msg` field, the
> calling code is expected to handle the case where `msg` is NULL.
> I discovered this while I was playing with the library during
> the implementation of a streaming decompressor.
> 
> I've introduced an `internal::GzipError` to simplify the error
> handling, and I've updated the code to `ABORT` in the case of
> our own programming errors.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/gzip.hpp b78a8a31204ee585f8e4a88eaefe7346faa46b8d 
> 
> Diff: https://reviews.apache.org/r/53365/diff/
> 
> 
> Testing
> -------
> 
> make check
> 
> 
> Thanks,
> 
> Benjamin Mahler
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message