Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-31 Thread Ted Yu
In RSRpcServices, this (RSRpcServices) is passed to the create method:
   rpcSchedulerFactory.create(rs.conf, this));

RSRpcServices has reference to HRegionServer.

If RSRpcServices implements Abortable and delegates to regionServer,
RpcSchedulerFactory.create() would obtain the Abortable.

Just my two cents.

On Tue, Dec 30, 2014 at 4:36 PM, Alicia Shu a...@hortonworks.com wrote:

 If we would like to port this change to 0.98, another option is not
 changing RpcSchedulerFactory, but add a SET method for RpcScheduler that
 set the Abortable afterwards. Thus there will be no backward compatible
 issue. New code need to know to call the SET method. Old code will have a
 null abortable.

 Alicia



 On Tue, Dec 30, 2014 at 3:49 PM, James Taylor jamestay...@apache.org
 wrote:

  bq. How many versions of HBase = 0.98.10 do you think would need to
  be binary compatible with 4.2.2?
 
  Good question. Do you have an opinion? We have a compatibility check
  that we do on first connection to a cluster. Perhaps we can add a
  check of Phoenix server version vs HBase server version to detect a
  breakage scenario? In this case, we'd require the server-side
  Phoenix version to be bumped up (maybe do this in 4.4?). We can doc it
  as well, but it's been my experience that folks just don't read this.
 
  So perhaps have the reflection in place in HBase long enough for us to
  get 4.4 out?
 
  Thanks for asking!
 
  James
 
  On Tue, Dec 30, 2014 at 3:36 PM, Andrew Purtell
  andrew.purt...@gmail.com wrote:
   It would be a binary compatibility break unless we detect by reflection
  that it's an older factory missing the new 'create' method and therefore
  call the old one.
  
   We could add that.
  
   How many versions of HBase = 0.98.10 do you think would need to be
  binary compatible with 4.2.2?
  
  
   On Dec 30, 2014, at 3:23 PM, James Taylor jamestay...@apache.org
  wrote:
  
   Would our 4.2.2 binaries continue to work with releases of HBase
   containing this change?
  
  
   On Tue, Dec 30, 2014 at 3:14 PM, Enis Söztutar enis@gmail.com
  wrote:
   Thanks Andrew,
  
   Once HBASE-12028 is committed it should be easy enough to make the
  changes
   in Phoenix to be able to compile with HBase versions pre or post
   HBASE-12028. But we need a PHOENIX issue for that.
  
   We should also make Abortable a LimitedPrivate it seems.
  
   Enis
  
   On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell 
  andrew.purt...@gmail.com
   wrote:
  
   Hi Phoenix,
  
   Please see https://issues.apache.org/jira/browse/HBASE-12028
  
   The proposed change if committed into 0.98 branch would introduce a
  new
   'create' method into the RpcSchedulerFactory interface that receives
  an
   Abortable as an additional parameter. Thus, the factory can pass
 this
  on to
   schedulers and workers and if something terrible happens in or to a
  RPC
   handler they can trigger a server abort. Due to a design oversight
 we
  don't
   otherwise have this capability. In my opinion it is important to fix
  this
   oversight. (Phoenix can also potentially make use of the Abortable
 for
   fatal issues involving indexes.) Otherwise RPC handlers can silently
   terminate upon receiving an unhandled throwable, potentially leaving
  behind
   bad state, certainly impacting performance and availability. However
   because RpcSchedulerFactory is an interface any implementor will not
   compile after this change, until updated.
  
   HBase could include this change in the next 0.98 release or not.
  Please
   advise.
  
  
  
  
 

 --
 CONFIDENTIALITY NOTICE
 NOTICE: This message is intended for the use of the individual or entity to
 which it is addressed and may contain information that is confidential,
 privileged and exempt from disclosure under applicable law. If the reader
 of this message is not the intended recipient, you are hereby notified that
 any printing, copying, dissemination, distribution, disclosure or
 forwarding of this communication is strictly prohibited. If you have
 received this communication in error, please contact the sender immediately
 and delete it from your system. Thank You.



Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread Andrew Purtell
Hi Phoenix,

Please see https://issues.apache.org/jira/browse/HBASE-12028

The proposed change if committed into 0.98 branch would introduce a new 
'create' method into the RpcSchedulerFactory interface that receives an 
Abortable as an additional parameter. Thus, the factory can pass this on to 
schedulers and workers and if something terrible happens in or to a RPC handler 
they can trigger a server abort. Due to a design oversight we don't otherwise 
have this capability. In my opinion it is important to fix this oversight. 
(Phoenix can also potentially make use of the Abortable for fatal issues 
involving indexes.) Otherwise RPC handlers can silently terminate upon 
receiving an unhandled throwable, potentially leaving behind bad state, 
certainly impacting performance and availability. However because 
RpcSchedulerFactory is an interface any implementor will not compile after this 
change, until updated.

HBase could include this change in the next 0.98 release or not. Please advise. 





Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread Enis Söztutar
Thanks Andrew,

Once HBASE-12028 is committed it should be easy enough to make the changes
in Phoenix to be able to compile with HBase versions pre or post
HBASE-12028. But we need a PHOENIX issue for that.

We should also make Abortable a LimitedPrivate it seems.

Enis

On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell andrew.purt...@gmail.com
wrote:

 Hi Phoenix,

 Please see https://issues.apache.org/jira/browse/HBASE-12028

 The proposed change if committed into 0.98 branch would introduce a new
 'create' method into the RpcSchedulerFactory interface that receives an
 Abortable as an additional parameter. Thus, the factory can pass this on to
 schedulers and workers and if something terrible happens in or to a RPC
 handler they can trigger a server abort. Due to a design oversight we don't
 otherwise have this capability. In my opinion it is important to fix this
 oversight. (Phoenix can also potentially make use of the Abortable for
 fatal issues involving indexes.) Otherwise RPC handlers can silently
 terminate upon receiving an unhandled throwable, potentially leaving behind
 bad state, certainly impacting performance and availability. However
 because RpcSchedulerFactory is an interface any implementor will not
 compile after this change, until updated.

 HBase could include this change in the next 0.98 release or not. Please
 advise.






Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread James Taylor
Would our 4.2.2 binaries continue to work with releases of HBase
containing this change?


On Tue, Dec 30, 2014 at 3:14 PM, Enis Söztutar enis@gmail.com wrote:
 Thanks Andrew,

 Once HBASE-12028 is committed it should be easy enough to make the changes
 in Phoenix to be able to compile with HBase versions pre or post
 HBASE-12028. But we need a PHOENIX issue for that.

 We should also make Abortable a LimitedPrivate it seems.

 Enis

 On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell andrew.purt...@gmail.com
 wrote:

 Hi Phoenix,

 Please see https://issues.apache.org/jira/browse/HBASE-12028

 The proposed change if committed into 0.98 branch would introduce a new
 'create' method into the RpcSchedulerFactory interface that receives an
 Abortable as an additional parameter. Thus, the factory can pass this on to
 schedulers and workers and if something terrible happens in or to a RPC
 handler they can trigger a server abort. Due to a design oversight we don't
 otherwise have this capability. In my opinion it is important to fix this
 oversight. (Phoenix can also potentially make use of the Abortable for
 fatal issues involving indexes.) Otherwise RPC handlers can silently
 terminate upon receiving an unhandled throwable, potentially leaving behind
 bad state, certainly impacting performance and availability. However
 because RpcSchedulerFactory is an interface any implementor will not
 compile after this change, until updated.

 HBase could include this change in the next 0.98 release or not. Please
 advise.






Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread Andrew Purtell
It would be a binary compatibility break unless we detect by reflection that 
it's an older factory missing the new 'create' method and therefore call the 
old one.

We could add that. 

How many versions of HBase = 0.98.10 do you think would need to be binary 
compatible with 4.2.2?


 On Dec 30, 2014, at 3:23 PM, James Taylor jamestay...@apache.org wrote:
 
 Would our 4.2.2 binaries continue to work with releases of HBase
 containing this change?
 
 
 On Tue, Dec 30, 2014 at 3:14 PM, Enis Söztutar enis@gmail.com wrote:
 Thanks Andrew,
 
 Once HBASE-12028 is committed it should be easy enough to make the changes
 in Phoenix to be able to compile with HBase versions pre or post
 HBASE-12028. But we need a PHOENIX issue for that.
 
 We should also make Abortable a LimitedPrivate it seems.
 
 Enis
 
 On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell andrew.purt...@gmail.com
 wrote:
 
 Hi Phoenix,
 
 Please see https://issues.apache.org/jira/browse/HBASE-12028
 
 The proposed change if committed into 0.98 branch would introduce a new
 'create' method into the RpcSchedulerFactory interface that receives an
 Abortable as an additional parameter. Thus, the factory can pass this on to
 schedulers and workers and if something terrible happens in or to a RPC
 handler they can trigger a server abort. Due to a design oversight we don't
 otherwise have this capability. In my opinion it is important to fix this
 oversight. (Phoenix can also potentially make use of the Abortable for
 fatal issues involving indexes.) Otherwise RPC handlers can silently
 terminate upon receiving an unhandled throwable, potentially leaving behind
 bad state, certainly impacting performance and availability. However
 because RpcSchedulerFactory is an interface any implementor will not
 compile after this change, until updated.
 
 HBase could include this change in the next 0.98 release or not. Please
 advise.
 
 
 
 


Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread James Taylor
bq. How many versions of HBase = 0.98.10 do you think would need to
be binary compatible with 4.2.2?

Good question. Do you have an opinion? We have a compatibility check
that we do on first connection to a cluster. Perhaps we can add a
check of Phoenix server version vs HBase server version to detect a
breakage scenario? In this case, we'd require the server-side
Phoenix version to be bumped up (maybe do this in 4.4?). We can doc it
as well, but it's been my experience that folks just don't read this.

So perhaps have the reflection in place in HBase long enough for us to
get 4.4 out?

Thanks for asking!

James

On Tue, Dec 30, 2014 at 3:36 PM, Andrew Purtell
andrew.purt...@gmail.com wrote:
 It would be a binary compatibility break unless we detect by reflection that 
 it's an older factory missing the new 'create' method and therefore call the 
 old one.

 We could add that.

 How many versions of HBase = 0.98.10 do you think would need to be binary 
 compatible with 4.2.2?


 On Dec 30, 2014, at 3:23 PM, James Taylor jamestay...@apache.org wrote:

 Would our 4.2.2 binaries continue to work with releases of HBase
 containing this change?


 On Tue, Dec 30, 2014 at 3:14 PM, Enis Söztutar enis@gmail.com wrote:
 Thanks Andrew,

 Once HBASE-12028 is committed it should be easy enough to make the changes
 in Phoenix to be able to compile with HBase versions pre or post
 HBASE-12028. But we need a PHOENIX issue for that.

 We should also make Abortable a LimitedPrivate it seems.

 Enis

 On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell andrew.purt...@gmail.com
 wrote:

 Hi Phoenix,

 Please see https://issues.apache.org/jira/browse/HBASE-12028

 The proposed change if committed into 0.98 branch would introduce a new
 'create' method into the RpcSchedulerFactory interface that receives an
 Abortable as an additional parameter. Thus, the factory can pass this on to
 schedulers and workers and if something terrible happens in or to a RPC
 handler they can trigger a server abort. Due to a design oversight we don't
 otherwise have this capability. In my opinion it is important to fix this
 oversight. (Phoenix can also potentially make use of the Abortable for
 fatal issues involving indexes.) Otherwise RPC handlers can silently
 terminate upon receiving an unhandled throwable, potentially leaving behind
 bad state, certainly impacting performance and availability. However
 because RpcSchedulerFactory is an interface any implementor will not
 compile after this change, until updated.

 HBase could include this change in the next 0.98 release or not. Please
 advise.






Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread Andrew Purtell
Thanks for the feedback James. I filed HBASE-12787 in response.

On Tue, Dec 30, 2014 at 3:49 PM, James Taylor jamestay...@apache.org
wrote:

 bq. How many versions of HBase = 0.98.10 do you think would need to
 be binary compatible with 4.2.2?

 Good question. Do you have an opinion? We have a compatibility check
 that we do on first connection to a cluster. Perhaps we can add a
 check of Phoenix server version vs HBase server version to detect a
 breakage scenario? In this case, we'd require the server-side
 Phoenix version to be bumped up (maybe do this in 4.4?). We can doc it
 as well, but it's been my experience that folks just don't read this.

 So perhaps have the reflection in place in HBase long enough for us to
 get 4.4 out?

 Thanks for asking!

 James

 On Tue, Dec 30, 2014 at 3:36 PM, Andrew Purtell
 andrew.purt...@gmail.com wrote:
  It would be a binary compatibility break unless we detect by reflection
 that it's an older factory missing the new 'create' method and therefore
 call the old one.
 
  We could add that.
 
  How many versions of HBase = 0.98.10 do you think would need to be
 binary compatible with 4.2.2?
 
 
  On Dec 30, 2014, at 3:23 PM, James Taylor jamestay...@apache.org
 wrote:
 
  Would our 4.2.2 binaries continue to work with releases of HBase
  containing this change?
 
 
  On Tue, Dec 30, 2014 at 3:14 PM, Enis Söztutar enis@gmail.com
 wrote:
  Thanks Andrew,
 
  Once HBASE-12028 is committed it should be easy enough to make the
 changes
  in Phoenix to be able to compile with HBase versions pre or post
  HBASE-12028. But we need a PHOENIX issue for that.
 
  We should also make Abortable a LimitedPrivate it seems.
 
  Enis
 
  On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell 
 andrew.purt...@gmail.com
  wrote:
 
  Hi Phoenix,
 
  Please see https://issues.apache.org/jira/browse/HBASE-12028
 
  The proposed change if committed into 0.98 branch would introduce a
 new
  'create' method into the RpcSchedulerFactory interface that receives
 an
  Abortable as an additional parameter. Thus, the factory can pass this
 on to
  schedulers and workers and if something terrible happens in or to a
 RPC
  handler they can trigger a server abort. Due to a design oversight we
 don't
  otherwise have this capability. In my opinion it is important to fix
 this
  oversight. (Phoenix can also potentially make use of the Abortable for
  fatal issues involving indexes.) Otherwise RPC handlers can silently
  terminate upon receiving an unhandled throwable, potentially leaving
 behind
  bad state, certainly impacting performance and availability. However
  because RpcSchedulerFactory is an interface any implementor will not
  compile after this change, until updated.
 
  HBase could include this change in the next 0.98 release or not.
 Please
  advise.
 
 
 
 




-- 
Best regards,

   - Andy

Problems worthy of attack prove their worth by hitting back. - Piet Hein
(via Tom White)


Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread Alicia Shu
If we would like to port this change to 0.98, another option is not
changing RpcSchedulerFactory, but add a SET method for RpcScheduler that
set the Abortable afterwards. Thus there will be no backward compatible
issue. New code need to know to call the SET method. Old code will have a
null abortable.

Alicia



On Tue, Dec 30, 2014 at 3:49 PM, James Taylor jamestay...@apache.org
wrote:

 bq. How many versions of HBase = 0.98.10 do you think would need to
 be binary compatible with 4.2.2?

 Good question. Do you have an opinion? We have a compatibility check
 that we do on first connection to a cluster. Perhaps we can add a
 check of Phoenix server version vs HBase server version to detect a
 breakage scenario? In this case, we'd require the server-side
 Phoenix version to be bumped up (maybe do this in 4.4?). We can doc it
 as well, but it's been my experience that folks just don't read this.

 So perhaps have the reflection in place in HBase long enough for us to
 get 4.4 out?

 Thanks for asking!

 James

 On Tue, Dec 30, 2014 at 3:36 PM, Andrew Purtell
 andrew.purt...@gmail.com wrote:
  It would be a binary compatibility break unless we detect by reflection
 that it's an older factory missing the new 'create' method and therefore
 call the old one.
 
  We could add that.
 
  How many versions of HBase = 0.98.10 do you think would need to be
 binary compatible with 4.2.2?
 
 
  On Dec 30, 2014, at 3:23 PM, James Taylor jamestay...@apache.org
 wrote:
 
  Would our 4.2.2 binaries continue to work with releases of HBase
  containing this change?
 
 
  On Tue, Dec 30, 2014 at 3:14 PM, Enis Söztutar enis@gmail.com
 wrote:
  Thanks Andrew,
 
  Once HBASE-12028 is committed it should be easy enough to make the
 changes
  in Phoenix to be able to compile with HBase versions pre or post
  HBASE-12028. But we need a PHOENIX issue for that.
 
  We should also make Abortable a LimitedPrivate it seems.
 
  Enis
 
  On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell 
 andrew.purt...@gmail.com
  wrote:
 
  Hi Phoenix,
 
  Please see https://issues.apache.org/jira/browse/HBASE-12028
 
  The proposed change if committed into 0.98 branch would introduce a
 new
  'create' method into the RpcSchedulerFactory interface that receives
 an
  Abortable as an additional parameter. Thus, the factory can pass this
 on to
  schedulers and workers and if something terrible happens in or to a
 RPC
  handler they can trigger a server abort. Due to a design oversight we
 don't
  otherwise have this capability. In my opinion it is important to fix
 this
  oversight. (Phoenix can also potentially make use of the Abortable for
  fatal issues involving indexes.) Otherwise RPC handlers can silently
  terminate upon receiving an unhandled throwable, potentially leaving
 behind
  bad state, certainly impacting performance and availability. However
  because RpcSchedulerFactory is an interface any implementor will not
  compile after this change, until updated.
 
  HBase could include this change in the next 0.98 release or not.
 Please
  advise.
 
 
 
 


-- 
CONFIDENTIALITY NOTICE
NOTICE: This message is intended for the use of the individual or entity to 
which it is addressed and may contain information that is confidential, 
privileged and exempt from disclosure under applicable law. If the reader 
of this message is not the intended recipient, you are hereby notified that 
any printing, copying, dissemination, distribution, disclosure or 
forwarding of this communication is strictly prohibited. If you have 
received this communication in error, please contact the sender immediately 
and delete it from your system. Thank You.


Re: Considering a RpcSchedulerFactory change in 0.98 for HBASE-12028

2014-12-30 Thread James Taylor
Thanks, Andrew. I filed PHOENIX-1569 as well.

On Tue, Dec 30, 2014 at 4:34 PM, Andrew Purtell apurt...@apache.org wrote:
 Thanks for the feedback James. I filed HBASE-12787 in response.

 On Tue, Dec 30, 2014 at 3:49 PM, James Taylor jamestay...@apache.org
 wrote:

 bq. How many versions of HBase = 0.98.10 do you think would need to
 be binary compatible with 4.2.2?

 Good question. Do you have an opinion? We have a compatibility check
 that we do on first connection to a cluster. Perhaps we can add a
 check of Phoenix server version vs HBase server version to detect a
 breakage scenario? In this case, we'd require the server-side
 Phoenix version to be bumped up (maybe do this in 4.4?). We can doc it
 as well, but it's been my experience that folks just don't read this.

 So perhaps have the reflection in place in HBase long enough for us to
 get 4.4 out?

 Thanks for asking!

 James

 On Tue, Dec 30, 2014 at 3:36 PM, Andrew Purtell
 andrew.purt...@gmail.com wrote:
  It would be a binary compatibility break unless we detect by reflection
 that it's an older factory missing the new 'create' method and therefore
 call the old one.
 
  We could add that.
 
  How many versions of HBase = 0.98.10 do you think would need to be
 binary compatible with 4.2.2?
 
 
  On Dec 30, 2014, at 3:23 PM, James Taylor jamestay...@apache.org
 wrote:
 
  Would our 4.2.2 binaries continue to work with releases of HBase
  containing this change?
 
 
  On Tue, Dec 30, 2014 at 3:14 PM, Enis Söztutar enis@gmail.com
 wrote:
  Thanks Andrew,
 
  Once HBASE-12028 is committed it should be easy enough to make the
 changes
  in Phoenix to be able to compile with HBase versions pre or post
  HBASE-12028. But we need a PHOENIX issue for that.
 
  We should also make Abortable a LimitedPrivate it seems.
 
  Enis
 
  On Tue, Dec 30, 2014 at 2:49 PM, Andrew Purtell 
 andrew.purt...@gmail.com
  wrote:
 
  Hi Phoenix,
 
  Please see https://issues.apache.org/jira/browse/HBASE-12028
 
  The proposed change if committed into 0.98 branch would introduce a
 new
  'create' method into the RpcSchedulerFactory interface that receives
 an
  Abortable as an additional parameter. Thus, the factory can pass this
 on to
  schedulers and workers and if something terrible happens in or to a
 RPC
  handler they can trigger a server abort. Due to a design oversight we
 don't
  otherwise have this capability. In my opinion it is important to fix
 this
  oversight. (Phoenix can also potentially make use of the Abortable for
  fatal issues involving indexes.) Otherwise RPC handlers can silently
  terminate upon receiving an unhandled throwable, potentially leaving
 behind
  bad state, certainly impacting performance and availability. However
  because RpcSchedulerFactory is an interface any implementor will not
  compile after this change, until updated.
 
  HBase could include this change in the next 0.98 release or not.
 Please
  advise.
 
 
 
 




 --
 Best regards,

- Andy

 Problems worthy of attack prove their worth by hitting back. - Piet Hein
 (via Tom White)