NAME

Starch::Plugin::TimeoutStore - Throw an exception if store access surpasses a timeout.

SYNOPSIS

    my $starch = Starch->new(
        plugins => ['::TimeoutStore'],
        store => {
            class => '::Memory',
            timeout => 0.1, # 1/10th of a second
        },
        ...,
    );

DESCRIPTION

This plugin causes all calls to set, get, and remove to throw an exception if they surpass a timeout period.

The timeout is implemented using Sys::SigAction.

Note that some stores implement timeouts themselves and their native may be better than this naive implementation.

The whole point of detecting timeouts is so that you can still serve a web page even if the underlying store backend is failing, so using this plugin with Starch::Plugin::LogStoreExceptions is probably a good idea.

OPTIONAL STORE ARGUMENTS

These arguments are added to classes which consume the Starch::Store role.

timeout

How many seconds to timeout. Fractional seconds may be passed, but may not be supported on all systems (see "ABSTRACT" in Sys::SigAction). Set to 0 to disable timeout checking. Defaults to 0.

AUTHORS

    Aran Clary Deltac <bluefeet@gmail.com>

ACKNOWLEDGEMENTS

Thanks to ZipRecruiter for encouraging their employees to contribute back to the open source ecosystem. Without their dedication to quality software development this distribution would not exist.

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.