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 >> > > > >> > > >> > >>
