rq 0.1.7 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/INSTALL +21 -0
- data/README +752 -190
- data/TODO +18 -11
- data/TUTORIAL +230 -0
- data/all/install.rb +127 -0
- data/all/install.sh +165 -0
- data/all/packages/INSTALL +5 -0
- data/all/packages/arrayfields-3.6.0.tgz +0 -0
- data/all/packages/lockfile-1.4.1.tgz +0 -0
- data/all/packages/posixlock-0.0.1.tgz +0 -0
- data/all/packages/ruby-1.8.6.tgz +0 -0
- data/all/packages/rubygems-0.9.2.tgz +0 -0
- data/all/packages/sqlite-2.8.15.tar.gz +0 -0
- data/all/packages/sqlite-ruby-1.3.1.tar.gz +0 -0
- data/bin/rq +830 -361
- data/bin/rq-3.0.0 +860 -0
- data/doc/classes/ARGV.html +134 -0
- data/doc/classes/ARGV.src/M000036.html +36 -0
- data/doc/classes/ARGV.src/M000037.html +25 -0
- data/doc/classes/OrderedHash.html +1043 -0
- data/doc/classes/OrderedHash.src/M000003.html +26 -0
- data/doc/classes/OrderedHash.src/M000004.html +31 -0
- data/doc/classes/OrderedHash.src/M000005.html +23 -0
- data/doc/classes/OrderedHash.src/M000006.html +23 -0
- data/doc/classes/OrderedHash.src/M000007.html +24 -0
- data/doc/classes/OrderedHash.src/M000009.html +24 -0
- data/doc/classes/OrderedHash.src/M000010.html +24 -0
- data/doc/classes/OrderedHash.src/M000011.html +24 -0
- data/doc/classes/OrderedHash.src/M000012.html +24 -0
- data/doc/classes/OrderedHash.src/M000013.html +24 -0
- data/doc/classes/OrderedHash.src/M000014.html +24 -0
- data/doc/classes/OrderedHash.src/M000016.html +26 -0
- data/doc/classes/OrderedHash.src/M000017.html +25 -0
- data/doc/classes/OrderedHash.src/M000018.html +23 -0
- data/doc/classes/OrderedHash.src/M000019.html +25 -0
- data/doc/classes/OrderedHash.src/M000020.html +23 -0
- data/doc/classes/OrderedHash.src/M000021.html +24 -0
- data/doc/classes/OrderedHash.src/M000022.html +24 -0
- data/doc/classes/OrderedHash.src/M000023.html +24 -0
- data/doc/classes/OrderedHash.src/M000024.html +29 -0
- data/doc/classes/OrderedHash.src/M000025.html +29 -0
- data/doc/classes/OrderedHash.src/M000026.html +24 -0
- data/doc/classes/OrderedHash.src/M000027.html +25 -0
- data/doc/classes/OrderedHash.src/M000028.html +23 -0
- data/doc/classes/OrderedHash.src/M000029.html +25 -0
- data/doc/classes/OrderedHash.src/M000030.html +24 -0
- data/doc/classes/OrderedHash.src/M000032.html +23 -0
- data/doc/classes/OrderedHash.src/M000033.html +25 -0
- data/doc/classes/OrderedHash.src/M000034.html +36 -0
- data/doc/classes/OrderedHash.src/M000035.html +23 -0
- data/doc/classes/RQ.html +647 -0
- data/doc/classes/RQ/Backer.html +240 -0
- data/doc/classes/RQ/Backer.src/M000121.html +31 -0
- data/doc/classes/RQ/ConfigFile.html +416 -0
- data/doc/classes/RQ/ConfigFile.src/M000100.html +34 -0
- data/doc/classes/RQ/ConfigFile.src/M000101.html +26 -0
- data/doc/classes/RQ/ConfigFile.src/M000102.html +33 -0
- data/doc/classes/RQ/ConfigFile.src/M000103.html +25 -0
- data/doc/classes/RQ/ConfigFile.src/M000104.html +34 -0
- data/doc/classes/RQ/ConfigFile.src/M000105.html +25 -0
- data/doc/classes/RQ/Configurator.html +249 -0
- data/doc/classes/RQ/Configurator.src/M000122.html +40 -0
- data/doc/classes/RQ/Creator.html +264 -0
- data/doc/classes/RQ/Creator.src/M000157.html +32 -0
- data/doc/classes/RQ/Cron.html +461 -0
- data/doc/classes/RQ/Deleter.html +259 -0
- data/doc/classes/RQ/Deleter.src/M000078.html +52 -0
- data/doc/classes/RQ/Executor.html +249 -0
- data/doc/classes/RQ/Executor.src/M000099.html +45 -0
- data/doc/classes/RQ/Feeder.html +1131 -0
- data/doc/classes/RQ/Feeder.src/M000079.html +67 -0
- data/doc/classes/RQ/Feeder.src/M000080.html +47 -0
- data/doc/classes/RQ/Feeder.src/M000081.html +98 -0
- data/doc/classes/RQ/Feeder.src/M000082.html +25 -0
- data/doc/classes/RQ/Feeder.src/M000083.html +30 -0
- data/doc/classes/RQ/Feeder.src/M000084.html +58 -0
- data/doc/classes/RQ/Feeder.src/M000085.html +37 -0
- data/doc/classes/RQ/Feeder.src/M000086.html +40 -0
- data/doc/classes/RQ/Feeder.src/M000087.html +37 -0
- data/doc/classes/RQ/Feeder.src/M000088.html +35 -0
- data/doc/classes/RQ/Feeder.src/M000089.html +47 -0
- data/doc/classes/RQ/Feeder.src/M000090.html +25 -0
- data/doc/classes/RQ/Feeder.src/M000091.html +78 -0
- data/doc/classes/RQ/Feeder.src/M000092.html +34 -0
- data/doc/classes/RQ/Feeder.src/M000093.html +36 -0
- data/doc/classes/RQ/Feeder.src/M000094.html +25 -0
- data/doc/classes/RQ/Feeder.src/M000095.html +27 -0
- data/doc/classes/RQ/IOViewer.html +256 -0
- data/doc/classes/RQ/Job.html +304 -0
- data/doc/classes/RQ/Job.src/M000168.html +26 -0
- data/doc/classes/RQ/Job.src/M000169.html +37 -0
- data/doc/classes/RQ/Job.src/M000170.html +23 -0
- data/doc/classes/RQ/Job/Methods.html +210 -0
- data/doc/classes/RQ/JobQueue.html +1780 -0
- data/doc/classes/RQ/JobQueue.src/M000176.html +31 -0
- data/doc/classes/RQ/JobQueue.src/M000177.html +34 -0
- data/doc/classes/RQ/JobQueue.src/M000178.html +60 -0
- data/doc/classes/RQ/JobQueue.src/M000179.html +63 -0
- data/doc/classes/RQ/JobQueue.src/M000180.html +73 -0
- data/doc/classes/RQ/JobQueue.src/M000181.html +217 -0
- data/doc/classes/RQ/JobQueue.src/M000182.html +50 -0
- data/doc/classes/RQ/JobQueue.src/M000183.html +83 -0
- data/doc/classes/RQ/JobQueue.src/M000184.html +25 -0
- data/doc/classes/RQ/JobQueue.src/M000185.html +83 -0
- data/doc/classes/RQ/JobQueue.src/M000186.html +28 -0
- data/doc/classes/RQ/JobQueue.src/M000187.html +26 -0
- data/doc/classes/RQ/JobQueue.src/M000188.html +26 -0
- data/doc/classes/RQ/JobQueue.src/M000189.html +32 -0
- data/doc/classes/RQ/JobQueue.src/M000190.html +30 -0
- data/doc/classes/RQ/JobQueue.src/M000191.html +37 -0
- data/doc/classes/RQ/JobQueue.src/M000192.html +36 -0
- data/doc/classes/RQ/JobQueue.src/M000193.html +25 -0
- data/doc/classes/RQ/JobQueue.src/M000194.html +25 -0
- data/doc/classes/RQ/JobQueue.src/M000195.html +25 -0
- data/doc/classes/RQ/JobQueue.src/M000196.html +25 -0
- data/doc/classes/RQ/JobQueue.src/M000197.html +25 -0
- data/doc/classes/RQ/JobQueue.src/M000198.html +73 -0
- data/doc/classes/RQ/JobQueue.src/M000199.html +25 -0
- data/doc/classes/RQ/JobQueue.src/M000200.html +38 -0
- data/doc/classes/RQ/JobQueue.src/M000201.html +28 -0
- data/doc/classes/RQ/JobQueue/Error.html +187 -0
- data/doc/classes/RQ/JobRunner.html +386 -0
- data/doc/classes/RQ/JobRunner.src/M000117.html +53 -0
- data/doc/classes/RQ/JobRunner.src/M000118.html +26 -0
- data/doc/classes/RQ/JobRunnerDaemon.html +590 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000159.html +94 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000160.html +27 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000161.html +39 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000162.html +27 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000163.html +27 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000164.html +28 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000165.html +28 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000166.html +37 -0
- data/doc/classes/RQ/JobRunnerDaemon.src/M000167.html +25 -0
- data/doc/classes/RQ/Lister.html +256 -0
- data/doc/classes/RQ/Lister.src/M000156.html +52 -0
- data/doc/classes/RQ/Locker.html +250 -0
- data/doc/classes/RQ/Locker.src/M000120.html +40 -0
- data/doc/classes/RQ/Logging.html +296 -0
- data/doc/classes/RQ/Logging.src/M000067.html +28 -0
- data/doc/classes/RQ/Logging/LogClassMethods.html +254 -0
- data/doc/classes/RQ/Logging/LogClassMethods.src/M000068.html +32 -0
- data/doc/classes/RQ/Logging/LogClassMethods.src/M000069.html +28 -0
- data/doc/classes/RQ/Logging/LogMethods.html +404 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000070.html +35 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000071.html +28 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000072.html +21 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000073.html +21 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000074.html +21 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000075.html +21 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000076.html +21 -0
- data/doc/classes/RQ/Logging/LogMethods.src/M000077.html +29 -0
- data/doc/classes/RQ/Logging/LoggerExt.html +194 -0
- data/doc/classes/RQ/Main.html +2110 -0
- data/doc/classes/RQ/MainHelper.html +607 -0
- data/doc/classes/RQ/MainHelper.src/M000171.html +33 -0
- data/doc/classes/RQ/MainHelper.src/M000172.html +32 -0
- data/doc/classes/RQ/MainHelper.src/M000173.html +44 -0
- data/doc/classes/RQ/OrderedAutoHash.html +258 -0
- data/doc/classes/RQ/OrderedAutoHash.src/M000205.html +25 -0
- data/doc/classes/RQ/OrderedAutoHash.src/M000206.html +25 -0
- data/doc/classes/RQ/QDB.html +1653 -0
- data/doc/classes/RQ/QDB.src/M000126.html +25 -0
- data/doc/classes/RQ/QDB.src/M000127.html +37 -0
- data/doc/classes/RQ/QDB.src/M000128.html +27 -0
- data/doc/classes/RQ/QDB.src/M000129.html +27 -0
- data/doc/classes/RQ/QDB.src/M000130.html +27 -0
- data/doc/classes/RQ/QDB.src/M000131.html +31 -0
- data/doc/classes/RQ/QDB.src/M000132.html +32 -0
- data/doc/classes/RQ/QDB.src/M000133.html +30 -0
- data/doc/classes/RQ/QDB.src/M000134.html +91 -0
- data/doc/classes/RQ/QDB.src/M000135.html +26 -0
- data/doc/classes/RQ/QDB.src/M000136.html +46 -0
- data/doc/classes/RQ/QDB.src/M000137.html +26 -0
- data/doc/classes/RQ/QDB.src/M000138.html +51 -0
- data/doc/classes/RQ/QDB.src/M000139.html +61 -0
- data/doc/classes/RQ/QDB.src/M000140.html +57 -0
- data/doc/classes/RQ/QDB.src/M000141.html +25 -0
- data/doc/classes/RQ/QDB.src/M000142.html +25 -0
- data/doc/classes/RQ/QDB.src/M000143.html +37 -0
- data/doc/classes/RQ/QDB.src/M000144.html +107 -0
- data/doc/classes/RQ/QDB.src/M000145.html +40 -0
- data/doc/classes/RQ/QDB.src/M000146.html +34 -0
- data/doc/classes/RQ/QDB.src/M000147.html +33 -0
- data/doc/classes/RQ/QDB.src/M000148.html +32 -0
- data/doc/classes/RQ/QDB.src/M000149.html +98 -0
- data/doc/classes/RQ/QDB.src/M000150.html +26 -0
- data/doc/classes/RQ/QDB.src/M000151.html +31 -0
- data/doc/classes/RQ/QDB.src/M000154.html +26 -0
- data/doc/classes/RQ/QDB/AbortedTransactionError.html +187 -0
- data/doc/classes/RQ/QDB/RollbackTransactionError.html +187 -0
- data/doc/classes/RQ/Querier.html +328 -0
- data/doc/classes/RQ/Querier.src/M000203.html +45 -0
- data/doc/classes/RQ/Querier.src/M000204.html +78 -0
- data/doc/classes/RQ/ReSubmitter.html +307 -0
- data/doc/classes/RQ/ReSubmitter.src/M000098.html +111 -0
- data/doc/classes/RQ/Recoverer.html +247 -0
- data/doc/classes/RQ/Refresher.html +346 -0
- data/doc/classes/RQ/Refresher.src/M000174.html +51 -0
- data/doc/classes/RQ/Refresher.src/M000175.html +44 -0
- data/doc/classes/RQ/Relayer.html +723 -0
- data/doc/classes/RQ/Relayer.src/M000106.html +91 -0
- data/doc/classes/RQ/Relayer.src/M000107.html +47 -0
- data/doc/classes/RQ/Relayer.src/M000108.html +46 -0
- data/doc/classes/RQ/Relayer.src/M000109.html +26 -0
- data/doc/classes/RQ/Relayer.src/M000110.html +46 -0
- data/doc/classes/RQ/Relayer.src/M000111.html +40 -0
- data/doc/classes/RQ/Relayer.src/M000112.html +37 -0
- data/doc/classes/RQ/Relayer.src/M000113.html +40 -0
- data/doc/classes/RQ/Relayer.src/M000114.html +27 -0
- data/doc/classes/RQ/Relayer.src/M000115.html +25 -0
- data/doc/classes/RQ/Relayer.src/M000116.html +38 -0
- data/doc/classes/RQ/Resource.html +187 -0
- data/doc/classes/RQ/ResourceManager.html +276 -0
- data/doc/classes/RQ/Rotater.html +324 -0
- data/doc/classes/RQ/Rotater.src/M000158.html +71 -0
- data/doc/classes/RQ/SleepCycle.html +322 -0
- data/doc/classes/RQ/SleepCycle.src/M000123.html +32 -0
- data/doc/classes/RQ/SleepCycle.src/M000124.html +27 -0
- data/doc/classes/RQ/SleepCycle.src/M000125.html +25 -0
- data/doc/classes/RQ/Snapshotter.html +250 -0
- data/doc/classes/RQ/Snapshotter.src/M000097.html +35 -0
- data/doc/classes/RQ/StatusLister.html +289 -0
- data/doc/classes/RQ/StatusLister.src/M000096.html +26 -0
- data/doc/classes/RQ/Submitter.html +319 -0
- data/doc/classes/RQ/Submitter.src/M000119.html +92 -0
- data/doc/classes/RQ/Toucher.html +384 -0
- data/doc/classes/RQ/Updater.html +304 -0
- data/doc/classes/RQ/Updater.src/M000202.html +97 -0
- data/doc/classes/RQ/Usage.html +346 -0
- data/doc/classes/RQ/Usage.src/M000038.html +29 -0
- data/doc/classes/RQ/Usage.src/M000039.html +72 -0
- data/doc/classes/RQ/Util.html +1043 -0
- data/doc/classes/RQ/Util.src/M000040.html +27 -0
- data/doc/classes/RQ/Util.src/M000041.html +26 -0
- data/doc/classes/RQ/Util.src/M000042.html +25 -0
- data/doc/classes/RQ/Util.src/M000043.html +25 -0
- data/doc/classes/RQ/Util.src/M000044.html +30 -0
- data/doc/classes/RQ/Util.src/M000045.html +25 -0
- data/doc/classes/RQ/Util.src/M000046.html +34 -0
- data/doc/classes/RQ/Util.src/M000047.html +31 -0
- data/doc/classes/RQ/Util.src/M000048.html +41 -0
- data/doc/classes/RQ/Util.src/M000049.html +27 -0
- data/doc/classes/RQ/Util.src/M000050.html +34 -0
- data/doc/classes/RQ/Util.src/M000051.html +28 -0
- data/doc/classes/RQ/Util.src/M000052.html +27 -0
- data/doc/classes/RQ/Util.src/M000053.html +31 -0
- data/doc/classes/RQ/Util.src/M000054.html +31 -0
- data/doc/classes/RQ/Util.src/M000055.html +31 -0
- data/doc/classes/RQ/Util.src/M000056.html +25 -0
- data/doc/classes/RQ/Util.src/M000057.html +25 -0
- data/doc/classes/RQ/Util.src/M000058.html +25 -0
- data/doc/classes/RQ/Util.src/M000059.html +25 -0
- data/doc/classes/RQ/Util.src/M000060.html +25 -0
- data/doc/classes/RQ/Util.src/M000061.html +27 -0
- data/doc/classes/RQ/Util.src/M000062.html +28 -0
- data/doc/classes/RQ/Util.src/M000063.html +39 -0
- data/doc/classes/RQ/Util.src/M000064.html +39 -0
- data/doc/classes/RQ/Util.src/M000065.html +31 -0
- data/doc/classes/RQ/Util.src/M000066.html +29 -0
- data/doc/classes/SQLite.html +120 -0
- data/doc/classes/SQLite/Database.html +546 -0
- data/doc/classes/SQLite/TypeTranslator.html +221 -0
- data/doc/created.rid +1 -0
- data/doc/dot/f_0.dot +14 -0
- data/doc/dot/f_0.jpg +0 -0
- data/doc/dot/f_1.dot +14 -0
- data/doc/dot/f_1.jpg +0 -0
- data/doc/dot/f_10.dot +802 -0
- data/doc/dot/f_10.jpg +0 -0
- data/doc/dot/f_11.dot +14 -0
- data/doc/dot/f_11.jpg +0 -0
- data/doc/dot/f_12.dot +802 -0
- data/doc/dot/f_12.jpg +0 -0
- data/doc/dot/f_13.dot +802 -0
- data/doc/dot/f_13.jpg +0 -0
- data/doc/dot/f_14.dot +802 -0
- data/doc/dot/f_14.jpg +0 -0
- data/doc/dot/f_15.dot +802 -0
- data/doc/dot/f_15.jpg +0 -0
- data/doc/dot/f_16.dot +802 -0
- data/doc/dot/f_16.jpg +0 -0
- data/doc/dot/f_17.dot +802 -0
- data/doc/dot/f_17.jpg +0 -0
- data/doc/dot/f_18.dot +14 -0
- data/doc/dot/f_18.jpg +0 -0
- data/doc/dot/f_19.dot +802 -0
- data/doc/dot/f_19.jpg +0 -0
- data/doc/dot/f_2.dot +14 -0
- data/doc/dot/f_2.jpg +0 -0
- data/doc/dot/f_20.dot +802 -0
- data/doc/dot/f_20.jpg +0 -0
- data/doc/dot/f_21.dot +802 -0
- data/doc/dot/f_21.jpg +0 -0
- data/doc/dot/f_22.dot +802 -0
- data/doc/dot/f_22.jpg +0 -0
- data/doc/dot/f_23.dot +802 -0
- data/doc/dot/f_23.jpg +0 -0
- data/doc/dot/f_24.dot +802 -0
- data/doc/dot/f_24.jpg +0 -0
- data/doc/dot/f_25.dot +817 -0
- data/doc/dot/f_25.jpg +0 -0
- data/doc/dot/f_26.dot +29 -0
- data/doc/dot/f_26.jpg +0 -0
- data/doc/dot/f_27.dot +802 -0
- data/doc/dot/f_27.jpg +0 -0
- data/doc/dot/f_28.dot +802 -0
- data/doc/dot/f_28.jpg +0 -0
- data/doc/dot/f_29.dot +802 -0
- data/doc/dot/f_29.jpg +0 -0
- data/doc/dot/f_3.dot +14 -0
- data/doc/dot/f_3.jpg +0 -0
- data/doc/dot/f_30.dot +802 -0
- data/doc/dot/f_30.jpg +0 -0
- data/doc/dot/f_31.dot +802 -0
- data/doc/dot/f_31.jpg +0 -0
- data/doc/dot/f_32.dot +802 -0
- data/doc/dot/f_32.jpg +0 -0
- data/doc/dot/f_33.dot +802 -0
- data/doc/dot/f_33.jpg +0 -0
- data/doc/dot/f_34.dot +802 -0
- data/doc/dot/f_34.jpg +0 -0
- data/doc/dot/f_35.dot +802 -0
- data/doc/dot/f_35.jpg +0 -0
- data/doc/dot/f_36.dot +802 -0
- data/doc/dot/f_36.jpg +0 -0
- data/doc/dot/f_37.dot +802 -0
- data/doc/dot/f_37.jpg +0 -0
- data/doc/dot/f_38.dot +54 -0
- data/doc/dot/f_38.jpg +0 -0
- data/doc/dot/f_39.dot +802 -0
- data/doc/dot/f_39.jpg +0 -0
- data/doc/dot/f_4.dot +802 -0
- data/doc/dot/f_4.jpg +0 -0
- data/doc/dot/f_40.dot +802 -0
- data/doc/dot/f_40.jpg +0 -0
- data/doc/dot/f_41.dot +802 -0
- data/doc/dot/f_41.jpg +0 -0
- data/doc/dot/f_42.dot +802 -0
- data/doc/dot/f_42.jpg +0 -0
- data/doc/dot/f_43.dot +802 -0
- data/doc/dot/f_43.jpg +0 -0
- data/doc/dot/f_44.dot +802 -0
- data/doc/dot/f_44.jpg +0 -0
- data/doc/dot/f_5.dot +802 -0
- data/doc/dot/f_5.jpg +0 -0
- data/doc/dot/f_6.dot +802 -0
- data/doc/dot/f_6.jpg +0 -0
- data/doc/dot/f_7.dot +802 -0
- data/doc/dot/f_7.jpg +0 -0
- data/doc/dot/f_8.dot +802 -0
- data/doc/dot/f_8.jpg +0 -0
- data/doc/dot/f_9.dot +802 -0
- data/doc/dot/f_9.jpg +0 -0
- data/doc/dot/m_10_0.dot +802 -0
- data/doc/dot/m_10_0.jpg +0 -0
- data/doc/dot/m_11_0.dot +734 -0
- data/doc/dot/m_11_0.jpg +0 -0
- data/doc/dot/m_12_0.dot +802 -0
- data/doc/dot/m_12_0.jpg +0 -0
- data/doc/dot/m_13_0.dot +802 -0
- data/doc/dot/m_13_0.jpg +0 -0
- data/doc/dot/m_14_0.dot +802 -0
- data/doc/dot/m_14_0.jpg +0 -0
- data/doc/dot/m_15_0.dot +802 -0
- data/doc/dot/m_15_0.jpg +0 -0
- data/doc/dot/m_16_0.dot +802 -0
- data/doc/dot/m_16_0.jpg +0 -0
- data/doc/dot/m_17_0.dot +802 -0
- data/doc/dot/m_17_0.jpg +0 -0
- data/doc/dot/m_18_0.dot +734 -0
- data/doc/dot/m_18_0.jpg +0 -0
- data/doc/dot/m_19_0.dot +802 -0
- data/doc/dot/m_19_0.jpg +0 -0
- data/doc/dot/m_20_0.dot +802 -0
- data/doc/dot/m_20_0.jpg +0 -0
- data/doc/dot/m_21_0.dot +802 -0
- data/doc/dot/m_21_0.jpg +0 -0
- data/doc/dot/m_22_0.dot +802 -0
- data/doc/dot/m_22_0.jpg +0 -0
- data/doc/dot/m_23_0.dot +802 -0
- data/doc/dot/m_23_0.jpg +0 -0
- data/doc/dot/m_24_0.dot +802 -0
- data/doc/dot/m_24_0.jpg +0 -0
- data/doc/dot/m_25_0.dot +802 -0
- data/doc/dot/m_25_0.jpg +0 -0
- data/doc/dot/m_26_0.dot +734 -0
- data/doc/dot/m_26_0.jpg +0 -0
- data/doc/dot/m_27_0.dot +802 -0
- data/doc/dot/m_27_0.jpg +0 -0
- data/doc/dot/m_28_0.dot +802 -0
- data/doc/dot/m_28_0.jpg +0 -0
- data/doc/dot/m_29_0.dot +802 -0
- data/doc/dot/m_29_0.jpg +0 -0
- data/doc/dot/m_30_0.dot +802 -0
- data/doc/dot/m_30_0.jpg +0 -0
- data/doc/dot/m_31_0.dot +802 -0
- data/doc/dot/m_31_0.jpg +0 -0
- data/doc/dot/m_32_0.dot +802 -0
- data/doc/dot/m_32_0.jpg +0 -0
- data/doc/dot/m_33_0.dot +802 -0
- data/doc/dot/m_33_0.jpg +0 -0
- data/doc/dot/m_34_0.dot +802 -0
- data/doc/dot/m_34_0.jpg +0 -0
- data/doc/dot/m_35_0.dot +802 -0
- data/doc/dot/m_35_0.jpg +0 -0
- data/doc/dot/m_36_0.dot +802 -0
- data/doc/dot/m_36_0.jpg +0 -0
- data/doc/dot/m_37_0.dot +802 -0
- data/doc/dot/m_37_0.jpg +0 -0
- data/doc/dot/m_38_0.dot +54 -0
- data/doc/dot/m_38_0.jpg +0 -0
- data/doc/dot/m_39_0.dot +802 -0
- data/doc/dot/m_39_0.jpg +0 -0
- data/doc/dot/m_40_0.dot +802 -0
- data/doc/dot/m_40_0.jpg +0 -0
- data/doc/dot/m_41_0.dot +802 -0
- data/doc/dot/m_41_0.jpg +0 -0
- data/doc/dot/m_42_0.dot +802 -0
- data/doc/dot/m_42_0.jpg +0 -0
- data/doc/dot/m_43_0.dot +802 -0
- data/doc/dot/m_43_0.jpg +0 -0
- data/doc/dot/m_44_0.dot +802 -0
- data/doc/dot/m_44_0.jpg +0 -0
- data/doc/dot/m_4_0.dot +802 -0
- data/doc/dot/m_4_0.jpg +0 -0
- data/doc/dot/m_5_0.dot +802 -0
- data/doc/dot/m_5_0.jpg +0 -0
- data/doc/dot/m_6_0.dot +802 -0
- data/doc/dot/m_6_0.jpg +0 -0
- data/doc/dot/m_7_0.dot +802 -0
- data/doc/dot/m_7_0.jpg +0 -0
- data/doc/dot/m_8_0.dot +802 -0
- data/doc/dot/m_8_0.jpg +0 -0
- data/doc/dot/m_9_0.dot +802 -0
- data/doc/dot/m_9_0.jpg +0 -0
- data/doc/files/DEPENDS.html +107 -0
- data/doc/files/HISTORY.html +316 -0
- data/doc/files/INSTALL.html +126 -0
- data/doc/files/README.html +1223 -0
- data/doc/files/TODO.html +148 -0
- data/doc/files/TUTORIAL.html +392 -0
- data/doc/files/VERSION.html +107 -0
- data/doc/files/bin/rq_rb.html +231 -0
- data/doc/files/install_rb.html +188 -0
- data/doc/files/install_rb.src/M000001.html +53 -0
- data/doc/files/install_rb.src/M000002.html +43 -0
- data/doc/files/lib/rq-1_0_0/backer_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/configfile_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/configurator_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/creator_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/defaultconfig_txt.html +110 -0
- data/doc/files/lib/rq-1_0_0/deleter_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/executor_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/feeder_rb.html +178 -0
- data/doc/files/lib/rq-1_0_0/job_rb.html +176 -0
- data/doc/files/lib/rq-1_0_0/jobqueue_rb.html +177 -0
- data/doc/files/lib/rq-1_0_0/jobrunner_rb.html +175 -0
- data/doc/files/lib/rq-1_0_0/jobrunnerdaemon_rb.html +179 -0
- data/doc/files/lib/rq-1_0_0/lister_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/locker_rb.html +175 -0
- data/doc/files/lib/rq-1_0_0/logging_rb.html +178 -0
- data/doc/files/lib/rq-1_0_0/mainhelper_rb.html +175 -0
- data/doc/files/lib/rq-1_0_0/qdb_rb.html +177 -0
- data/doc/files/lib/rq-1_0_0/querier_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/refresher_rb.html +167 -0
- data/doc/files/lib/rq-1_0_0/relayer_rb.html +178 -0
- data/doc/files/lib/rq-1_0_0/sleepcycle_rb.html +167 -0
- data/doc/files/lib/rq-1_0_0/snapshotter_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/statuslister_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/submitter_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/updater_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/usage_rb.html +174 -0
- data/doc/files/lib/rq-1_0_0/util_rb.html +176 -0
- data/doc/files/lib/rq-2_0_0/backer_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/configfile_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/configurator_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/creator_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/defaultconfig_txt.html +110 -0
- data/doc/files/lib/rq-2_0_0/deleter_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/executor_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/feeder_rb.html +184 -0
- data/doc/files/lib/rq-2_0_0/job_rb.html +182 -0
- data/doc/files/lib/rq-2_0_0/jobqueue_rb.html +185 -0
- data/doc/files/lib/rq-2_0_0/jobrunner_rb.html +181 -0
- data/doc/files/lib/rq-2_0_0/jobrunnerdaemon_rb.html +185 -0
- data/doc/files/lib/rq-2_0_0/lister_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/locker_rb.html +181 -0
- data/doc/files/lib/rq-2_0_0/logging_rb.html +184 -0
- data/doc/files/lib/rq-2_0_0/mainhelper_rb.html +181 -0
- data/doc/files/lib/rq-2_0_0/orderedautohash_rb.html +182 -0
- data/doc/files/lib/rq-2_0_0/orderedhash_rb.html +138 -0
- data/doc/files/lib/rq-2_0_0/qdb_rb.html +184 -0
- data/doc/files/lib/rq-2_0_0/querier_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/refresher_rb.html +173 -0
- data/doc/files/lib/rq-2_0_0/relayer_rb.html +184 -0
- data/doc/files/lib/rq-2_0_0/rotater_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/sleepcycle_rb.html +173 -0
- data/doc/files/lib/rq-2_0_0/snapshotter_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/statuslister_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/submitter_rb.html +181 -0
- data/doc/files/lib/rq-2_0_0/updater_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/usage_rb.html +180 -0
- data/doc/files/lib/rq-2_0_0/util_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/backer_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/configfile_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/configurator_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/creator_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/defaultconfig_txt.html +110 -0
- data/doc/files/lib/rq-2_3_1/deleter_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/executor_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/feeder_rb.html +187 -0
- data/doc/files/lib/rq-2_3_1/job_rb.html +185 -0
- data/doc/files/lib/rq-2_3_1/jobqueue_rb.html +187 -0
- data/doc/files/lib/rq-2_3_1/jobrunner_rb.html +184 -0
- data/doc/files/lib/rq-2_3_1/jobrunnerdaemon_rb.html +187 -0
- data/doc/files/lib/rq-2_3_1/lister_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/locker_rb.html +183 -0
- data/doc/files/lib/rq-2_3_1/logging_rb.html +186 -0
- data/doc/files/lib/rq-2_3_1/mainhelper_rb.html +183 -0
- data/doc/files/lib/rq-2_3_1/orderedautohash_rb.html +184 -0
- data/doc/files/lib/rq-2_3_1/orderedhash_rb.html +138 -0
- data/doc/files/lib/rq-2_3_1/qdb_rb.html +188 -0
- data/doc/files/lib/rq-2_3_1/querier_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/refresher_rb.html +175 -0
- data/doc/files/lib/rq-2_3_1/relayer_rb.html +186 -0
- data/doc/files/lib/rq-2_3_1/resubmitter_rb.html +183 -0
- data/doc/files/lib/rq-2_3_1/rotater_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/sleepcycle_rb.html +175 -0
- data/doc/files/lib/rq-2_3_1/snapshotter_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/statuslister_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/submitter_rb.html +183 -0
- data/doc/files/lib/rq-2_3_1/updater_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/usage_rb.html +182 -0
- data/doc/files/lib/rq-2_3_1/util_rb.html +184 -0
- data/doc/files/lib/rq-2_3_1_rb.html +153 -0
- data/doc/files/lib/rq-2_3_2/backer_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/configfile_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/configurator_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/creator_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/defaultconfig_txt.html +110 -0
- data/doc/files/lib/rq-2_3_2/deleter_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/executor_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/feeder_rb.html +191 -0
- data/doc/files/lib/rq-2_3_2/ioviewer_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/job_rb.html +189 -0
- data/doc/files/lib/rq-2_3_2/jobqueue_rb.html +192 -0
- data/doc/files/lib/rq-2_3_2/jobrunner_rb.html +188 -0
- data/doc/files/lib/rq-2_3_2/jobrunnerdaemon_rb.html +191 -0
- data/doc/files/lib/rq-2_3_2/lister_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/locker_rb.html +187 -0
- data/doc/files/lib/rq-2_3_2/logging_rb.html +190 -0
- data/doc/files/lib/rq-2_3_2/mainhelper_rb.html +188 -0
- data/doc/files/lib/rq-2_3_2/orderedautohash_rb.html +188 -0
- data/doc/files/lib/rq-2_3_2/orderedhash_rb.html +138 -0
- data/doc/files/lib/rq-2_3_2/qdb_rb.html +193 -0
- data/doc/files/lib/rq-2_3_2/querier_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/recoverer_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/refresher_rb.html +179 -0
- data/doc/files/lib/rq-2_3_2/relayer_rb.html +190 -0
- data/doc/files/lib/rq-2_3_2/resubmitter_rb.html +187 -0
- data/doc/files/lib/rq-2_3_2/rotater_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/sleepcycle_rb.html +179 -0
- data/doc/files/lib/rq-2_3_2/snapshotter_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/statuslister_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/submitter_rb.html +187 -0
- data/doc/files/lib/rq-2_3_2/updater_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/usage_rb.html +186 -0
- data/doc/files/lib/rq-2_3_2/util_rb.html +188 -0
- data/doc/files/lib/rq-2_3_3/backer_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/configfile_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/configurator_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/creator_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/defaultconfig_txt.html +110 -0
- data/doc/files/lib/rq-2_3_3/deleter_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/executor_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/feeder_rb.html +191 -0
- data/doc/files/lib/rq-2_3_3/ioviewer_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/job_rb.html +189 -0
- data/doc/files/lib/rq-2_3_3/jobqueue_rb.html +192 -0
- data/doc/files/lib/rq-2_3_3/jobrunner_rb.html +188 -0
- data/doc/files/lib/rq-2_3_3/jobrunnerdaemon_rb.html +191 -0
- data/doc/files/lib/rq-2_3_3/lister_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/locker_rb.html +187 -0
- data/doc/files/lib/rq-2_3_3/logging_rb.html +190 -0
- data/doc/files/lib/rq-2_3_3/mainhelper_rb.html +188 -0
- data/doc/files/lib/rq-2_3_3/orderedautohash_rb.html +188 -0
- data/doc/files/lib/rq-2_3_3/orderedhash_rb.html +138 -0
- data/doc/files/lib/rq-2_3_3/qdb_rb.html +193 -0
- data/doc/files/lib/rq-2_3_3/querier_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/recoverer_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/refresher_rb.html +179 -0
- data/doc/files/lib/rq-2_3_3/relayer_rb.html +190 -0
- data/doc/files/lib/rq-2_3_3/resubmitter_rb.html +187 -0
- data/doc/files/lib/rq-2_3_3/rotater_rb.html +187 -0
- data/doc/files/lib/rq-2_3_3/sleepcycle_rb.html +179 -0
- data/doc/files/lib/rq-2_3_3/snapshotter_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/statuslister_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/submitter_rb.html +187 -0
- data/doc/files/lib/rq-2_3_3/updater_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/usage_rb.html +186 -0
- data/doc/files/lib/rq-2_3_3/util_rb.html +188 -0
- data/doc/files/lib/rq-3_0_0/backer_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/configfile_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/configurator_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/creator_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/cron_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/defaultconfig_txt.html +110 -0
- data/doc/files/lib/rq-3_0_0/deleter_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/executor_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/feeder_rb.html +199 -0
- data/doc/files/lib/rq-3_0_0/ioviewer_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/job_rb.html +197 -0
- data/doc/files/lib/rq-3_0_0/jobqueue_rb.html +200 -0
- data/doc/files/lib/rq-3_0_0/jobrunner_rb.html +196 -0
- data/doc/files/lib/rq-3_0_0/jobrunnerdaemon_rb.html +199 -0
- data/doc/files/lib/rq-3_0_0/lister_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/locker_rb.html +195 -0
- data/doc/files/lib/rq-3_0_0/logging_rb.html +198 -0
- data/doc/files/lib/rq-3_0_0/mainhelper_rb.html +196 -0
- data/doc/files/lib/rq-3_0_0/orderedautohash_rb.html +196 -0
- data/doc/files/lib/rq-3_0_0/orderedhash_rb.html +138 -0
- data/doc/files/lib/rq-3_0_0/qdb_rb.html +201 -0
- data/doc/files/lib/rq-3_0_0/querier_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/recoverer_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/refresher_rb.html +187 -0
- data/doc/files/lib/rq-3_0_0/relayer_rb.html +198 -0
- data/doc/files/lib/rq-3_0_0/resource_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/resourcemanager_rb.html +187 -0
- data/doc/files/lib/rq-3_0_0/resubmitter_rb.html +195 -0
- data/doc/files/lib/rq-3_0_0/rotater_rb.html +195 -0
- data/doc/files/lib/rq-3_0_0/sleepcycle_rb.html +187 -0
- data/doc/files/lib/rq-3_0_0/snapshotter_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/sqlite_rb.html +160 -0
- data/doc/files/lib/rq-3_0_0/statuslister_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/submitter_rb.html +195 -0
- data/doc/files/lib/rq-3_0_0/toucher_rb.html +195 -0
- data/doc/files/lib/rq-3_0_0/updater_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/usage_rb.html +194 -0
- data/doc/files/lib/rq-3_0_0/util_rb.html +196 -0
- data/doc/files/lib/rq_rb.html +244 -0
- data/doc/fr_class_index.html +73 -0
- data/doc/fr_file_index.html +71 -0
- data/doc/fr_method_index.html +323 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +172 -0
- data/extconf.rb +150 -0
- data/gemspec.rb +32 -0
- data/install.rb +75 -8
- data/lib/{rq-0.1.7.rb → rq-3.0.0.rb} +52 -10
- data/lib/{rq-0.1.7 → rq-3.0.0}/backer.rb +11 -7
- data/lib/{rq-0.1.7 → rq-3.0.0}/configfile.rb +21 -17
- data/lib/{rq-0.1.7 → rq-3.0.0}/configurator.rb +10 -6
- data/lib/rq-3.0.0/creator.rb +46 -0
- data/lib/rq-3.0.0/cron.rb +125 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/defaultconfig.txt +0 -0
- data/lib/rq-3.0.0/deleter.rb +51 -0
- data/lib/rq-3.0.0/executor.rb +40 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/feeder.rb +245 -91
- data/lib/rq-3.0.0/i686-linux/_sqlite.so +0 -0
- data/lib/rq-3.0.0/ioviewer.rb +48 -0
- data/lib/rq-3.0.0/job.rb +51 -0
- data/lib/rq-3.0.0/jobqueue.rb +899 -0
- data/lib/rq-3.0.0/jobrunner.rb +104 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/jobrunnerdaemon.rb +41 -27
- data/lib/rq-3.0.0/lister.rb +47 -0
- data/lib/rq-3.0.0/local/bin/sqlite +0 -0
- data/lib/rq-3.0.0/local/include/sqlite.h +868 -0
- data/lib/rq-3.0.0/local/lib/libsqlite.a +0 -0
- data/lib/rq-3.0.0/local/lib/libsqlite.la +35 -0
- data/lib/rq-3.0.0/local/lib/libsqlite.so +0 -0
- data/lib/rq-3.0.0/local/lib/libsqlite.so.0 +0 -0
- data/lib/rq-3.0.0/local/lib/libsqlite.so.0.8.6 +0 -0
- data/lib/rq-3.0.0/local/lib/pkgconfig/sqlite.pc +12 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/locker.rb +12 -6
- data/lib/{rq-0.1.7 → rq-3.0.0}/logging.rb +49 -42
- data/lib/rq-3.0.0/mainhelper.rb +184 -0
- data/lib/rq-3.0.0/orderedautohash.rb +39 -0
- data/lib/rq-3.0.0/orderedhash.rb +240 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/qdb.rb +183 -84
- data/lib/rq-3.0.0/querier.rb +98 -0
- data/lib/rq-3.0.0/recoverer.rb +28 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/refresher.rb +16 -8
- data/lib/rq-3.0.0/relayer.rb +283 -0
- data/lib/rq-3.0.0/resource.rb +22 -0
- data/lib/rq-3.0.0/resourcemanager.rb +40 -0
- data/lib/rq-3.0.0/resubmitter.rb +96 -0
- data/lib/rq-3.0.0/rotater.rb +98 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/sleepcycle.rb +14 -14
- data/lib/rq-3.0.0/snapshotter.rb +40 -0
- data/lib/rq-3.0.0/sqlite.rb +293 -0
- data/lib/rq-3.0.0/statuslister.rb +48 -0
- data/lib/rq-3.0.0/submitter.rb +109 -0
- data/lib/rq-3.0.0/toucher.rb +177 -0
- data/lib/rq-3.0.0/updater.rb +95 -0
- data/lib/rq-3.0.0/usage.rb +1157 -0
- data/lib/{rq-0.1.7 → rq-3.0.0}/util.rb +74 -56
- data/lib/rq.rb +52 -12
- data/rdoc.sh +17 -0
- data/rq +3 -1
- data/white_box/joblist +8 -0
- metadata +779 -96
- data/DEPENDS +0 -5
- data/HISTORY +0 -26
- data/VERSION +0 -1
- data/bin/rq-0.1.7 +0 -410
- data/lib/rq-0.1.7/creator.rb +0 -23
- data/lib/rq-0.1.7/deleter.rb +0 -39
- data/lib/rq-0.1.7/executor.rb +0 -41
- data/lib/rq-0.1.7/job.rb +0 -51
- data/lib/rq-0.1.7/jobqueue.rb +0 -432
- data/lib/rq-0.1.7/jobrunner.rb +0 -63
- data/lib/rq-0.1.7/lister.rb +0 -22
- data/lib/rq-0.1.7/mainhelper.rb +0 -53
- data/lib/rq-0.1.7/querier.rb +0 -33
- data/lib/rq-0.1.7/snapshotter.rb +0 -25
- data/lib/rq-0.1.7/statuslister.rb +0 -22
- data/lib/rq-0.1.7/submitter.rb +0 -90
- data/lib/rq-0.1.7/updater.rb +0 -95
- data/lib/rq-0.1.7/usage.rb +0 -609
- data/rdoc.cmd +0 -2
- data/rq.gemspec +0 -36
- data/rq.help +0 -552
@@ -0,0 +1,240 @@
|
|
1
|
+
# AUTHOR
|
2
|
+
# jan molic /mig/at/1984/dot/cz/
|
3
|
+
#
|
4
|
+
# DESCRIPTION
|
5
|
+
# Hash with preserved order and some array-like extensions
|
6
|
+
# Public domain.
|
7
|
+
#
|
8
|
+
# THANKS
|
9
|
+
# Andrew Johnson for his suggestions and fixes of Hash[],
|
10
|
+
# merge, to_a, inspect and shift
|
11
|
+
#
|
12
|
+
# USAGE
|
13
|
+
# just require this file and use OrderedHash instead of Hash (examples are at the end)
|
14
|
+
# you can try to run this file (ruby orderedhash.rb)
|
15
|
+
#
|
16
|
+
|
17
|
+
class OrderedHash < Hash
|
18
|
+
|
19
|
+
attr_accessor :order
|
20
|
+
|
21
|
+
class << self
|
22
|
+
def [] *args
|
23
|
+
hsh = OrderedHash.new
|
24
|
+
if Hash === args[0]
|
25
|
+
hsh.replace args[0]
|
26
|
+
elsif (args.size % 2) != 0
|
27
|
+
raise ArgumentError, "odd number of elements for Hash"
|
28
|
+
else
|
29
|
+
hsh[args.shift] = args.shift while args.size > 0
|
30
|
+
end
|
31
|
+
hsh
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
@order = []
|
37
|
+
end
|
38
|
+
|
39
|
+
def store_only a,b
|
40
|
+
store a,b
|
41
|
+
end
|
42
|
+
|
43
|
+
alias orig_store store
|
44
|
+
def store a,b
|
45
|
+
@order.push a unless has_key? a
|
46
|
+
super a,b
|
47
|
+
end
|
48
|
+
alias []= store
|
49
|
+
|
50
|
+
def == hsh2
|
51
|
+
return false if @order != hsh2.order
|
52
|
+
super hsh2
|
53
|
+
end
|
54
|
+
|
55
|
+
def clear
|
56
|
+
@order = []
|
57
|
+
super
|
58
|
+
end
|
59
|
+
|
60
|
+
def delete key
|
61
|
+
@order.delete key
|
62
|
+
super
|
63
|
+
end
|
64
|
+
|
65
|
+
def each_key
|
66
|
+
@order.each { |k| yield k }
|
67
|
+
self
|
68
|
+
end
|
69
|
+
|
70
|
+
def each_value
|
71
|
+
@order.each { |k| yield self[k] }
|
72
|
+
self
|
73
|
+
end
|
74
|
+
|
75
|
+
def each
|
76
|
+
@order.each { |k| yield k,self[k] }
|
77
|
+
self
|
78
|
+
end
|
79
|
+
alias each_pair each
|
80
|
+
|
81
|
+
def delete_if
|
82
|
+
@order.clone.each { |k|
|
83
|
+
delete k if yield
|
84
|
+
}
|
85
|
+
self
|
86
|
+
end
|
87
|
+
|
88
|
+
def values
|
89
|
+
ary = []
|
90
|
+
@order.each { |k| ary.push self[k] }
|
91
|
+
ary
|
92
|
+
end
|
93
|
+
|
94
|
+
def keys
|
95
|
+
@order
|
96
|
+
end
|
97
|
+
|
98
|
+
def invert
|
99
|
+
hsh2 = Hash.new
|
100
|
+
@order.each { |k| hsh2[self[k]] = k }
|
101
|
+
hsh2
|
102
|
+
end
|
103
|
+
|
104
|
+
def reject &block
|
105
|
+
self.dup.delete_if &block
|
106
|
+
end
|
107
|
+
|
108
|
+
def reject! &block
|
109
|
+
hsh2 = reject &block
|
110
|
+
self == hsh2 ? nil : hsh2
|
111
|
+
end
|
112
|
+
|
113
|
+
def replace hsh2
|
114
|
+
@order = hsh2.keys
|
115
|
+
super hsh2
|
116
|
+
end
|
117
|
+
|
118
|
+
def shift
|
119
|
+
key = @order.first
|
120
|
+
key ? [key,delete(key)] : super
|
121
|
+
end
|
122
|
+
|
123
|
+
def unshift k,v
|
124
|
+
unless self.include? k
|
125
|
+
@order.unshift k
|
126
|
+
orig_store(k,v)
|
127
|
+
true
|
128
|
+
else
|
129
|
+
false
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def push k,v
|
134
|
+
unless self.include? k
|
135
|
+
@order.push k
|
136
|
+
orig_store(k,v)
|
137
|
+
true
|
138
|
+
else
|
139
|
+
false
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def pop
|
144
|
+
key = @order.last
|
145
|
+
key ? [key,delete(key)] : nil
|
146
|
+
end
|
147
|
+
|
148
|
+
def to_a
|
149
|
+
ary = []
|
150
|
+
each { |k,v| ary << [k,v] }
|
151
|
+
ary
|
152
|
+
end
|
153
|
+
|
154
|
+
def to_s
|
155
|
+
self.to_a.to_s
|
156
|
+
end
|
157
|
+
|
158
|
+
def inspect
|
159
|
+
ary = []
|
160
|
+
each {|k,v| ary << k.inspect + "=>" + v.inspect}
|
161
|
+
'{' + ary.join(", ") + '}'
|
162
|
+
end
|
163
|
+
|
164
|
+
def update hsh2
|
165
|
+
hsh2.each { |k,v| self[k] = v }
|
166
|
+
self
|
167
|
+
end
|
168
|
+
alias :merge! update
|
169
|
+
|
170
|
+
def merge hsh2
|
171
|
+
self.dup update(hsh2)
|
172
|
+
end
|
173
|
+
|
174
|
+
def select
|
175
|
+
ary = []
|
176
|
+
each { |k,v| ary << [k,v] if yield k,v }
|
177
|
+
ary
|
178
|
+
end
|
179
|
+
|
180
|
+
attr_accessor "to_yaml_style"
|
181
|
+
def yaml_inline= bool
|
182
|
+
if respond_to?("to_yaml_style")
|
183
|
+
self.to_yaml_style = :inline
|
184
|
+
else
|
185
|
+
unless defined? @__yaml_inline_meth
|
186
|
+
@__yaml_inline_meth =
|
187
|
+
lambda {|opts|
|
188
|
+
YAML::quick_emit(object_id, opts) {|emitter|
|
189
|
+
emitter << '{ ' << map{|kv| kv.join ': '}.join(', ') << ' }'
|
190
|
+
}
|
191
|
+
}
|
192
|
+
class << self
|
193
|
+
def to_yaml opts = {}
|
194
|
+
begin
|
195
|
+
@__yaml_inline ? @__yaml_inline_meth[ opts ] : super
|
196
|
+
rescue
|
197
|
+
@to_yaml_style = :inline
|
198
|
+
super
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
@__yaml_inline = bool
|
205
|
+
end
|
206
|
+
def yaml_inline!() self.yaml_inline = true end
|
207
|
+
|
208
|
+
end
|
209
|
+
|
210
|
+
if __FILE__ == $0
|
211
|
+
|
212
|
+
# You can do simply
|
213
|
+
hsh = OrderedHash.new
|
214
|
+
hsh['z'] = 1
|
215
|
+
hsh['a'] = 2
|
216
|
+
hsh['c'] = 3
|
217
|
+
p hsh.keys # ['z','a','c']
|
218
|
+
|
219
|
+
# or using OrderedHash[] method
|
220
|
+
hsh = OrderedHash['z', 1, 'a', 2, 'c', 3]
|
221
|
+
p hsh.keys # ['z','a','c']
|
222
|
+
|
223
|
+
# but this don't preserve order
|
224
|
+
hsh = OrderedHash['z'=>1, 'a'=>2, 'c'=>3]
|
225
|
+
p hsh.keys # ['a','c','z']
|
226
|
+
|
227
|
+
# OrderedHash has useful extensions: push, pop and unshift
|
228
|
+
p hsh.push('to_end', 15) # true, key added
|
229
|
+
p hsh.push('to_end', 30) # false, already - nothing happen
|
230
|
+
p hsh.unshift('to_begin', 50) # true, key added
|
231
|
+
p hsh.unshift('to_begin', 60) # false, already - nothing happen
|
232
|
+
p hsh.keys # ["to_begin", "a", "c", "z", "to_end"]
|
233
|
+
p hsh.pop # ["to_end", 15], if nothing remains, return nil
|
234
|
+
p hsh.keys # ["to_begin", "a", "c", "z"]
|
235
|
+
p hsh.shift # ["to_begin", 30], if nothing remains, return nil
|
236
|
+
|
237
|
+
end
|
238
|
+
|
239
|
+
|
240
|
+
# END
|
@@ -1,39 +1,50 @@
|
|
1
1
|
unless defined? $__rq_qdb__
|
2
2
|
module RQ
|
3
|
-
|
3
|
+
#--{{{
|
4
4
|
LIBDIR = File::dirname(File::expand_path(__FILE__)) + File::SEPARATOR unless
|
5
5
|
defined? LIBDIR
|
6
6
|
|
7
|
+
require 'arrayfields'
|
8
|
+
|
7
9
|
require LIBDIR + 'util'
|
8
10
|
require LIBDIR + 'logging'
|
9
11
|
require LIBDIR + 'sleepcycle'
|
10
12
|
require LIBDIR + 'refresher'
|
11
13
|
|
14
|
+
#
|
15
|
+
# the QDB class is the low level access point to the actual sqlite database.
|
16
|
+
# the primary function if performs is to serialize access to the queue db
|
17
|
+
# via the locking protocol
|
18
|
+
#
|
12
19
|
class QDB
|
13
|
-
|
20
|
+
#--{{{
|
14
21
|
include Util
|
15
22
|
include Logging
|
23
|
+
|
24
|
+
class RollbackTransactionError < StandardError; end
|
25
|
+
class AbortedTransactionError < StandardError; end
|
16
26
|
|
17
27
|
FIELDS =
|
18
|
-
|
28
|
+
#--{{{
|
19
29
|
%w(
|
20
30
|
jid priority state
|
21
31
|
submitted started finished elapsed
|
22
32
|
submitter runner
|
33
|
+
stdin stdout stderr
|
23
34
|
pid exit_status
|
24
|
-
tag command
|
35
|
+
tag restartable command
|
25
36
|
)
|
26
|
-
|
37
|
+
#--}}}
|
27
38
|
|
28
39
|
PRAGMAS =
|
29
|
-
|
40
|
+
#--{{{
|
30
41
|
<<-sql
|
31
42
|
PRAGMA default_synchronous = FULL;
|
32
43
|
sql
|
33
|
-
|
44
|
+
#--}}}
|
34
45
|
|
35
46
|
SCHEMA =
|
36
|
-
|
47
|
+
#--{{{
|
37
48
|
<<-sql
|
38
49
|
create table jobs
|
39
50
|
(
|
@@ -47,7 +58,7 @@ unless defined? $__rq_qdb__
|
|
47
58
|
primary key (key)
|
48
59
|
);
|
49
60
|
sql
|
50
|
-
|
61
|
+
#--}}}
|
51
62
|
|
52
63
|
DEFAULT_LOGGER = Logger::new(STDERR)
|
53
64
|
DEFAULT_SQL_DEBUG = false
|
@@ -55,13 +66,12 @@ unless defined? $__rq_qdb__
|
|
55
66
|
DEFAULT_AQUIRE_LOCK_SC = SleepCycle::new(2, 16, 2)
|
56
67
|
DEFAULT_TRANSACTION_RETRIES_SC = SleepCycle::new(8, 24, 8)
|
57
68
|
DEFAULT_ATTEMPT_LOCKD_RECOVERY = true
|
58
|
-
DEFAULT_LOCKD_RECOVER_WAIT =
|
59
|
-
DEFAULT_AQUIRE_LOCK_LOCKFILE_STALE_AGE =
|
60
|
-
DEFAULT_AQUIRE_LOCK_REFRESH_RATE =
|
69
|
+
DEFAULT_LOCKD_RECOVER_WAIT = 3600 # 1 hr
|
70
|
+
DEFAULT_AQUIRE_LOCK_LOCKFILE_STALE_AGE = 21600 # 6 hrs
|
71
|
+
DEFAULT_AQUIRE_LOCK_REFRESH_RATE = 30
|
61
72
|
|
62
73
|
class << self
|
63
|
-
|
64
|
-
attr :logger, true
|
74
|
+
#--{{{
|
65
75
|
attr :sql_debug, true
|
66
76
|
attr :transaction_retries, true
|
67
77
|
attr :aquire_lock_sc, true
|
@@ -72,18 +82,23 @@ unless defined? $__rq_qdb__
|
|
72
82
|
attr :aquire_lock_refresh_rate, true
|
73
83
|
|
74
84
|
def fields
|
75
|
-
|
85
|
+
#--{{{
|
76
86
|
FIELDS
|
77
|
-
|
87
|
+
#--}}}
|
78
88
|
end
|
79
89
|
def integrity_check dbpath
|
80
|
-
|
90
|
+
#--{{{
|
81
91
|
ret = false
|
82
92
|
tuple = nil
|
83
93
|
begin
|
84
|
-
db =
|
94
|
+
db =
|
95
|
+
begin
|
96
|
+
SQLite::Database::new dbpath, 0
|
97
|
+
rescue
|
98
|
+
SQLite::Database::new dbpath
|
99
|
+
end
|
85
100
|
opened = true
|
86
|
-
db.use_array = true
|
101
|
+
db.use_array = true rescue nil
|
87
102
|
tuple = db.execute 'PRAGMA integrity_check;'
|
88
103
|
ret = (tuple and tuple.first and (tuple.first["integrity_check"] =~ /^\s*ok\s*$/io))
|
89
104
|
ensure
|
@@ -91,42 +106,42 @@ unless defined? $__rq_qdb__
|
|
91
106
|
db = nil
|
92
107
|
end
|
93
108
|
ret
|
94
|
-
|
109
|
+
#--}}}
|
95
110
|
end
|
96
111
|
def t2h tuple
|
97
|
-
|
112
|
+
#--{{{
|
98
113
|
h = {}
|
99
114
|
FIELDS.each_with_index{|f,i| h[f] = tuple[i]}
|
100
115
|
h
|
101
|
-
|
116
|
+
#--}}}
|
102
117
|
end
|
103
118
|
def h2t h
|
104
|
-
|
119
|
+
#--{{{
|
105
120
|
t = tuple
|
106
121
|
FIELDS.each{|f| t[f] = h[f]}
|
107
122
|
t
|
108
|
-
|
123
|
+
#--}}}
|
109
124
|
end
|
110
125
|
def tuple
|
111
|
-
|
126
|
+
#--{{{
|
112
127
|
t = Array::new FIELDS.size
|
113
128
|
t.fields = FIELDS
|
114
129
|
t
|
115
|
-
|
130
|
+
#--}}}
|
116
131
|
end
|
117
132
|
def q tuple
|
118
|
-
|
119
|
-
tuple.map do |f|
|
120
|
-
if f
|
133
|
+
#--{{{
|
134
|
+
[ tuple ].flatten.map do |f|
|
135
|
+
if f and not f.to_s.empty?
|
121
136
|
"'" << Util.escape(f,"'","'") << "'"
|
122
137
|
else
|
123
138
|
'NULL'
|
124
139
|
end
|
125
140
|
end
|
126
|
-
|
141
|
+
#--}}}
|
127
142
|
end
|
128
143
|
def create path, opts = {}
|
129
|
-
|
144
|
+
#--{{{
|
130
145
|
qdb = new path, opts
|
131
146
|
FileUtils::touch qdb.lockfile
|
132
147
|
create_schema qdb.schema
|
@@ -135,19 +150,19 @@ unless defined? $__rq_qdb__
|
|
135
150
|
qdb.execute SCHEMA
|
136
151
|
end
|
137
152
|
qdb
|
138
|
-
|
153
|
+
#--}}}
|
139
154
|
end
|
140
155
|
def create_schema path
|
141
|
-
|
156
|
+
#--{{{
|
142
157
|
tmp = "#{ path }.tmp"
|
143
158
|
open(tmp,'w') do |f|
|
144
159
|
f.puts PRAGMAS
|
145
160
|
f.puts SCHEMA
|
146
161
|
end
|
147
162
|
FileUtils::mv tmp, path
|
148
|
-
|
163
|
+
#--}}}
|
149
164
|
end
|
150
|
-
|
165
|
+
#--}}}
|
151
166
|
end
|
152
167
|
|
153
168
|
attr :path
|
@@ -168,7 +183,7 @@ unless defined? $__rq_qdb__
|
|
168
183
|
|
169
184
|
|
170
185
|
def initialize path, opts = {}
|
171
|
-
|
186
|
+
#--{{{
|
172
187
|
@path = path
|
173
188
|
@opts = opts
|
174
189
|
|
@@ -230,21 +245,22 @@ unless defined? $__rq_qdb__
|
|
230
245
|
@lockf = Lockfile::new("#{ @path }.lock")
|
231
246
|
@fields = FIELDS
|
232
247
|
@in_transaction = false
|
248
|
+
@in_ro_transaction = false
|
233
249
|
@db = nil
|
234
250
|
|
235
251
|
@lockd_recover = "#{ @dirname }.lockd_recover"
|
236
252
|
@lockd_recover_lockf = Lockfile::new "#{ @lockd_recover }.lock"
|
237
253
|
@lockd_recovered = false
|
238
|
-
|
254
|
+
#--}}}
|
239
255
|
end
|
240
256
|
def ro_transaction(opts = {}, &block)
|
241
|
-
|
257
|
+
#--{{{
|
242
258
|
opts['read_only'] = true
|
243
259
|
transaction(opts, &block)
|
244
|
-
|
260
|
+
#--}}}
|
245
261
|
end
|
246
262
|
def transaction opts = {}
|
247
|
-
|
263
|
+
#--{{{
|
248
264
|
raise 'nested transaction' if @in_transaction
|
249
265
|
ro = Util::getopt 'read_only', opts
|
250
266
|
ret = nil
|
@@ -267,10 +283,49 @@ unless defined? $__rq_qdb__
|
|
267
283
|
@in_transaction = false
|
268
284
|
end
|
269
285
|
ret
|
270
|
-
|
286
|
+
#--}}}
|
287
|
+
end
|
288
|
+
if false
|
289
|
+
def ro_transaction(opts = {}, &block)
|
290
|
+
#--{{{
|
291
|
+
opts['read_only'] = true
|
292
|
+
transaction(opts, &block)
|
293
|
+
#--}}}
|
294
|
+
end
|
295
|
+
def transaction opts = {}
|
296
|
+
#--{{{
|
297
|
+
ro = Util::getopt 'read_only', opts
|
298
|
+
ret = nil
|
299
|
+
if @in_transaction
|
300
|
+
STDERR.puts 'continuing transaction...'
|
301
|
+
ret = yield
|
302
|
+
else
|
303
|
+
begin
|
304
|
+
STDERR.puts 'starting transaction...'
|
305
|
+
@in_transaction = true
|
306
|
+
lockd_recover_wrap(opts) do
|
307
|
+
transaction_wrap(opts) do
|
308
|
+
aquire_lock(opts) do
|
309
|
+
#sillyclean(opts) do
|
310
|
+
connect do
|
311
|
+
execute 'begin' unless ro
|
312
|
+
ret = yield
|
313
|
+
execute 'commit' unless ro
|
314
|
+
end
|
315
|
+
#end
|
316
|
+
end
|
317
|
+
end
|
318
|
+
end
|
319
|
+
ensure
|
320
|
+
@in_transaction = false
|
321
|
+
end
|
322
|
+
end
|
323
|
+
ret
|
324
|
+
#--}}}
|
271
325
|
end
|
326
|
+
end
|
272
327
|
def lockd_recover_wrap opts = {}
|
273
|
-
|
328
|
+
#--{{{
|
274
329
|
ret = nil
|
275
330
|
try_again = false
|
276
331
|
begin
|
@@ -308,7 +363,7 @@ unless defined? $__rq_qdb__
|
|
308
363
|
end
|
309
364
|
end
|
310
365
|
ret
|
311
|
-
|
366
|
+
#--}}}
|
312
367
|
end
|
313
368
|
#
|
314
369
|
# TODO - perhaps should not retry on SQLException?? yet errors seem to map to
|
@@ -316,7 +371,7 @@ unless defined? $__rq_qdb__
|
|
316
371
|
# simply retry.
|
317
372
|
#
|
318
373
|
def transaction_wrap opts = {}
|
319
|
-
|
374
|
+
#--{{{
|
320
375
|
ro = Util::getopt 'read_only', opts
|
321
376
|
ret = nil
|
322
377
|
if ro
|
@@ -328,25 +383,42 @@ unless defined? $__rq_qdb__
|
|
328
383
|
ret = yield
|
329
384
|
rescue => e
|
330
385
|
#rescue SQLite::DatabaseException, SQLite::SQLException, SystemCallError => e
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
386
|
+
case e
|
387
|
+
when AbortedTransactionError
|
388
|
+
raise
|
389
|
+
when RollbackTransactionError
|
390
|
+
raise
|
391
|
+
else
|
392
|
+
if @transaction_retries == 0
|
393
|
+
raise
|
394
|
+
elsif errors.size >= @transaction_retries
|
395
|
+
error{ "MAXIMUM TRANSACTION RETRIES SURPASSED" }
|
396
|
+
raise
|
397
|
+
else
|
398
|
+
warn{ e } if(errors.empty? or not Util::erreq(errors[-1], e))
|
399
|
+
errors << e
|
400
|
+
warn{ "retry <#{ errors.size }>..." }
|
401
|
+
end
|
402
|
+
sleep @transaction_retries_sc.next
|
403
|
+
retry
|
404
|
+
end
|
343
405
|
end
|
344
406
|
end
|
345
407
|
ret
|
346
|
-
|
408
|
+
#--}}}
|
409
|
+
end
|
410
|
+
def abort_transaction(*a)
|
411
|
+
#--{{{
|
412
|
+
raise AbortedTransactionError, *a
|
413
|
+
#--}}}
|
414
|
+
end
|
415
|
+
def rollback_transaction(*a)
|
416
|
+
#--{{{
|
417
|
+
raise RollbackTransactionError, *a
|
418
|
+
#--}}}
|
347
419
|
end
|
348
420
|
def sillyclean opts = {}
|
349
|
-
|
421
|
+
#--{{{
|
350
422
|
ro = Util::getopt 'read_only', opts
|
351
423
|
ret = nil
|
352
424
|
if ro
|
@@ -360,10 +432,10 @@ unless defined? $__rq_qdb__
|
|
360
432
|
silly.each{|path| FileUtils::rm_rf path}
|
361
433
|
end
|
362
434
|
ret
|
363
|
-
|
435
|
+
#--}}}
|
364
436
|
end
|
365
437
|
def aquire_lock opts = {}
|
366
|
-
|
438
|
+
#--{{{
|
367
439
|
ro = Util::getopt 'read_only', opts
|
368
440
|
ret = nil
|
369
441
|
|
@@ -415,8 +487,16 @@ unless defined? $__rq_qdb__
|
|
415
487
|
stat = File::stat @lockfile
|
416
488
|
mtime = stat.mtime
|
417
489
|
stale = mtime < (Time::now - @aquire_lock_lockfile_stale_age)
|
418
|
-
|
419
|
-
|
490
|
+
if stale
|
491
|
+
Util::uncache @lockfile rescue nil
|
492
|
+
stat = File::stat @lockfile
|
493
|
+
mtime = stat.mtime
|
494
|
+
stale = mtime < (Time::now - @aquire_lock_lockfile_stale_age)
|
495
|
+
if stale
|
496
|
+
warn{ "detected stale lockfile of mtime <#{ mtime }>" }
|
497
|
+
lockd_recover if @attempt_lockd_recovery
|
498
|
+
end
|
499
|
+
end
|
420
500
|
sc = @aquire_lock_sc.next
|
421
501
|
debug{ "failed to aquire lock - sleep(#{ sc })" }
|
422
502
|
sleep sc
|
@@ -445,19 +525,24 @@ unless defined? $__rq_qdb__
|
|
445
525
|
end
|
446
526
|
end
|
447
527
|
ret
|
448
|
-
|
528
|
+
#--}}}
|
449
529
|
end
|
450
530
|
def connect
|
451
|
-
|
531
|
+
#--{{{
|
452
532
|
ret = nil
|
453
533
|
opened = nil
|
454
534
|
begin
|
455
535
|
raise 'db has no schema' unless test ?e, @schema
|
456
536
|
debug{"connecting to db <#{ @path }>..."}
|
457
|
-
$db = @db =
|
537
|
+
$db = @db =
|
538
|
+
begin
|
539
|
+
SQLite::Database::new(@path, 0)
|
540
|
+
rescue
|
541
|
+
SQLite::Database::new(@path)
|
542
|
+
end
|
458
543
|
debug{"connected."}
|
459
544
|
opened = true
|
460
|
-
@db.use_array = true
|
545
|
+
@db.use_array = true rescue nil
|
461
546
|
ret = yield @db
|
462
547
|
ensure
|
463
548
|
@db.close if opened
|
@@ -465,27 +550,27 @@ unless defined? $__rq_qdb__
|
|
465
550
|
debug{"disconnected from db <#{ @path }>"}
|
466
551
|
end
|
467
552
|
ret
|
468
|
-
|
553
|
+
#--}}}
|
469
554
|
end
|
470
555
|
def execute sql, &block
|
471
|
-
|
556
|
+
#--{{{
|
472
557
|
raise 'not in transaction' unless @in_transaction
|
473
558
|
if @sql_debug
|
474
559
|
logger << "SQL:\n#{ sql }\n"
|
475
560
|
end
|
476
561
|
#ret = retry_if_locked{ @db.execute sql, &block }
|
477
562
|
ret = @db.execute sql, &block
|
478
|
-
if @sql_debug and ret and ret.first
|
563
|
+
if @sql_debug and ret and Array === ret and ret.first
|
479
564
|
logger << "RESULT:\n#{ ret.first.inspect }\n...\n"
|
480
565
|
end
|
481
566
|
ret
|
482
|
-
|
567
|
+
#--}}}
|
483
568
|
end
|
484
569
|
#
|
485
570
|
# TODO - add sleep cycle if this ends up getting used
|
486
571
|
#
|
487
572
|
def retry_if_locked
|
488
|
-
|
573
|
+
#--{{{
|
489
574
|
ret = nil
|
490
575
|
begin
|
491
576
|
ret = yield
|
@@ -495,10 +580,10 @@ unless defined? $__rq_qdb__
|
|
495
580
|
retry
|
496
581
|
end
|
497
582
|
ret
|
498
|
-
|
583
|
+
#--}}}
|
499
584
|
end
|
500
585
|
def vacuum
|
501
|
-
|
586
|
+
#--{{{
|
502
587
|
raise 'nested transaction' if @in_transaction
|
503
588
|
begin
|
504
589
|
@in_transaction = true
|
@@ -507,10 +592,24 @@ unless defined? $__rq_qdb__
|
|
507
592
|
@in_transaction = false
|
508
593
|
end
|
509
594
|
self
|
510
|
-
|
595
|
+
#--}}}
|
596
|
+
end
|
597
|
+
def recover!
|
598
|
+
#--{{{
|
599
|
+
raise 'nested transaction' if @in_transaction
|
600
|
+
begin
|
601
|
+
@in_transaction = true
|
602
|
+
connect{ execute 'vacuum' }
|
603
|
+
require 'timeout'
|
604
|
+
Timeout::timeout(60){ system "sqlite #{ @path } .tables >/dev/null 2>&1" }
|
605
|
+
ensure
|
606
|
+
@in_transaction = false
|
607
|
+
end
|
608
|
+
integrity_check
|
609
|
+
#--}}}
|
511
610
|
end
|
512
611
|
def lockd_recover
|
513
|
-
|
612
|
+
#--{{{
|
514
613
|
return nil unless @attempt_lockd_recovery
|
515
614
|
warn{ "attempting lockd recovery" }
|
516
615
|
time = Time::now
|
@@ -598,16 +697,16 @@ unless defined? $__rq_qdb__
|
|
598
697
|
end
|
599
698
|
end
|
600
699
|
ret
|
601
|
-
|
700
|
+
#--}}}
|
602
701
|
end
|
603
702
|
def integrity_check path = @path
|
604
|
-
|
703
|
+
#--{{{
|
605
704
|
debug{ "running integrity_check on <#{ path }>" }
|
606
705
|
klass.integrity_check(path)
|
607
|
-
|
706
|
+
#--}}}
|
608
707
|
end
|
609
708
|
def lock opts = {}
|
610
|
-
|
709
|
+
#--{{{
|
611
710
|
ret = nil
|
612
711
|
lockd_recover_wrap do
|
613
712
|
aquire_lock(opts) do
|
@@ -615,20 +714,20 @@ unless defined? $__rq_qdb__
|
|
615
714
|
end
|
616
715
|
end
|
617
716
|
ret
|
618
|
-
|
717
|
+
#--}}}
|
619
718
|
end
|
620
719
|
alias write_lock lock
|
621
720
|
alias wlock write_lock
|
622
721
|
def read_lock(opts = {}, &block)
|
623
|
-
|
722
|
+
#--{{{
|
624
723
|
opts['read_only'] = true
|
625
724
|
lock opts, &block
|
626
|
-
|
725
|
+
#--}}}
|
627
726
|
end
|
628
727
|
alias rlock read_lock
|
629
|
-
|
728
|
+
#--}}}
|
630
729
|
end # class QDB
|
631
|
-
|
730
|
+
#--}}}
|
632
731
|
end # module RQ
|
633
732
|
$__rq_qdb__ = __FILE__
|
634
733
|
end
|