fdtrack: temporary hack for tracking file descriptor usage
Package fdtrack logs statistics about open file descriptors. This should help identify the source of #1549.
This commit is contained in:
		
							
								
								
									
										4
									
								
								Godeps/_workspace/src/github.com/huin/goupnp/httpu/httpu.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								Godeps/_workspace/src/github.com/huin/goupnp/httpu/httpu.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -9,6 +9,8 @@ import ( | ||||
| 	"net/http" | ||||
| 	"sync" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/ethereum/go-ethereum/fdtrack" | ||||
| ) | ||||
|  | ||||
| // HTTPUClient is a client for dealing with HTTPU (HTTP over UDP). Its typical | ||||
| @@ -25,6 +27,7 @@ func NewHTTPUClient() (*HTTPUClient, error) { | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	fdtrack.Open("upnp") | ||||
| 	return &HTTPUClient{conn: conn}, nil | ||||
| } | ||||
|  | ||||
| @@ -33,6 +36,7 @@ func NewHTTPUClient() (*HTTPUClient, error) { | ||||
| func (httpu *HTTPUClient) Close() error { | ||||
| 	httpu.connLock.Lock() | ||||
| 	defer httpu.connLock.Unlock() | ||||
| 	fdtrack.Close("upnp") | ||||
| 	return httpu.conn.Close() | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										14
									
								
								Godeps/_workspace/src/github.com/huin/goupnp/soap/soap.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								Godeps/_workspace/src/github.com/huin/goupnp/soap/soap.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -7,9 +7,12 @@ import ( | ||||
| 	"encoding/xml" | ||||
| 	"fmt" | ||||
| 	"io/ioutil" | ||||
| 	"net" | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"reflect" | ||||
|  | ||||
| 	"github.com/ethereum/go-ethereum/fdtrack" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| @@ -26,6 +29,17 @@ type SOAPClient struct { | ||||
| func NewSOAPClient(endpointURL url.URL) *SOAPClient { | ||||
| 	return &SOAPClient{ | ||||
| 		EndpointURL: endpointURL, | ||||
| 		HTTPClient: http.Client{ | ||||
| 			Transport: &http.Transport{ | ||||
| 				Dial: func(network, addr string) (net.Conn, error) { | ||||
| 					c, err := net.Dial(network, addr) | ||||
| 					if c != nil { | ||||
| 						c = fdtrack.WrapConn("upnp", c) | ||||
| 					} | ||||
| 					return c, err | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								Godeps/_workspace/src/github.com/jackpal/go-nat-pmp/natpmp.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								Godeps/_workspace/src/github.com/jackpal/go-nat-pmp/natpmp.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,6 +5,8 @@ import ( | ||||
| 	"log" | ||||
| 	"net" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/ethereum/go-ethereum/fdtrack" | ||||
| ) | ||||
|  | ||||
| // Implement the NAT-PMP protocol, typically supported by Apple routers and open source | ||||
| @@ -102,6 +104,8 @@ func (n *Client) rpc(msg []byte, resultSize int) (result []byte, err error) { | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	fdtrack.Open("natpmp") | ||||
| 	defer fdtrack.Close("natpmp") | ||||
| 	defer conn.Close() | ||||
|  | ||||
| 	result = make([]byte, resultSize) | ||||
|   | ||||
							
								
								
									
										5
									
								
								Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,6 +18,7 @@ import ( | ||||
| 	"sync" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/ethereum/go-ethereum/fdtrack" | ||||
| 	"github.com/syndtr/goleveldb/leveldb/util" | ||||
| ) | ||||
|  | ||||
| @@ -369,6 +370,8 @@ func (fw fileWrap) Close() error { | ||||
| 	err := fw.File.Close() | ||||
| 	if err != nil { | ||||
| 		f.fs.log(fmt.Sprintf("close %s.%d: %v", f.Type(), f.Num(), err)) | ||||
| 	} else { | ||||
| 		fdtrack.Close("leveldb") | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| @@ -400,6 +403,7 @@ func (f *file) Open() (Reader, error) { | ||||
| 		return nil, err | ||||
| 	} | ||||
| ok: | ||||
| 	fdtrack.Open("leveldb") | ||||
| 	f.open = true | ||||
| 	f.fs.open++ | ||||
| 	return fileWrap{of, f}, nil | ||||
| @@ -418,6 +422,7 @@ func (f *file) Create() (Writer, error) { | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	fdtrack.Open("leveldb") | ||||
| 	f.open = true | ||||
| 	f.fs.open++ | ||||
| 	return fileWrap{of, f}, nil | ||||
|   | ||||
		Reference in New Issue
	
	Block a user