Skip to content

Commit

Permalink
Hashing storagehosts to specific queues - first step toward serializing
Browse files Browse the repository at this point in the history
  • Loading branch information
sachinkagarwal committed Jun 8, 2014
1 parent 31af709 commit bc4edff
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 10 deletions.
17 changes: 9 additions & 8 deletions deployments/vagrant/saturnring_postbootup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,33 +29,34 @@ sudo -u vagrant -H bash -c "cd /vagrant; ./saturnring_postbootup_as_vagrant_user
cd /home/vagrant/saturnring/ssddj
cat <<EOF > /etc/supervisor/conf.d/saturnworker.conf
[program:django-rqworker-1]
command=/home/vagrant/saturnring/misc/rqworker.sh
command=/home/vagrant/saturnring/misc/rqworker.sh queue1
user=vagrant
stdout_logfile=/nfsmount/saturnringlog/rqworker-1.log
redirect_stderr=true
[program:django-rqworker-2]
command=/home/vagrant/saturnring/misc/rqworker.sh
command=/home/vagrant/saturnring/misc/rqworker.sh queue2
user=vagrant
stdout_logfile=/nfsmount/saturnringlog/rqworker-2.log
redirect_stderr=true
[program:django-rqworker-3]
command=/home/vagrant/saturnring/misc/rqworker.sh
command=/home/vagrant/saturnring/misc/rqworker.sh queue3
user=vagrant
stdout_logfile=/nfsmount/saturnringlog/rqworker-3.log
redirect_stderr=true
[program:django-rqworker-4]
command=/home/vagrant/saturnring/misc/rqworker.sh
command=/home/vagrant/saturnring/misc/rqworker.sh queue4
user=vagrant
stdout_logfile=/nfsmount/saturnringlog/rqworker-4.log
redirect_stderr=true
[program:django-rqworker-5]
command=/home/vagrant/saturnring/misc/rqworker.sh queue5
user=vagrant
stdout_logfile=/nfsmount/saturnringlog/rqworker-5.log
redirect_stderr=true
EOF
cat <<EOF > /etc/apache2/sites-available/saturnring.conf
<VirtualHost *:80>
Expand Down
2 changes: 1 addition & 1 deletion misc/rqworker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@


source /home/vagrant/saturnring/saturnenv/bin/activate
python /home/vagrant/saturnring/ssddj/manage.py rqworker default
python /home/vagrant/saturnring/ssddj/manage.py rqworker $1
8 changes: 7 additions & 1 deletion ssddj/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,15 @@ class UpdateStateData(APIView):
# authentication_classes = (SessionAuthentication, BasicAuthentication)
# permission_classes = (IsAuthenticated,)
def get(self, request):
queue = django_rq.get_queue('default')
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
config = ConfigParser.RawConfigParser()
config.read(os.path.join(BASE_DIR,'saturn.ini'))
numqueues = config.get('saturnring','numqueues')
allhosts=StorageHost.objects.filter(enabled=True)
for eachhost in allhosts:
queuename = 'queue'+str(hash(eachhost)%int(numqueues))
queue = django_rq.get_queue(queuename)
logger.info('Using queue %s for storagehost %s' % (queuename,eachhost))
queue.enqueue(UpdateOneState,eachhost)
return Response("Ok, enqueued state update request")

Expand Down
5 changes: 5 additions & 0 deletions ssddj/saturn.ini
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ django_secret_key=PLEASECHANGEME

#Logging path
logpath=/nfsmount/saturnringlog

#Number of queues
#If you change this number then please adjust the /etc/supervisor/conf.d/saturnring.conf by adding or deleting queue entries out there
numqueues=5

[saturnnode]
#This user on the saturnnode has sudo access (without passord prompt). Use visudo to enable this for the user, or as part of bash script like shown below
#if [ -z "$1" ]; then
Expand Down
8 changes: 8 additions & 0 deletions ssddj/ssddj/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,14 @@
},
}

numqueues = config.get('saturnring','numqueues')
for ii in range(0,int(numqueues)):
RQ_QUEUES['queue'+str(ii)]={
'HOST': 'localhost',
'PORT' : 6379,
'DB': 0,
}



# Internationalization
Expand Down

0 comments on commit bc4edff

Please sign in to comment.