No, above logs are not showing up in region server. Also, I am using hbase-0.98
On Mon, Oct 6, 2014 at 10:48 AM, Ted Yu <[email protected]> wrote: > Signature for postPut() in 0.98 is: > public void postPut(final Put put, final WALEdit edit, final Durability > durability) > > Which release are you using ? > > bq. LOG.info("SOURCE_TABLE"); > > Did the above log show up in region server log ? > > On Mon, Oct 6, 2014 at 10:41 AM, Jasmin Guliani <[email protected]> wrote: > >> I have written coprocessor code with below code. After compiling this >> code, >> I have created the jar file. And then added this jar as a coprocessor to >> the table. >> >> alter 'SOURCE_TBL' , METHOD => 'table_att' , 'COPROCESSOR'=> >> >> 'hdfs:///apps/stsuid/HBASESamples-0.0.1-SNAPSHOT.jar|com.hbase.coprocessor.PutRegionObserverExample|1001' >> >> After this, when I am doing put operation on source table 'SOURCE_TBL' >> mentioned as below, I am expecting a record in index table 'INDEX_TBL' but >> there are no records in INDEX_TBL. >> >> put 'SOURCE_TBL' , '123' , 'data:CUST_ID' , 'RFRT' >> >> >> Please help me and let me know if my code of coprocessor is wrong or am I >> executing it in a wrong way. >> >> >> >> package com.hbase.coprocessor; >> >> import java.io.IOException; >> import java.util.Arrays; >> import java.util.List; >> import java.util.logging.Logger; >> >> import org.apache.hadoop.conf.Configuration; >> import org.apache.hadoop.hbase.Cell; >> import org.apache.hadoop.hbase.CoprocessorEnvironment; >> import org.apache.hadoop.hbase.HBaseConfiguration; >> import org.apache.hadoop.hbase.KeyValue; >> import org.apache.hadoop.hbase.client.Get; >> import org.apache.hadoop.hbase.client.HTable; >> import org.apache.hadoop.hbase.client.HTableInterface; >> import org.apache.hadoop.hbase.client.HTablePool; >> import org.apache.hadoop.hbase.client.Put; >> import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver; >> import org.apache.hadoop.hbase.coprocessor.ObserverContext; >> import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; >> import org.apache.hadoop.hbase.regionserver.wal.WALEdit; >> import org.apache.hadoop.hbase.util.Bytes; >> >> public class PutRegionObserverExample extends BaseRegionObserver { >> >> public static final byte[] FIXED_ROW = Bytes.toBytes("@@@GETTIME@@@"); >> private final static Logger LOG = >> Logger.getLogger(PutRegionObserverExample.class.getName()); >> >> >> private HTablePool pool = null; >> >> private final static String INDEX_TABLE = "INDEX_TBL"; >> private final static String SOURCE_TABLE = "SOURCE_TBL"; >> >> public void start(CoprocessorEnvironment env) throws IOException { >> >> LOG.info("(start)"); >> pool = new HTablePool(env.getConfiguration(), 10); >> } >> >> //@Override >> public void postPut( >> final ObserverContext<RegionCoprocessorEnvironment> >> observerContext, >> final Put put, >> final WALEdit edit, >> final boolean writeToWAL) >> throws IOException { >> >> byte[] table = >> >> observerContext.getEnvironment().getRegion().getRegionInfo().getTableName(); >> >> if (!Bytes.equals(table, Bytes.toBytes(SOURCE_TABLE))) { >> LOG.info("SOURCE_TABLE"); >> return; >> } >> >> try { >> >> final List<Cell> filteredList = put.get(Bytes.toBytes >> ("data"),Bytes.toBytes("CUST_ID")); >> byte [] id = put.getRow(); //Get the Entry ID >> >> Cell kv=filteredList.get( 0 ); //get Entry PARENT_ID >> byte[] parentId = kv.getValue(); >> >> >> HTableInterface htbl = >> pool.getTable(Bytes.toBytes(INDEX_TABLE)); >> >> //create row key for the index table >> byte[] p1 = concatTwoByteArrays(parentId, ":".getBytes()); >> //Insert a semicolon between two UUIDs >> byte[] rowkey = concatTwoByteArrays(p1, id); >> >> Put indexput = new Put(rowkey); >> >> indexput.add(Bytes.toBytes("data"), Bytes.toBytes("CUST_ID"), >> Bytes.toBytes("tgt9")); >> htbl.put(indexput); >> >> htbl.close(); >> >> } catch ( IllegalArgumentException ex) { >> // handle excepion. >> LOG.info(ex.getMessage()); >> } >> >> } >> >> >> @Override >> public void stop(CoprocessorEnvironment env) throws IOException { >> pool.close(); >> } >> >> >> public static final byte[] concatTwoByteArrays(byte[] first, byte[] >> second) { >> byte[] result = Arrays.copyOf(first, first.length + >> second.length); >> System.arraycopy(second, 0, result, first.length, second.length); >> return result; >> } >> >> } >> > >
