Re: [pool] Resilience against factory outages (POOL-407)

2024-05-31 Thread Gary Gregory
No need to apologize  We all have complex system to deal with all over
the place.

Gary

On Fri, May 31, 2024, 5:55 PM Phil Steitz  wrote:

> Thx and sorry.
>
> Phil
>
> On Fri, May 31, 2024 at 1:45 PM Gary D. Gregory 
> wrote:
>
> > Hello Phil,
> >
> > Before you push, run 'mvn' (buy itself), this runs the default goal,
> which
> > contains all build checks.
> >
> > If see the code coverage report, regardless of coverage failures, run:
> >
> > mvn clean site -Dcommons.jacoco.haltOnFailure=false
> >
> > I'll update the readme...
> >
> > TY,
> > Gary
> >
> > On 2024/05/31 20:12:09 Phil Steitz wrote:
> > > The build worked locally for me fine.  I could not get the site to
> build.
> > > Is there some sequence that I need to use to get the site to build?  I
> > did
> > > run Checksytle and Findbugs separately.  What is the test coverage
> plugin
> > > and how do I run that?
> > >
> > > Phil
> > >
> > > On Fri, May 31, 2024 at 11:53 AM Gary Gregory 
> > > wrote:
> > >
> > > > Hi Phil,
> > > >
> > > > Thank you for the note. I'll try to take a look soon.
> > > >
> > > > The new code causes the build to fail as it looks like not all of it
> is
> > > > covered by unit tests.
> > > >
> > > > Gary
> > > >
> > > >
> > > > On Fri, May 31, 2024, 2:29 PM Phil Steitz 
> > wrote:
> > > >
> > > > > I just committed  a first attempt at providing the above, intended
> > as a
> > > > fix
> > > > > for POOL-407 and a lot of similar issues reported over the years.
> > The
> > > > > scenario in POOL-407 is common when resource providers (like
> > databases)
> > > > go
> > > > > down:
> > > > >
> > > > > 1. makeObject requests start to fail and threads line up waiting on
> > the
> > > > > deque.
> > > > > 2. The provider comes back up so makes will succeed again, but the
> > > > clients,
> > > > > the pool and the factory are all ignorant of this fact, so no
> > clients get
> > > > > served.
> > > > >
> > > > > What I just committed puts the resilience responsibility on the
> > factory,
> > > > > having it monitor itself.  That responsibility could arguably be
> put
> > > > > instead on the pool.
> > > > >
> > > > > To use the feature as is, you need to create a
> > > > ResilientPooledObjectFactory
> > > > > wrapping a PooledObjectFactory, configure it, attach it to its pool
> > and
> > > > > start its monitor.  The formerly disabled GOP test,
> > > > > testLivenessOnTransientFactoryFailure, shows how to do it.  The
> > setup is
> > > > a
> > > > > little awkward.  I would appreciate feedback on the following
> > options for
> > > > > how to improve it (or any other comments on the code):
> > > > >
> > > > > 0) Roll it back and come up with something better
> > > > > 1) Leave as is
> > > > > 2) add a GOP config that results in its factory being wrapped
> > > > automatically
> > > > > in a RPOF.
> > > > > 3) move the functionality into the pool
> > > > >
> > > > > The other thing that needs to be designed is how to make the
> > proactive
> > > > make
> > > > > attempt strategy configurable.  It is hard-coded now in the RPOF
> > > > runChecks
> > > > > and the Adder inner class.  The initial implementation is
> primitive:
> > > > > Monitor the makeObject log.  Any failure triggers start of an Adder
> > that
> > > > > tries addObject with configurable delay and (hard-coded) max
> > failures.
> > > > > Once the circular log becomes filled with successes, turn the adder
> > off.
> > > > >
> > > > > Also, RPOF spawns a monitoring thread and, when it detects a
> > transient
> > > > > failure, an adder thread.  Careful review - and improvement - of
> the
> > > > > management of these threads would be appreciated.  I tried to make
> > sure,
> > > > > and added tests to confirm, that closing the pool kills these
> > threads.
> > > > >
> > > > > Phil
> > > > >
> > > >
> > >
> >
> > -
> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > For additional commands, e-mail: dev-h...@commons.apache.org
> >
> >
>


Re: [pool] Resilience against factory outages (POOL-407)

2024-05-31 Thread Phil Steitz
Thx and sorry.

Phil

On Fri, May 31, 2024 at 1:45 PM Gary D. Gregory  wrote:

> Hello Phil,
>
> Before you push, run 'mvn' (buy itself), this runs the default goal, which
> contains all build checks.
>
> If see the code coverage report, regardless of coverage failures, run:
>
> mvn clean site -Dcommons.jacoco.haltOnFailure=false
>
> I'll update the readme...
>
> TY,
> Gary
>
> On 2024/05/31 20:12:09 Phil Steitz wrote:
> > The build worked locally for me fine.  I could not get the site to build.
> > Is there some sequence that I need to use to get the site to build?  I
> did
> > run Checksytle and Findbugs separately.  What is the test coverage plugin
> > and how do I run that?
> >
> > Phil
> >
> > On Fri, May 31, 2024 at 11:53 AM Gary Gregory 
> > wrote:
> >
> > > Hi Phil,
> > >
> > > Thank you for the note. I'll try to take a look soon.
> > >
> > > The new code causes the build to fail as it looks like not all of it is
> > > covered by unit tests.
> > >
> > > Gary
> > >
> > >
> > > On Fri, May 31, 2024, 2:29 PM Phil Steitz 
> wrote:
> > >
> > > > I just committed  a first attempt at providing the above, intended
> as a
> > > fix
> > > > for POOL-407 and a lot of similar issues reported over the years.
> The
> > > > scenario in POOL-407 is common when resource providers (like
> databases)
> > > go
> > > > down:
> > > >
> > > > 1. makeObject requests start to fail and threads line up waiting on
> the
> > > > deque.
> > > > 2. The provider comes back up so makes will succeed again, but the
> > > clients,
> > > > the pool and the factory are all ignorant of this fact, so no
> clients get
> > > > served.
> > > >
> > > > What I just committed puts the resilience responsibility on the
> factory,
> > > > having it monitor itself.  That responsibility could arguably be put
> > > > instead on the pool.
> > > >
> > > > To use the feature as is, you need to create a
> > > ResilientPooledObjectFactory
> > > > wrapping a PooledObjectFactory, configure it, attach it to its pool
> and
> > > > start its monitor.  The formerly disabled GOP test,
> > > > testLivenessOnTransientFactoryFailure, shows how to do it.  The
> setup is
> > > a
> > > > little awkward.  I would appreciate feedback on the following
> options for
> > > > how to improve it (or any other comments on the code):
> > > >
> > > > 0) Roll it back and come up with something better
> > > > 1) Leave as is
> > > > 2) add a GOP config that results in its factory being wrapped
> > > automatically
> > > > in a RPOF.
> > > > 3) move the functionality into the pool
> > > >
> > > > The other thing that needs to be designed is how to make the
> proactive
> > > make
> > > > attempt strategy configurable.  It is hard-coded now in the RPOF
> > > runChecks
> > > > and the Adder inner class.  The initial implementation is primitive:
> > > > Monitor the makeObject log.  Any failure triggers start of an Adder
> that
> > > > tries addObject with configurable delay and (hard-coded) max
> failures.
> > > > Once the circular log becomes filled with successes, turn the adder
> off.
> > > >
> > > > Also, RPOF spawns a monitoring thread and, when it detects a
> transient
> > > > failure, an adder thread.  Careful review - and improvement - of the
> > > > management of these threads would be appreciated.  I tried to make
> sure,
> > > > and added tests to confirm, that closing the pool kills these
> threads.
> > > >
> > > > Phil
> > > >
> > >
> >
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


Re: [pool] Resilience against factory outages (POOL-407)

2024-05-31 Thread Gary D. Gregory
I updated the README's "Contributing" sections with:

+ Before you pushing a PR, run `mvn` (by itself), this runs the default goal, 
which contains all build checks.
+ To see the code coverage report, regardless of coverage failures, run `mvn 
clean site -Dcommons.jacoco.haltOnFailure=false`

This change will eventually make it other README files.

TY,
Gary

On 2024/05/31 20:44:51 "Gary D. Gregory" wrote:
> Hello Phil,
> 
> Before you push, run 'mvn' (buy itself), this runs the default goal, which 
> contains all build checks.
> 
> If see the code coverage report, regardless of coverage failures, run:
> 
> mvn clean site -Dcommons.jacoco.haltOnFailure=false
> 
> I'll update the readme...
> 
> TY,
> Gary
> 
> On 2024/05/31 20:12:09 Phil Steitz wrote:
> > The build worked locally for me fine.  I could not get the site to build.
> > Is there some sequence that I need to use to get the site to build?  I did
> > run Checksytle and Findbugs separately.  What is the test coverage plugin
> > and how do I run that?
> > 
> > Phil
> > 
> > On Fri, May 31, 2024 at 11:53 AM Gary Gregory 
> > wrote:
> > 
> > > Hi Phil,
> > >
> > > Thank you for the note. I'll try to take a look soon.
> > >
> > > The new code causes the build to fail as it looks like not all of it is
> > > covered by unit tests.
> > >
> > > Gary
> > >
> > >
> > > On Fri, May 31, 2024, 2:29 PM Phil Steitz  wrote:
> > >
> > > > I just committed  a first attempt at providing the above, intended as a
> > > fix
> > > > for POOL-407 and a lot of similar issues reported over the years.  The
> > > > scenario in POOL-407 is common when resource providers (like databases)
> > > go
> > > > down:
> > > >
> > > > 1. makeObject requests start to fail and threads line up waiting on the
> > > > deque.
> > > > 2. The provider comes back up so makes will succeed again, but the
> > > clients,
> > > > the pool and the factory are all ignorant of this fact, so no clients 
> > > > get
> > > > served.
> > > >
> > > > What I just committed puts the resilience responsibility on the factory,
> > > > having it monitor itself.  That responsibility could arguably be put
> > > > instead on the pool.
> > > >
> > > > To use the feature as is, you need to create a
> > > ResilientPooledObjectFactory
> > > > wrapping a PooledObjectFactory, configure it, attach it to its pool and
> > > > start its monitor.  The formerly disabled GOP test,
> > > > testLivenessOnTransientFactoryFailure, shows how to do it.  The setup is
> > > a
> > > > little awkward.  I would appreciate feedback on the following options 
> > > > for
> > > > how to improve it (or any other comments on the code):
> > > >
> > > > 0) Roll it back and come up with something better
> > > > 1) Leave as is
> > > > 2) add a GOP config that results in its factory being wrapped
> > > automatically
> > > > in a RPOF.
> > > > 3) move the functionality into the pool
> > > >
> > > > The other thing that needs to be designed is how to make the proactive
> > > make
> > > > attempt strategy configurable.  It is hard-coded now in the RPOF
> > > runChecks
> > > > and the Adder inner class.  The initial implementation is primitive:
> > > > Monitor the makeObject log.  Any failure triggers start of an Adder that
> > > > tries addObject with configurable delay and (hard-coded) max failures.
> > > > Once the circular log becomes filled with successes, turn the adder off.
> > > >
> > > > Also, RPOF spawns a monitoring thread and, when it detects a transient
> > > > failure, an adder thread.  Careful review - and improvement - of the
> > > > management of these threads would be appreciated.  I tried to make sure,
> > > > and added tests to confirm, that closing the pool kills these threads.
> > > >
> > > > Phil
> > > >
> > >
> > 
> 
> -
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
> 
> 

-
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



Re: [pool] Resilience against factory outages (POOL-407)

2024-05-31 Thread Gary D. Gregory
Hello Phil,

Before you push, run 'mvn' (buy itself), this runs the default goal, which 
contains all build checks.

If see the code coverage report, regardless of coverage failures, run:

mvn clean site -Dcommons.jacoco.haltOnFailure=false

I'll update the readme...

TY,
Gary

On 2024/05/31 20:12:09 Phil Steitz wrote:
> The build worked locally for me fine.  I could not get the site to build.
> Is there some sequence that I need to use to get the site to build?  I did
> run Checksytle and Findbugs separately.  What is the test coverage plugin
> and how do I run that?
> 
> Phil
> 
> On Fri, May 31, 2024 at 11:53 AM Gary Gregory 
> wrote:
> 
> > Hi Phil,
> >
> > Thank you for the note. I'll try to take a look soon.
> >
> > The new code causes the build to fail as it looks like not all of it is
> > covered by unit tests.
> >
> > Gary
> >
> >
> > On Fri, May 31, 2024, 2:29 PM Phil Steitz  wrote:
> >
> > > I just committed  a first attempt at providing the above, intended as a
> > fix
> > > for POOL-407 and a lot of similar issues reported over the years.  The
> > > scenario in POOL-407 is common when resource providers (like databases)
> > go
> > > down:
> > >
> > > 1. makeObject requests start to fail and threads line up waiting on the
> > > deque.
> > > 2. The provider comes back up so makes will succeed again, but the
> > clients,
> > > the pool and the factory are all ignorant of this fact, so no clients get
> > > served.
> > >
> > > What I just committed puts the resilience responsibility on the factory,
> > > having it monitor itself.  That responsibility could arguably be put
> > > instead on the pool.
> > >
> > > To use the feature as is, you need to create a
> > ResilientPooledObjectFactory
> > > wrapping a PooledObjectFactory, configure it, attach it to its pool and
> > > start its monitor.  The formerly disabled GOP test,
> > > testLivenessOnTransientFactoryFailure, shows how to do it.  The setup is
> > a
> > > little awkward.  I would appreciate feedback on the following options for
> > > how to improve it (or any other comments on the code):
> > >
> > > 0) Roll it back and come up with something better
> > > 1) Leave as is
> > > 2) add a GOP config that results in its factory being wrapped
> > automatically
> > > in a RPOF.
> > > 3) move the functionality into the pool
> > >
> > > The other thing that needs to be designed is how to make the proactive
> > make
> > > attempt strategy configurable.  It is hard-coded now in the RPOF
> > runChecks
> > > and the Adder inner class.  The initial implementation is primitive:
> > > Monitor the makeObject log.  Any failure triggers start of an Adder that
> > > tries addObject with configurable delay and (hard-coded) max failures.
> > > Once the circular log becomes filled with successes, turn the adder off.
> > >
> > > Also, RPOF spawns a monitoring thread and, when it detects a transient
> > > failure, an adder thread.  Careful review - and improvement - of the
> > > management of these threads would be appreciated.  I tried to make sure,
> > > and added tests to confirm, that closing the pool kills these threads.
> > >
> > > Phil
> > >
> >
> 

-
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



Re: [pool] Resilience against factory outages (POOL-407)

2024-05-31 Thread Phil Steitz
The build worked locally for me fine.  I could not get the site to build.
Is there some sequence that I need to use to get the site to build?  I did
run Checksytle and Findbugs separately.  What is the test coverage plugin
and how do I run that?

Phil

On Fri, May 31, 2024 at 11:53 AM Gary Gregory 
wrote:

> Hi Phil,
>
> Thank you for the note. I'll try to take a look soon.
>
> The new code causes the build to fail as it looks like not all of it is
> covered by unit tests.
>
> Gary
>
>
> On Fri, May 31, 2024, 2:29 PM Phil Steitz  wrote:
>
> > I just committed  a first attempt at providing the above, intended as a
> fix
> > for POOL-407 and a lot of similar issues reported over the years.  The
> > scenario in POOL-407 is common when resource providers (like databases)
> go
> > down:
> >
> > 1. makeObject requests start to fail and threads line up waiting on the
> > deque.
> > 2. The provider comes back up so makes will succeed again, but the
> clients,
> > the pool and the factory are all ignorant of this fact, so no clients get
> > served.
> >
> > What I just committed puts the resilience responsibility on the factory,
> > having it monitor itself.  That responsibility could arguably be put
> > instead on the pool.
> >
> > To use the feature as is, you need to create a
> ResilientPooledObjectFactory
> > wrapping a PooledObjectFactory, configure it, attach it to its pool and
> > start its monitor.  The formerly disabled GOP test,
> > testLivenessOnTransientFactoryFailure, shows how to do it.  The setup is
> a
> > little awkward.  I would appreciate feedback on the following options for
> > how to improve it (or any other comments on the code):
> >
> > 0) Roll it back and come up with something better
> > 1) Leave as is
> > 2) add a GOP config that results in its factory being wrapped
> automatically
> > in a RPOF.
> > 3) move the functionality into the pool
> >
> > The other thing that needs to be designed is how to make the proactive
> make
> > attempt strategy configurable.  It is hard-coded now in the RPOF
> runChecks
> > and the Adder inner class.  The initial implementation is primitive:
> > Monitor the makeObject log.  Any failure triggers start of an Adder that
> > tries addObject with configurable delay and (hard-coded) max failures.
> > Once the circular log becomes filled with successes, turn the adder off.
> >
> > Also, RPOF spawns a monitoring thread and, when it detects a transient
> > failure, an adder thread.  Careful review - and improvement - of the
> > management of these threads would be appreciated.  I tried to make sure,
> > and added tests to confirm, that closing the pool kills these threads.
> >
> > Phil
> >
>


Re: [pool] Resilience against factory outages (POOL-407)

2024-05-31 Thread Gary Gregory
Hi Phil,

Thank you for the note. I'll try to take a look soon.

The new code causes the build to fail as it looks like not all of it is
covered by unit tests.

Gary


On Fri, May 31, 2024, 2:29 PM Phil Steitz  wrote:

> I just committed  a first attempt at providing the above, intended as a fix
> for POOL-407 and a lot of similar issues reported over the years.  The
> scenario in POOL-407 is common when resource providers (like databases) go
> down:
>
> 1. makeObject requests start to fail and threads line up waiting on the
> deque.
> 2. The provider comes back up so makes will succeed again, but the clients,
> the pool and the factory are all ignorant of this fact, so no clients get
> served.
>
> What I just committed puts the resilience responsibility on the factory,
> having it monitor itself.  That responsibility could arguably be put
> instead on the pool.
>
> To use the feature as is, you need to create a ResilientPooledObjectFactory
> wrapping a PooledObjectFactory, configure it, attach it to its pool and
> start its monitor.  The formerly disabled GOP test,
> testLivenessOnTransientFactoryFailure, shows how to do it.  The setup is a
> little awkward.  I would appreciate feedback on the following options for
> how to improve it (or any other comments on the code):
>
> 0) Roll it back and come up with something better
> 1) Leave as is
> 2) add a GOP config that results in its factory being wrapped automatically
> in a RPOF.
> 3) move the functionality into the pool
>
> The other thing that needs to be designed is how to make the proactive make
> attempt strategy configurable.  It is hard-coded now in the RPOF runChecks
> and the Adder inner class.  The initial implementation is primitive:
> Monitor the makeObject log.  Any failure triggers start of an Adder that
> tries addObject with configurable delay and (hard-coded) max failures.
> Once the circular log becomes filled with successes, turn the adder off.
>
> Also, RPOF spawns a monitoring thread and, when it detects a transient
> failure, an adder thread.  Careful review - and improvement - of the
> management of these threads would be appreciated.  I tried to make sure,
> and added tests to confirm, that closing the pool kills these threads.
>
> Phil
>


[pool] Resilience against factory outages (POOL-407)

2024-05-31 Thread Phil Steitz
I just committed  a first attempt at providing the above, intended as a fix
for POOL-407 and a lot of similar issues reported over the years.  The
scenario in POOL-407 is common when resource providers (like databases) go
down:

1. makeObject requests start to fail and threads line up waiting on the
deque.
2. The provider comes back up so makes will succeed again, but the clients,
the pool and the factory are all ignorant of this fact, so no clients get
served.

What I just committed puts the resilience responsibility on the factory,
having it monitor itself.  That responsibility could arguably be put
instead on the pool.

To use the feature as is, you need to create a ResilientPooledObjectFactory
wrapping a PooledObjectFactory, configure it, attach it to its pool and
start its monitor.  The formerly disabled GOP test,
testLivenessOnTransientFactoryFailure, shows how to do it.  The setup is a
little awkward.  I would appreciate feedback on the following options for
how to improve it (or any other comments on the code):

0) Roll it back and come up with something better
1) Leave as is
2) add a GOP config that results in its factory being wrapped automatically
in a RPOF.
3) move the functionality into the pool

The other thing that needs to be designed is how to make the proactive make
attempt strategy configurable.  It is hard-coded now in the RPOF runChecks
and the Adder inner class.  The initial implementation is primitive:
Monitor the makeObject log.  Any failure triggers start of an Adder that
tries addObject with configurable delay and (hard-coded) max failures.
Once the circular log becomes filled with successes, turn the adder off.

Also, RPOF spawns a monitoring thread and, when it detects a transient
failure, an adder thread.  Careful review - and improvement - of the
management of these threads would be appreciated.  I tried to make sure,
and added tests to confirm, that closing the pool kills these threads.

Phil