view website/issues/detectors/newissuecopy.py @ 5142:93832cec4c31

issue2550839: Xapian, DatabaseLockError: Unable to get write lock on db/text-index: already locked I put in a retry loop that will attempt to get the lock. 10 tries with a delaythatvaries from .02 seconds to .64 seconds. Total delay over 10 cycles approx. 4.5 seconds. I can't figure out how to make pytest run two parallel processes to test this code. I did try running: ./run_tests.py -k Xapian test/test_indexer.py & ./run_tests.py -k Xapian test/test_indexer.py and confirmed that one of the processes seemed to hang on a test and then threw a lock failure error. So at least the code path is being exercised. If anybody knows how to correctly test this I would love to do a real test.
author John Rouillard <rouilj@ieee.org>
date Wed, 13 Jul 2016 19:42:44 -0400
parents b622e150c0ba
children 198b6e810c67
line wrap: on
line source

from roundup import roundupdb

def newissuecopy(db, cl, nodeid, oldvalues):
    ''' Copy a message about new issues to a team address.
    '''
    # so use all the messages in the create
    change_note = cl.generateCreateNote(nodeid)

    # send a copy to the nosy list
    for msgid in cl.get(nodeid, 'messages'):
        try:
            # note: last arg must be a list
            cl.send_message(nodeid, msgid, change_note,
                ['r1chardj0n3s@gmail.com', 
                    'roundup-devel@lists.sourceforge.net'])
        except roundupdb.MessageSendError, message:
            raise roundupdb.DetectorError, message

def init(db):
    db.issue.react('create', newissuecopy)

Roundup Issue Tracker: http://roundup-tracker.org/