diff options
| author | chris.lu@gmail.com <chris.lu@gmail.com@282b0af5-e82d-9cf1-ede4-77906d7719d0> | 2011-12-19 09:18:13 +0000 |
|---|---|---|
| committer | chris.lu@gmail.com <chris.lu@gmail.com@282b0af5-e82d-9cf1-ede4-77906d7719d0> | 2011-12-19 09:18:13 +0000 |
| commit | d0188098304dad0e8a65818f007ef3e2cfb7abcf (patch) | |
| tree | 50c87393762c5235b5c5f7ce4fbf330c5e0de052 /weed-fs/src/cmd | |
| parent | b39d1a77b41a4a7ae4ef90e014a4920b0412ee9f (diff) | |
| download | seaweedfs-d0188098304dad0e8a65818f007ef3e2cfb7abcf.tar.xz seaweedfs-d0188098304dad0e8a65818f007ef3e2cfb7abcf.zip | |
efficiently assign file id
git-svn-id: https://weed-fs.googlecode.com/svn/trunk@17 282b0af5-e82d-9cf1-ede4-77906d7719d0
Diffstat (limited to 'weed-fs/src/cmd')
| -rw-r--r-- | weed-fs/src/cmd/weeds.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/weed-fs/src/cmd/weeds.go b/weed-fs/src/cmd/weeds.go index 4b3792687..5e7e9477a 100644 --- a/weed-fs/src/cmd/weeds.go +++ b/weed-fs/src/cmd/weeds.go @@ -8,6 +8,7 @@ import ( "http" "json" "log" + "rand" "strconv" "strings" ) @@ -17,6 +18,7 @@ var ( metaFolder = flag.String("mdir", "/tmp", "data directory to store mappings") capacity = flag.Int("capacity", 100, "maximum number of volumes to hold") mapper *directory.Mapper + ) func dirReadHandler(w http.ResponseWriter, r *http.Request) { @@ -25,12 +27,14 @@ func dirReadHandler(w http.ResponseWriter, r *http.Request) { writeJson(w, r, machine.Server) } func dirWriteHandler(w http.ResponseWriter, r *http.Request) { - machine := mapper.PickForWrite() + _, machine := mapper.PickForWrite() writeJson(w, r, machine) } func dirPickHandler(w http.ResponseWriter, r *http.Request) { - machine := mapper.PickForWrite() - writeJson(w, r, machine) + vid, machine := mapper.PickForWrite() + hashcode := rand.Uint32() + fid := strconv.Uitoa64(vid) + "," + strconv.Uitoa64(mapper.NextFileId())+","+strconv.Uitoa64(uint64(hashcode)) + writeJson(w, r, map[string]string{"fid":fid,"url":machine.Url}) } func dirJoinHandler(w http.ResponseWriter, r *http.Request) { s := r.RemoteAddr[0:strings.Index(r.RemoteAddr, ":")+1] + r.FormValue("port") |
