Redis driver fails to claim messages (for a subset of requests) under high concurrency

Bug #1372510 reported by Kurt Griffiths
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
zaqar
Fix Released
Critical
Kurt Griffiths

Bug Description

With 1000 message producers + 1000 consumer workers trying to claim simultaneously across two redis instances in my bare metal test rig, some claims start to fail because they reach the maximum retry duration. Adding a backoff sleep ala the Mongo driver helps a lot (I did a quick hack to try it), but I'd like to explore using Lua as well to fix this.

Tags: redis
tags: added: redis
Changed in zaqar:
importance: Undecided → Critical
milestone: none → juno-rc1
Changed in zaqar:
status: New → Confirmed
Kurt Griffiths (kgriffs)
Changed in zaqar:
assignee: nobody → Kurt Griffiths (kgriffs)
Revision history for this message
Flavio Percoco (flaper87) wrote :

Lets make sure we check the redis version on startup as we check mongodb's version. We should prevent the service from starting if the minimum required version is not met

Revision history for this message
Kurt Griffiths (kgriffs) wrote :

Good idea, makes sense.

Kurt Griffiths (kgriffs)
Changed in zaqar:
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to zaqar (master)

Fix proposed to branch: master
Review: https://review.openstack.org/123230

Kurt Griffiths (kgriffs)
description: updated
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to zaqar (master)

Reviewed: https://review.openstack.org/123230
Committed: https://git.openstack.org/cgit/openstack/zaqar/commit/?id=72598b23891ce4c9e9c5583e8177d99be0f56eb4
Submitter: Jenkins
Branch: master

commit 72598b23891ce4c9e9c5583e8177d99be0f56eb4
Author: kgriffs <email address hidden>
Date: Mon Sep 22 14:27:38 2014 -0500

    Move Redis driver's claim transaction to Lua

    This avoids having to set a watch and retry if someone else beats us to
    the punch; the retry is less efficient than doing it with Lua, and would
    require adding a backoff sleep to avoid lots of failed requests under
    high concurrency.

    This patch also adds a Redis server version check in the driver since
    Lua requires redis-server >= 2.6

    Change-Id: I0c34e267a6358965a54179a4b2fd03ac15b194e9
    Closes-Bug: #1372510

Changed in zaqar:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in zaqar:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in zaqar:
milestone: juno-rc1 → 2014.2
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.