IPC::DirQueue 0.06 released

[email protected] ((Justin Mason)) Mon, 09 Jan 2006 18:44:59 -0800
Newsgroups perl.ipc.dirqueue
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


hey all --

I've just uploaded v0.06 of IPC::DirQueue.  This has a few interesting
changes; lemme quote CHANGES on the big ones:

  - API CHANGE: invalid metadata in an enqueued job will now causes die()
    to be called, instead of silent ignore.

  - add dq-indexd, an optional, experimental central server to maintain DQ
    indexes, instead of using readdir() filesystem APIs.  It requires POE

  - fix race condition in wait_for_queued_job() that can result in missing
    jobs enqueued inside the same 1-second window.  This would only
    manifest if no further files were enqueued to the same dir.

  - make the 600-second active-lock timeout configurable; document it
    better; and reconcile code behaviour with what the documentation
    says it does re behaviour when a stale lock occurs on a task
    supposedly active on a remote system.  (The code was changed to
    match the documentation.)

  - fixed a long-running bug; left-over control files in 'active'.   Turns
    out these were a side effect of qproc A completing a task before qproc
    B even started creating a lockfile; in that case, qproc B would get a
    lock on the now-complete task, then find that the queue control file
    was nonexistent and give up, attempting to remove the 'active' file,
    but instead unlinking the now-already-unlinked temporary filename, and
    leaving the real 'active' file behind.  Totally harmless, fixed
    anyway.

  - support Reiserfs and XFS queue dirs, which do not update directory
    mtimes when a file is creating within them.

  - patch from Anton Berezin <tobez.at.tobez.org>: return reference of
    sorted files list internally, and use built-in sort instead of a {
    $a cmp $b } callback.  Both are good for speed of ordered
    dequeuing


It's filtering through CPAN now.   I wouldn't recommend using dq-indexd
for anything serious just yet -- it's still experimental! -- but the
rest of those features are solid, and the fix for the "leftover control
files" bug is welcome. ;)

for what it's worth, here's some dq-indexd benchmarks from a mixed
ethernet/wireless (home) network, in case you all are curious ;) --

LOCAL TIMINGS:

  85changing_indexd.t
  real    0m53.525s user    0m5.228s sys     0m0.446s
  real    0m53.452s user    0m5.113s sys     0m0.536s
  real    0m53.437s user    0m5.411s sys     0m0.454s

  85changing_ordered.t
  real    0m52.359s user    0m0.350s sys     0m0.121s
  real    0m52.432s user    0m0.352s sys     0m0.104s
  real    0m51.588s user    0m0.256s sys     0m0.077s

  85changing_basic.t
  real    0m52.314s user    0m0.143s sys     0m0.043s
  real    0m51.337s user    0m0.346s sys     0m0.106s
  real    0m52.480s user    0m0.345s sys     0m0.122s


REMOTE TIMINGS:

  85changing_indexd.t
  real    3m07.718s user    0m3.191s sys     0m1.065s
  real    3m06.452s user    0m3.881s sys     0m1.324s
  real    3m09.563s user    0m3.532s sys     0m1.244s

  85changing_ordered.t
  real    3m21.705s user    0m0.646s sys     0m0.836s
  real    3m31.031s user    0m0.630s sys     0m1.002s
  real    3m26.674s user    0m0.645s sys     0m1.027s

  85changing_basic.t
  real    3m46.062s user    0m0.585s sys     0m0.764s
  real    3m40.202s user    0m0.465s sys     0m0.609s
  real    3m49.065s user    0m0.558s sys     0m0.854s


cheers,

- --j.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Exmh CVS

iD8DBQFDwx+rMJF5cimLx9ARAkphAJ4xSceOTjc/6q55vlrgvXCt0EKOrACfXYXk
inMnkoDQb2XRo7k7m6XrGfw=
=TGm3
-----END PGP SIGNATURE-----