seaweedfs/weed/topology
Chris Lu 7edbee6f57 volume: proxy writes to remote volume server, with replication or not
the panic is triggered by uploading a file to a volume server not holding the designated replica.
2020-03-15 10:20:14.365488 I | http: panic serving 127.0.0.1:57124: runtime error: invalid memory address or nil pointer dereference
goroutine 119 [running]:
net/http.(*conn).serve.func1(0xc0001a8000)
	/home/travis/.gimme/versions/go1.14.linux.amd64/src/net/http/server.go:1772 +0x139
panic(0x2316fe0, 0x3662900)
	/home/travis/.gimme/versions/go1.14.linux.amd64/src/runtime/panic.go:973 +0x396
github.com/chrislusf/seaweedfs/weed/topology.getWritableRemoteReplications(0xc00009c000, 0x2, 0x7ffeefbffbd2, 0xe, 0x0, 0xa, 0x0, 0x0, 0xbb4bf1f7)
	/home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/topology/store_replicate.go:157 +0x53
github.com/chrislusf/seaweedfs/weed/topology.ReplicatedWrite(0x7ffeefbffbd2, 0xe, 0xc00009c000, 0xc000000002, 0xc000472750, 0xc0001b2200, 0x0, 0x1, 0x0)
	/home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/topology/store_replicate.go:29 +0xc7
github.com/chrislusf/seaweedfs/weed/server.(*VolumeServer).PostHandler(0xc0001513f0, 0x292bde0, 0xc0001fe2a0, 0xc0001b2200)
	/home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/server/volume_server_handlers_write.go:52 +0x56f
github.com/chrislusf/seaweedfs/weed/server.(*VolumeServer).privateStoreHandler(0xc0001513f0, 0x292bde0, 0xc0001fe2a0, 0xc0001b2200)
	/home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/server/volume_server_handlers.go:37 +0x21f
net/http.HandlerFunc.ServeHTTP(0xc0004420e0, 0x292bde0, 0xc0001fe2a0, 0xc0001b2200)
	/home/travis/.gimme/versions/go1.14.linux.amd64/src/net/http/server.go:2012 +0x44
net/http.(*ServeMux).ServeHTTP(0xc0001fc800, 0x292bde0, 0xc0001fe2a0, 0xc0001b2200)
	/home/travis/.gimme/versions/go1.14.linux.amd64/src/net/http/server.go:2387 +0x1a5
net/http.serverHandler.ServeHTTP(0xc0001781c0, 0x292bde0, 0xc0001fe2a0, 0xc0001b2200)
	/home/travis/.gimme/versions/go1.14.linux.amd64/src/net/http/server.go:2807 +0xa3
net/http.(*conn).serve(0xc0001a8000, 0x2934420, 0xc000212400)
	/home/travis/.gimme/versions/go1.14.linux.amd64/src/net/http/server.go:1895 +0x86c
created by net/http.(*Server).Serve
	/home/travis/.gimme/versions/go1.14.linux.amd64/src/net/http/server.go:2933 +0x35c
Eg:
server A (datacenter 1) and server B (datacenter 2) hold replica (100) for volume 1.
If you upload a file with a key 1,xxxxx to server C (datacenter 3) will trigger the panic on server C.
The server C should either proxy upload file to the correct volume server or should return an HTTP error code and not panic.
2020-03-15 02:50:42 -07:00
..
allocate_volume.go avoid reusing context object 2020-02-25 21:50:12 -08:00
cluster_commands.go Change joeslay paths to chrislusf paths 2019-09-12 14:18:21 +01:00
collection.go shell: add ec.decode command 2019-12-23 12:48:20 -08:00
configuration.go also remove volumeLayout if collection is empty 2018-07-11 02:01:33 -07:00
data_center.go grow volumes on volume servers with slots freed by cloud storage 2019-12-03 21:36:42 -08:00
data_node.go grow volumes on volume servers with slots freed by cloud storage 2019-12-03 21:36:42 -08:00
data_node_ec.go Change joeslay paths to chrislusf paths 2019-09-12 14:18:21 +01:00
node.go go fmt 2020-03-07 06:12:57 -08:00
rack.go grow volumes on volume servers with slots freed by cloud storage 2019-12-03 21:36:42 -08:00
store_replicate.go volume: proxy writes to remote volume server, with replication or not 2020-03-15 02:50:42 -07:00
topology.go treat it as a single node cluster if empty raft server name 2020-01-10 00:37:44 -08:00
topology_ec.go Change joeslay paths to chrislusf paths 2019-09-12 14:18:21 +01:00
topology_event_handling.go grow volumes on volume servers with slots freed by cloud storage 2019-12-03 21:36:42 -08:00
topology_map.go grow volumes on volume servers with slots freed by cloud storage 2019-12-03 21:36:42 -08:00
topology_test.go shell: add ec.decode command 2019-12-23 12:48:20 -08:00
topology_vacuum.go volume: vacuum pass preallocate variable 2020-03-13 16:17:44 -07:00
volume_growth.go schedule new volume by free volume number of nodes 2020-03-07 21:41:42 +08:00
volume_growth_test.go go fmt 2020-03-07 06:12:57 -08:00
volume_layout.go fix compilation error 2020-03-13 15:51:38 -07:00
volume_location_list.go Change joeslay paths to chrislusf paths 2019-09-12 14:18:21 +01:00