Comments (2)
I think we figure out the reason now:
How to reproduce the issue:
- tcpkill the according connection
- use tc to make network packages corrupt
sudo tc qdisc add dev ens192 root netem corrupt 30%
So the snappy can always report the error snappy: corrupt input
in our environment.
Misleading error message corrupt input
We get this error from here. But the real reason is that snappy read from a closed connection and get an empty data next time. So cannot decode incomplete data correctly. We think it's better to report an ununexpected EOF
error here.
Here is the code we modified during testing:
diff --git a/decode.go b/decode.go
index 23c6e26..208f054 100644
--- a/decode.go
+++ b/decode.go
@@ -13,6 +13,7 @@ import (
var (
// ErrCorrupt reports that the input is invalid.
ErrCorrupt = errors.New("snappy: corrupt input")
+ ErrEof = errors.New("snappy: unexpected EOF")
// ErrTooLarge reports that the uncompressed length is too large.
ErrTooLarge = errors.New("snappy: decoded block is too large")
// ErrUnsupported reports that the input isn't supported.
@@ -111,7 +112,7 @@ func (r *Reader) Reset(reader io.Reader) {
func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) {
if _, r.err = io.ReadFull(r.r, p); r.err != nil {
if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) {
- r.err = ErrCorrupt
+ r.err = ErrEof
}
return false
}
(END)
from snappy.
I got this error because the net.Conn being read multiple times concurrently
from snappy.
Related Issues (20)
- Question: Encode <> Decode size HOT 3
- I can't attach the snappy.Reader to a string.. HOT 1
- Is snappy slower than gzip in decompression HOT 3
- SemVer Releases HOT 4
- missing function HOT 1
- Why does snappy encodes the file ( increases the size ) instead of compressing it ? HOT 1
- Customize encode/decode buffer size
- not support hadoop-snappy format
- How come snappytool does not support stream format? HOT 1
- How to decompress a 2GB file on a machine with only 1GB of RAM
- Test failure on 32 bits arches HOT 1
- How should I validate encoded data? HOT 1
- Not working on apple m1 HOT 10
- Weird failure when building on Raspbian / Debian 10.11 HOT 14
- [@] and[.] error
- Incorrect comment on NewBufferedWriter?
- Possible to extend output buffer to capacity when encoding/decoding? HOT 1
- Unable to decompress Snappy JSON file using golang/snappy HOT 1
- High Memory Usage: Snappy Encoding
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from snappy.