Changeset 12bc79
- Timestamp:
- 01/17/09 18:29:00 (3 years ago)
- Branches:
- master-v0.7, master-v0.6, memcached_hash, upstream_count_limit
- Children:
- 2e1f23
- Parents:
- 38354f
- git-author:
- Tomash Brechko <tomash.brechko@…> (01/17/09 15:52:47)
- git-committer:
- Tomash Brechko <tomash.brechko@…> (01/17/09 18:29:00)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
memcached_hash/ngx_http_upstream_memcached_hash_module.c
r38354f r12bc79 94 94 95 95 return (left - memd->buckets); 96 }97 98 99 static100 unsigned int101 memcached_hash_find_peer(struct memcached_hash_find_ctx *find_ctx);102 103 104 static105 ngx_int_t106 memcached_hash_get_peer(ngx_peer_connection_t *pc, void *data)107 {108 struct memcached_hash_find_ctx *find_ctx = data;109 struct memcached_hash_peer *peer = find_ctx->peer;110 ngx_peer_addr_t *addr;111 112 if (! peer)113 {114 unsigned int index;115 116 index = memcached_hash_find_peer(find_ctx);117 118 peer = find_ctx->peer;119 pc->tries = find_ctx->server[index].naddrs;120 }121 122 if (peer->server->down)123 goto fail;124 125 if (peer->server->max_fails > 0 && peer->fails >= peer->server->max_fails)126 {127 time_t now = ngx_time();128 if (now - peer->accessed <= peer->server->fail_timeout)129 goto fail;130 else131 peer->fails = 0;132 }133 134 addr = &peer->server->addrs[peer->addr_index];135 136 pc->sockaddr = addr->sockaddr;137 pc->socklen = addr->socklen;138 pc->name = &addr->name;139 140 return NGX_OK;141 142 fail:143 /* This is the last try. */144 pc->tries = 1;145 146 return NGX_BUSY;147 96 } 148 97 … … 204 153 205 154 return index; 155 } 156 157 158 static 159 ngx_int_t 160 memcached_hash_get_peer(ngx_peer_connection_t *pc, void *data) 161 { 162 struct memcached_hash_find_ctx *find_ctx = data; 163 struct memcached_hash_peer *peer = find_ctx->peer; 164 ngx_peer_addr_t *addr; 165 166 if (! peer) 167 { 168 unsigned int index; 169 170 index = memcached_hash_find_peer(find_ctx); 171 172 peer = find_ctx->peer; 173 pc->tries = find_ctx->server[index].naddrs; 174 } 175 176 if (peer->server->down) 177 goto fail; 178 179 if (peer->server->max_fails > 0 && peer->fails >= peer->server->max_fails) 180 { 181 time_t now = ngx_time(); 182 if (now - peer->accessed <= peer->server->fail_timeout) 183 goto fail; 184 else 185 peer->fails = 0; 186 } 187 188 addr = &peer->server->addrs[peer->addr_index]; 189 190 pc->sockaddr = addr->sockaddr; 191 pc->socklen = addr->socklen; 192 pc->name = &addr->name; 193 194 return NGX_OK; 195 196 fail: 197 /* This is the last try. */ 198 pc->tries = 1; 199 200 return NGX_BUSY; 206 201 } 207 202
Note: See TracChangeset
for help on using the changeset viewer.
