[
https://issues.apache.org/jira/browse/HBASE-4213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13104280#comment-13104280
]
[email protected] commented on HBASE-4213:
------------------------------------------------------
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/1786/#review1885
-----------------------------------------------------------
/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
<https://reviews.apache.org/r/1786/#comment4337>
coming late to the game on the review here...
but why do we need a separate "instantAdd" boolean. If this feature works,
we should always use it. Otherwise we have to maintain multiple code paths, and
the API is more complicated. Plus, this breaks a public API.
/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
<https://reviews.apache.org/r/1786/#comment4338>
the fact that these two constructors differ only by number of arguments is
quite suspect. Same with the two functions below.
/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
<https://reviews.apache.org/r/1786/#comment4339>
we need to somehow expose this to the user in a way aside from just the
logs. For example, we could make a MonitoredTask for the table operation, and
mark it as failed here.
Ideally it would actually be a response to the original RPC that the user
called in HTableAdmin.
/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
<https://reviews.apache.org/r/1786/#comment4340>
we need some kind of try/finally here. Plus, this can easily race against
other things enabling/disabling the balancer. We need a kind of "balancer
disable stack" so that if multiple operations need to disable the balancer for
a period, they can all work together. Plus, if the balancer is mid-balance,
does balanceSwitch(false) wait for the balance to finish?
/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
<https://reviews.apache.org/r/1786/#comment4341>
definitely need a sleep or yield. Seems like a code smell as well
/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
<https://reviews.apache.org/r/1786/#comment4342>
why not just make this the while condition?
Since ZK is notification-based, can't we wait on this occuring rather than
polling in a loop?
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4343>
!isEmpty() instead of size() comparison
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4344>
what happens if on the reopen, an exception is thrown? does the region get
orphaned? we need some kind of recovery path here.
Example case: what if you alter a table and change compression to a codec
that this RS doesn't have?
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4345>
seems like DEBUG level.
This whole process should be TaskMonitored.
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4351>
this function never returns null. So at call sites, don't check for null -
just adds cruft.
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4346>
thread safety properties here? I'm surprised we don't need any locking. For
example, what happens to regions that are in the process of opening?
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4348>
!isEmpty()
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4349>
DEBUG level
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4350>
DEBUG
/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<https://reviews.apache.org/r/1786/#comment4347>
should be ERROR or at least WARN level.
Need to include the exception traceback.
/src/main/java/org/apache/hadoop/hbase/regionserver/OnlineRegions.java
<https://reviews.apache.org/r/1786/#comment4352>
empty javadoc, plus it doesn't @return anything, it's void
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4353>
this should be registered _before_ the above line, right?
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4354>
if this fails, shouldn't we abort the server or something? We don't want a
half-functional RS running that doesn't respond to schema changes.
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4355>
empty javadoc
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4356>
debug
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4358>
debug
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4359>
why is this the right behavior? could use a comment here, because it seems
wrong.
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4360>
why create and then set data, instead of just creating with the correct
data?
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4357>
rename to "schemaChangeNodeExists" or "doesSchemaChangeNodeExist"
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4361>
dead code
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4362>
would servers ever be null?
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4363>
what would cause this and what are the ramifications?
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4364>
this would be on *any* ZK change anywhere, right? Maybe better to invert
this whole condition and just "return;" if it's for a path you're not
interested in, reducing the nesting level of the function
/src/main/java/org/apache/hadoop/hbase/zookeeper/SchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4365>
this order seems wrong, again
/src/main/java/org/apache/hadoop/hbase/zookeeper/SchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4366>
debug
/src/main/java/org/apache/hadoop/hbase/zookeeper/SchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4367>
again error paths seem suspect
/src/main/java/org/apache/hadoop/hbase/zookeeper/SchemaChangeTracker.java
<https://reviews.apache.org/r/1786/#comment4368>
again: when would these error paths get hit, and what state would we be
left in? needs comments describing why it's safe to ignore the errors
/src/main/ruby/hbase/admin.rb
<https://reviews.apache.org/r/1786/#comment4369>
similar to above, I see no reason to duplicate APIs here... having multiple
alter commands is just going to confuse users and mean we have more code paths
to test
/src/test/java/org/apache/hadoop/hbase/client/TestInstantSchemaChange.java
<https://reviews.apache.org/r/1786/#comment4371>
need test cases covering failure cases. EG modify a column to change the
codec to a random string, or some other modification that will cause an error
on open.
another test case: what if you use the "instant" API while the table is
disabled?
what about while the table is in the process of opening?
/src/test/java/org/apache/hadoop/hbase/client/TestInstantSchemaChange.java
<https://reviews.apache.org/r/1786/#comment4370>
these while conditions should at least yield if not sleep. Plus why not
just put the condition in the while, rather than if/break?
- Todd
On 2011-09-12 18:36:02, Ted Yu wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/1786/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2011-09-12 18:36:02)
bq.
bq.
bq. Review request for hbase.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. From Subbu:
bq. here is the latest patch that support alter_instant, an instant schema
change command that supports (Add, Modify, Delete column and Modify table)
actions through ZK.
bq.
bq. 1. This pattern capitalizes on the fact that HRI's are now in HDFS and
need not be sent over again from Master to RS cloud on every schema change
event.
bq.
bq. 2. Offers real time instant schema change as we bypass the explicit bulk
reassign (unassign + assign) of regions from master to RS.
bq.
bq. 3. Offers fault tolerant schema change support as schema changes now go
through ZK. Secondary master taking over a failed schema change will be
addressed through a separate JIRA.
bq.
bq.
bq. This addresses bug HBASE-4213.
bq. https://issues.apache.org/jira/browse/HBASE-4213
bq.
bq.
bq. Diffs
bq. -----
bq.
bq. /src/main/java/org/apache/hadoop/hbase/avro/AvroServer.java 1169522
bq. /src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java 1169522
bq. /src/main/java/org/apache/hadoop/hbase/executor/EventHandler.java
1169522
bq. /src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java 1169522
bq. /src/main/java/org/apache/hadoop/hbase/master/HMaster.java 1169522
bq. /src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
1169522
bq.
/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
1169522
bq.
/src/main/java/org/apache/hadoop/hbase/master/handler/ModifyTableHandler.java
1169522
bq.
/src/main/java/org/apache/hadoop/hbase/master/handler/TableAddFamilyHandler.java
1169522
bq.
/src/main/java/org/apache/hadoop/hbase/master/handler/TableDeleteFamilyHandler.java
1169522
bq.
/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
1169522
bq.
/src/main/java/org/apache/hadoop/hbase/master/handler/TableModifyFamilyHandler.java
1169522
bq. /src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
1169522
bq. /src/main/java/org/apache/hadoop/hbase/regionserver/OnlineRegions.java
1169522
bq. /src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java 1169522
bq.
/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterSchemaChangeTracker.java
PRE-CREATION
bq.
/src/main/java/org/apache/hadoop/hbase/zookeeper/SchemaChangeTracker.java
PRE-CREATION
bq. /src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
1169522
bq. /src/main/ruby/hbase/admin.rb 1169522
bq. /src/main/ruby/shell.rb 1169522
bq. /src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java 1169522
bq. /src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
1169522
bq.
/src/test/java/org/apache/hadoop/hbase/client/TestInstantSchemaChange.java
PRE-CREATION
bq.
/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
1169522
bq. /src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
1169522
bq.
/src/test/java/org/apache/hadoop/hbase/regionserver/handler/MockRegionServerServices.java
1169522
bq.
bq. Diff: https://reviews.apache.org/r/1786/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq. Unit tests pass.
bq.
bq.
bq. Thanks,
bq.
bq. Ted
bq.
bq.
> Support for fault tolerant, instant schema updates with out master's
> intervention (i.e with out enable/disable and bulk assign/unassign) through
> ZK.
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-4213
> URL: https://issues.apache.org/jira/browse/HBASE-4213
> Project: HBase
> Issue Type: Improvement
> Reporter: Subbu M Iyer
> Assignee: Subbu M Iyer
> Fix For: 0.92.0
>
> Attachments: 4213-Instant_Schema_change_through_ZK.patch,
> 4213-V5-Support_instant_schema_changes_through_ZK.patch,
> 4213-V7-Support_instant_schema_changes_through_ZK.patch,
> 4213-V8-Support_instant_schema_changes_through_ZK.patch, 4213.v6,
> HBASE-4213-Instant_schema_change.patch,
> HBASE-4213_Instant_schema_change_-Version_2_.patch,
> HBASE_Instant_schema_change-version_3_.patch
>
>
> This Jira is a slight variation in approach to what is being done as part of
> https://issues.apache.org/jira/browse/HBASE-1730
> Support instant schema updates such as Modify Table, Add Column, Modify
> Column operations:
> 1. With out enable/disabling the table.
> 2. With out bulk unassign/assign of regions.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira