Skip to content
This repository has been archived by the owner on Aug 31, 2019. It is now read-only.

BeCarefulAboutIoInProviders

Sam Berlin edited this page Jul 10, 2014 · 2 revisions

Be careful about I/O in Providers

The Provider interface is convenient for the caller, but it lacks semantics:

  • Provider doesn't declare checked exceptions. If you're writing code that needs to recover from specific types of failures, you can't catch TransactionRolledbackException. ProvisionException allows you to recover from general provision failures, and you can iterate its causes, but you can't specify what those causes may be.
  • Provider doesn't support a timeout.
  • Provider doesn't define a retry-strategy. When a value is unavailable, calling get() multiple times may cause multiple failed provisions.

ThrowingProviders is a Guice extension that implements an exception-throwing provider. It allows failures to be scoped, so a failed lookup only happens once per request or session.

Clone this wiki locally