Last active
August 29, 2015 14:01
-
-
Save cryptix/4eb3b1fe3bce142ae7bb to your computer and use it in GitHub Desktop.
"not found" when using gridfile as io.WriteSeeker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"io" | |
"os" | |
"labix.org/v2/mgo" | |
) | |
const ( | |
dbHost = "localhost" | |
dbName = "gridfstest" | |
) | |
// SeekUser just contains a io.WriteSeeker | |
type SeekUser struct { | |
output io.WriteSeeker | |
} | |
var pattern = []byte("abcdefghijkl") | |
// Init just writes some pattern into the file | |
func (s SeekUser) Init() error { | |
n, err := s.output.Write(pattern) | |
if err != nil { | |
return fmt.Errorf("error during s.output.Write(): %s", err) | |
} | |
if n != len(pattern) { | |
return fmt.Errorf("didn't write pattern properly.\nWrote %d, wanted %d\n", n, len(pattern)) | |
} | |
return nil | |
} | |
// DoStuff seeks back to the begining and writes over some bytes | |
func (s SeekUser) DoStuff() error { | |
_, err := s.output.Seek(3, os.SEEK_SET) | |
if err != nil { | |
return fmt.Errorf("error during s.output.Seek(): %s", err) | |
} | |
_, err = s.output.Write([]byte("123")) | |
if err != nil { | |
return fmt.Errorf("error during s.output.Write(): %s", err) | |
} | |
return nil | |
} | |
// NewSeekUser returns a new SeekUser, using the passed io.WriteSeeker | |
func NewSeekUser(out io.WriteSeeker) *SeekUser { | |
return &SeekUser{out} | |
} | |
func main() { | |
mgoSession, err := mgo.Dial(fmt.Sprintf("%s/%s", dbHost, dbName)) | |
checkErr(err) | |
mgoDb := mgoSession.DB(dbName) | |
mgoGrid := mgoDb.GridFS("fs") | |
target, err := mgoGrid.Create("TestFile") | |
checkErr(err) | |
target.SetChunkSize(1000) | |
su := NewSeekUser(target) | |
err = su.Init() | |
checkErr(err) | |
err = su.DoStuff() | |
checkErr(err) | |
} | |
func checkErr(err error) { | |
if err != nil { | |
panic(err) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[cryptix@planc ~/code/go:master*] go run GridFSSeekTest.go | |
panic: error during s.output.Seek(): not found | |
goroutine 1 [running]: | |
runtime.panic(0x567f60, 0xc21000ac10) | |
/mnt/fast/go/src/pkg/runtime/panic.c:266 +0xb6 | |
main.checkErr(0x7fc6f940fe80, 0xc21000ac10) | |
/home/cryptix/code/go/GridFSSeekTest.go:83 +0x4f | |
main.main() | |
/home/cryptix/code/go/GridFSSeekTest.go:77 +0x2e0 | |
goroutine 3 [sleep]: | |
time.Sleep(0x1dcd6500) | |
/mnt/fast/go/src/pkg/runtime/time.goc:31 +0x31 | |
labix.org/v2/mgo.(*mongoCluster).syncServersLoop(0xc210051000) | |
/home/cryptix/go/src/labix.org/v2/mgo/cluster.go:342 +0x244 | |
created by labix.org/v2/mgo.newCluster | |
/home/cryptix/go/src/labix.org/v2/mgo/cluster.go:72 +0x120 | |
goroutine 5 [syscall]: | |
runtime.goexit() | |
/mnt/fast/go/src/pkg/runtime/proc.c:1394 | |
goroutine 7 [IO wait]: | |
net.runtime_pollWait(0x7fc6f94111d0, 0x72, 0x0) | |
/mnt/fast/go/src/pkg/runtime/netpoll.goc:116 +0x6a | |
net.(*pollDesc).Wait(0xc2100500d0, 0x72, 0x7fc6f9410098, 0xb) | |
/mnt/fast/go/src/pkg/net/fd_poll_runtime.go:81 +0x34 | |
net.(*pollDesc).WaitRead(0xc2100500d0, 0xb, 0x7fc6f9410098) | |
/mnt/fast/go/src/pkg/net/fd_poll_runtime.go:86 +0x30 | |
net.(*netFD).Read(0xc210050070, 0xc21001d870, 0x24, 0x24, 0x0, ...) | |
/mnt/fast/go/src/pkg/net/fd_unix.go:204 +0x2a0 | |
net.(*conn).Read(0xc210000258, 0xc21001d870, 0x24, 0x24, 0x0, ...) | |
/mnt/fast/go/src/pkg/net/net.go:122 +0xc5 | |
labix.org/v2/mgo.fill(0x7fc6f9410208, 0xc210000258, 0xc21001d870, 0x24, 0x24, ...) | |
/home/cryptix/go/src/labix.org/v2/mgo/socket.go:489 +0x5b | |
labix.org/v2/mgo.(*mongoSocket).readLoop(0xc210044700) | |
/home/cryptix/go/src/labix.org/v2/mgo/socket.go:506 +0x115 | |
created by labix.org/v2/mgo.newSocket | |
/home/cryptix/go/src/labix.org/v2/mgo/socket.go:163 +0x2b3 | |
goroutine 8 [sleep]: | |
time.Sleep(0x12a05f200) | |
/mnt/fast/go/src/pkg/runtime/time.goc:31 +0x31 | |
labix.org/v2/mgo.(*mongoServer).pinger(0xc210044540, 0xc210044501) | |
/home/cryptix/go/src/labix.org/v2/mgo/server.go:284 +0x10f | |
created by labix.org/v2/mgo.newServer | |
/home/cryptix/go/src/labix.org/v2/mgo/server.go:87 +0xf6 | |
exit status 2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment