It will be cross server call.. The pre/postModifyColumn is in master
side. (MasterObserver)  You want to write the info to a table means
this will be in some RS.  So an RPC request will be needed. But still
it is not a case like one RS to another RS cross server call where
there is a remote chance of all handlers getting stuck and possible
deadlock.  Need to carefully done though!

-Anoop-

On Wed, Mar 8, 2017 at 8:26 AM, Xi Yang <[email protected]> wrote:
> Got it. I appreciate your help!
>
> 2017-03-07 17:05 GMT-08:00 Ted Yu <[email protected]>:
>
>> It seems the following hook is better for your use case:
>>
>>   default void postModifyColumn(final
>> ObserverContext<MasterCoprocessorEnvironment> ctx,
>>       TableName tableName, HColumnDescriptor columnFamily) throws
>> IOException {}
>>
>> since there is no guarantee that column family is modified at
>> time preModifyColumnFamily() is called.
>>
>> Cheers
>>
>> On Tue, Mar 7, 2017 at 4:43 PM, Xi Yang <[email protected]> wrote:
>>
>> > Requirement:
>> >
>> > I want to record every change of modify columnFamily by using
>> > preModifyColumnFamily().
>> > Now I have a table "my_ddl_log" which used to record the change of
>> > columnFamily. For example:
>> >
>> > If jack change the TTL of columnFamily "primary" in table "employee".
>> Then
>> > we should add a put to "my_ddl_log" like this record:
>> > log:name= 'jack'
>> > log:updateTime= '2017-03-07 12:12 GMT-08:00'
>> > log:change= ''Change TTL of Table: employee ColumnFamily: primary'
>> >
>> > I try to use preModifyColumnFamily to do this stuff.
>> >
>> > Thanks,
>> > Alex
>> >
>> >
>> > 2017-03-07 12:12 GMT-08:00 Ted Yu <[email protected]>:
>> >
>> > > Describing your use case would allow people to give better answer.
>> > >
>> > > What kind of data do you write to other table in
>> preModifyColumnFamily()
>> > ?
>> > >
>> > > Cross server call within observer is not good idea.
>> > >
>> > > Take a look at ConnectionUtils.createShortCircuitConnection().
>> > >
>> > > Cheers
>> > >
>> > > On Tue, Mar 7, 2017 at 11:42 AM, Xi Yang <[email protected]>
>> wrote:
>> > >
>> > > >     All the articles I've ever seen are talking about add increment
>> or
>> > > > change put/get status or pinrt out logs. what if I want to write some
>> > > data
>> > > > to another table in Observer? For
>> > > > example, MasterObserver.preModifyColumnFamily()? Seems Observer is
>> > > runing
>> > > > at server side, so use connection is unneccessary and might raise
>> some
>> > > > problem.
>> > > >    I know this might be a stupid question, so if you can just give
>> some
>> > > > links let me to learn without explain in email, I will be grateful to
>> > you
>> > > > for your help
>> > > >
>> > > > Thanks,
>> > > > Alex
>> > > >
>> > >
>> >
>>

Reply via email to