Your prePut would write to a different column in the table, right ? Otherwise do you prevent normal writes from getting into the same column(s) ?
If your prePut writes to dedicated column(s), you can check the presence of such column(s) so that the call is not infinite. Cheers On Mon, Jan 22, 2018 at 8:56 PM, Yang Zhang <zhang.yang...@gmail.com> wrote: > Yes, It is the same table. > > 2018-01-23 1:46 GMT+08:00 Ted Yu <yuzhih...@gmail.com>: > > > Can you clarify your use case ? > > > > bq. put a data into table > > > > Does your coprocessor write to the same table which receives user data ? > > > > Cheers > > > > On Mon, Jan 22, 2018 at 4:24 AM, Yang Zhang <zhang.yang...@gmail.com> > > wrote: > > > > > Hello Everyone > > > > > > I am using the coprocessor and want to put another data when > > > someone put a data into table. So I try prePut(), but when you call > > > HRegion.put(), this will call my coprocessor's prePut function again, > and > > > it will cause an dead loop. > > > > > > My code looks like below, If anyone know how to make HBase > call > > my > > > coprocessor just for the first time? > > > > > > @Override > > > public void prePut(ObserverContext<RegionCoprocessorEnvironment> > > > context, Put put, WALEdit edit, > > > Durability durability) throws IOException { > > > logger.info("==== Coprocessor shouldComplete : > > > "+context.shouldComplete()+"===="); > > > context.bypass(); > > > > > > Put myPut = new Put(new RowKey(1).toBytes()); > > > > > > //this call will caused an dead loop > > > context.getEnvironment().getRegion().put(put); > > > > > > } > > > > > > Thanks anyway > > > > > >