rq 0.1.7 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|