… | |
… | |
25 | use strict; |
25 | use strict; |
26 | |
26 | |
27 | use Symbol; |
27 | use Symbol; |
28 | use List::Util; |
28 | use List::Util; |
29 | use Socket; |
29 | use Socket; |
30 | use EV 3.2; |
30 | use EV; |
31 | use Opcode; |
31 | use Opcode; |
32 | use Safe; |
32 | use Safe; |
33 | use Safe::Hole; |
33 | use Safe::Hole; |
34 | use Storable (); |
34 | use Storable (); |
35 | |
35 | |
36 | use Coro 4.50 (); |
36 | use Coro (); |
37 | use Coro::State; |
37 | use Coro::State; |
38 | use Coro::Handle; |
38 | use Coro::Handle; |
39 | use Coro::EV; |
39 | use Coro::EV; |
40 | use Coro::Timer; |
40 | use Coro::Timer; |
41 | use Coro::Signal; |
41 | use Coro::Signal; |
42 | use Coro::Semaphore; |
42 | use Coro::Semaphore; |
|
|
43 | use Coro::AnyEvent; |
43 | use Coro::AIO; |
44 | use Coro::AIO; |
44 | use Coro::BDB; |
45 | use Coro::BDB; |
45 | use Coro::Storable; |
46 | use Coro::Storable; |
46 | use Coro::Util (); |
47 | use Coro::Util (); |
47 | |
48 | |
… | |
… | |
49 | use BDB (); |
50 | use BDB (); |
50 | use Data::Dumper; |
51 | use Data::Dumper; |
51 | use Digest::MD5; |
52 | use Digest::MD5; |
52 | use Fcntl; |
53 | use Fcntl; |
53 | use YAML (); |
54 | use YAML (); |
54 | use IO::AIO 2.51 (); |
55 | use IO::AIO (); |
55 | use Time::HiRes; |
56 | use Time::HiRes; |
56 | use Compress::LZF; |
57 | use Compress::LZF; |
57 | use Digest::MD5 (); |
58 | use Digest::MD5 (); |
|
|
59 | |
|
|
60 | AnyEvent::detect; |
58 | |
61 | |
59 | # configure various modules to our taste |
62 | # configure various modules to our taste |
60 | # |
63 | # |
61 | $Storable::canonical = 1; # reduce rsync transfers |
64 | $Storable::canonical = 1; # reduce rsync transfers |
62 | Coro::State::cctx_stacksize 256000; # 1-2MB stack, for deep recursions in maze generator |
65 | Coro::State::cctx_stacksize 256000; # 1-2MB stack, for deep recursions in maze generator |
… | |
… | |
90 | our $RANDOMDIR = "$LOCALDIR/random"; |
93 | our $RANDOMDIR = "$LOCALDIR/random"; |
91 | our $BDBDIR = "$LOCALDIR/db"; |
94 | our $BDBDIR = "$LOCALDIR/db"; |
92 | our %RESOURCE; |
95 | our %RESOURCE; |
93 | |
96 | |
94 | our $TICK = MAX_TIME * 1e-6; # this is a CONSTANT(!) |
97 | our $TICK = MAX_TIME * 1e-6; # this is a CONSTANT(!) |
95 | our $AIO_POLL_WATCHER; |
|
|
96 | our $NEXT_RUNTIME_WRITE; # when should the runtime file be written |
98 | our $NEXT_RUNTIME_WRITE; # when should the runtime file be written |
97 | our $NEXT_TICK; |
99 | our $NEXT_TICK; |
98 | our $USE_FSYNC = 1; # use fsync to write maps - default off |
100 | our $USE_FSYNC = 1; # use fsync to write maps - default off |
99 | |
101 | |
100 | our $BDB_POLL_WATCHER; |
|
|
101 | our $BDB_DEADLOCK_WATCHER; |
102 | our $BDB_DEADLOCK_WATCHER; |
102 | our $BDB_CHECKPOINT_WATCHER; |
103 | our $BDB_CHECKPOINT_WATCHER; |
103 | our $BDB_TRICKLE_WATCHER; |
104 | our $BDB_TRICKLE_WATCHER; |
104 | our $DB_ENV; |
105 | our $DB_ENV; |
105 | |
106 | |
… | |
… | |
3787 | { |
3788 | { |
3788 | # configure BDB |
3789 | # configure BDB |
3789 | |
3790 | |
3790 | BDB::min_parallel 8; |
3791 | BDB::min_parallel 8; |
3791 | BDB::max_poll_reqs $TICK * 0.1; |
3792 | BDB::max_poll_reqs $TICK * 0.1; |
3792 | $Coro::BDB::WATCHER->priority (1); |
3793 | $AnyEvent::BDB::WATCHER->priority (1); |
3793 | |
3794 | |
3794 | unless ($DB_ENV) { |
3795 | unless ($DB_ENV) { |
3795 | $DB_ENV = BDB::db_env_create; |
3796 | $DB_ENV = BDB::db_env_create; |
3796 | $DB_ENV->set_flags (BDB::AUTO_COMMIT | BDB::REGION_INIT | BDB::TXN_NOSYNC |
3797 | $DB_ENV->set_flags (BDB::AUTO_COMMIT | BDB::REGION_INIT | BDB::TXN_NOSYNC |
3797 | | BDB::LOG_AUTOREMOVE, 1); |
3798 | | BDB::LOG_AUTOREMOVE, 1); |
… | |
… | |
3828 | { |
3829 | { |
3829 | # configure IO::AIO |
3830 | # configure IO::AIO |
3830 | |
3831 | |
3831 | IO::AIO::min_parallel 8; |
3832 | IO::AIO::min_parallel 8; |
3832 | IO::AIO::max_poll_time $TICK * 0.1; |
3833 | IO::AIO::max_poll_time $TICK * 0.1; |
3833 | $Coro::AIO::WATCHER->priority (1); |
3834 | $AnyEvent::AIO::WATCHER->priority (1); |
3834 | } |
3835 | } |
3835 | |
3836 | |
3836 | my $_log_backtrace; |
3837 | my $_log_backtrace; |
3837 | |
3838 | |
3838 | sub _log_backtrace { |
3839 | sub _log_backtrace { |