Last active
August 29, 2015 14:16
-
-
Save rtlong/19f3b570a024b4f686d7 to your computer and use it in GitHub Desktop.
ConnectionPool issue
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
#!/usr/bin/env ruby | |
require 'connection_pool' | |
require 'redis' | |
COUNT=1000 | |
$pool = ConnectionPool.new(size: 5, timeout: 10) { Redis.new } | |
def dont_leak_connection | |
$pool.with do |connection| | |
connection.client.call([:client, :list]).split("\n").length | |
end | |
end | |
def leak_connection | |
$pool.with do |connection| | |
# this return from within `with` is the issue | |
return connection.client.call([:client, :list]).split("\n").length | |
end | |
end | |
puts " Non-Leaky ".center(20, '=') | |
threads = [] | |
COUNT.times do | |
threads << Thread.new do | |
print '%i ' % dont_leak_connection | |
end | |
end | |
threads.each(&:join) | |
puts "\n\n" | |
puts " Leaky ".center(20, '=') | |
threads = [] | |
COUNT.times do | |
threads << Thread.new do | |
print '%i ' % leak_connection | |
end | |
end | |
threads.each(&:join) |
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
==== Non-Leaky ===== | |
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 4 4 4 5 5 5 5 4 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 | |
====== Leaky ======= | |
5 5 5 5 5 7 9 7 8 11 10 12 13 14 16 15 19 17 19 20 22 22 23 24 25 26 31 27 28 33 | |
34 29 31 36 37 40 32 42 35 43 45 38 39 46 49 50 41 45 47 49 54 55 57 58 51 52 | |
53 57 59 61 61 66 62 63 64 66 68 68 70 70 71 73 73 74 75 80 81 76 83 84 85 78 | |
78 88 89 90 91 79 82 86 87 92 93 97 94 95 96 102 98 99 105 100 101 103 104 110 | |
106 107 108 114 115 116 117 109 111 120 121 112 123 124 113 125 126 127 118 | |
119 122 128 129 131 131 136 132 134 134 136 138 138 140 140 141 142 143 144 | |
145 146 147 148 153 154 150 150 151 158 152 155 156 157 163 159 165 160 167 | |
161 162 164 166 172 173 168 175 176 169 170 171 174 177 178 179 183 180 186 | |
181 187 188 189 191 192 193 194 183 196 197 184 185 199 201 202 203 190 205 | |
195 198 200 204 210 206 207 208 209 215 216 211 212 218 219 213 222 223 214 | |
217 220 221 224 225 226 227 228 233 234 235 230 230 237 238 231 232 236 239 | |
240 241 242 243 244 245 246 247 248 249 250 251 252 253 257 258 254 261 261 | |
255 262 263 264 256 259 265 267 267 268 269 274 275 270 271 272 279 273 276 | |
277 283 278 285 280 287 281 288 290 282 292 284 286 295 289 291 293 294 300 | |
301 296 302 304 297 298 305 306 299 310 303 307 308 309 315 316 311 318 319 | |
320 312 321 322 324 313 325 326 314 327 328 330 331 318 333 334 335 336 337 | |
338 323 339 342 329 332 340 342 343 348 349 344 350 345 351 352 353 354 347 | |
347 356 355 356 357 356 350 13 11 11 11 13 17 17 20 14 22 17 18 19 25 27 21 29 | |
30 23 24 26 28 35 31 32 33 34 36 37 38 43 43 39 45 45 46 48 40 51 52 53 41 48 | |
49 50 57 54 55 61 56 59 59 65 60 62 63 65 66 67 71 68 69 70 76 77 78 72 73 74 | |
81 82 75 85 86 79 80 89 90 83 84 92 94 87 96 88 91 93 95 101 97 103 98 104 106 | |
99 100 102 110 111 105 107 114 108 116 109 117 118 112 113 115 123 124 119 126 | |
120 122 128 129 122 132 125 127 131 131 133 134 139 135 137 137 143 138 145 | |
140 141 148 149 142 151 152 144 153 154 155 146 147 150 160 156 157 158 159 | |
165 161 162 163 164 169 170 171 166 167 168 172 173 174 179 175 180 176 181 | |
177 178 186 182 184 184 187 189 189 191 193 193 185 196 190 194 195 197 201 | |
198 203 204 199 207 208 209 200 202 211 212 205 206 216 217 218 210 213 214 | |
215 222 219 220 226 226 227 221 229 223 230 224 231 232 233 235 236 237 228 | |
241 235 243 238 239 240 247 242 248 249 250 244 245 246 255 251 252 257 253 | |
255 261 256 262 258 259 265 266 267 260 270 263 264 271 272 274 276 268 270 | |
274 275 277 278 279 283 280 284 281 285 286 289 289 283 292 287 295 290 296 | |
292 293 298 299 300 294 301 302 303 307 297 309 310 304 305 306 311 312 308 | |
315 316 318 313 315 317 319 320 321 322 323 324 325 329 326 327 331 332 335 | |
328 330 333 334 339 336 337 338 342 343 345 340 346 341 350 344 348 348 349 | |
351 352 357 353 354 355 360 360 357 362 358 361 365 366 367 369 363 364 372 | |
373 368 374 370 376 372 378 380 375 382 383 378 379 381 385 388 384 390 386 | |
387 389 394 391 392 393 395 396 397 399 399 400 401 404 406 407 402 404 405 | |
409 408 410 411 412 413 415 414 419 416 420 418 418 421 422 425 425 425 426 | |
427 428 430 430 432 433 432 436 436 437 434 440 439 438 441 442 445 444 448 | |
444 449 446 450 451 447 452 455 453 457 455 458 456 460 459 462 462 463 464 | |
465 469 467 467 468 471 470 473 474 472 476 476 477 478 479 480 483 481 482 | |
486 484 486 487 491 488 491 491 492 495 493 494 497 496 498 500 500 501 503 | |
503 506 505 505 507 508 509 512 510 511 513 514 515 517 517 518 519 520 522 | |
522 523 525 525 526 527 528 529 530 531 532 534 534 536 536 537 538 539 541 | |
541 542 543 544 545 547 548 547 549 550 551 555 555 555 555 558 558 558 559 | |
560 563 563 563 565 565 566 570 570 570 570 571 574 574 574 575 576 578 578 | |
579 580 581 582 583 584 586 586 587 589 589 590 591 592 593 594 595 597 597 | |
598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 | |
617 618 619 620 621 622 623 625 625 626 616 10 10 10 10 11 15 15 15 15 16 17 | |
19 19 20 21 22 24 24 25 26 27 |
Sorry, this is with ConnectionPool since 2.1.1
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The change from this PR introduced this issue: mperham/connection_pool#67