public void checkIfNeedClean(Row row,Column col,String tableName){
		BigTable table=TableManager.getTable(tableName);
		NewRowTransaction tr=buffertr;
		ValueWithTimestamp lock=tr.read(new Column("lock"), 0,start_ts,1);
		//If it exist with a non null value
		if(lock!=null&&lock.getValue()!=null){
			System.out.println(lock);
			String[] infos=lock.getValue().split("-");
			String lockTable=infos[0];
			String lockRow=infos[1];
			
			//If it's not the primary lock
			if(!lockTable.equals(tableName) || !lockRow.equals(row.toString())){
				BigTable primaryTable=table;
				if(!lockTable.equals(tableName))
					primaryTable=TableManager.getTable(lockTable);
				boolean result=primaryTable.findByValue(new Row(lockRow), new Column("write"), lock.getTimestamp()+"");
				if(result){
					//continue process commit and OK now
					NewRowTransaction trcommit=table.startRowTransaction(row);
//					long current_ts=OracleTimestampEmu.getCurTimestamp();
					trcommit.write(new Column("write"), start_ts, lock.getTimestamp()+"");
					trcommit.erase(new Column("lock"), lock.getTimestamp());
					trcommit.commit();
					return;
				}else{
					//It the secondary but primary didn't commit
					NewRowTransaction trclean=primaryTable.startRowTransaction(new Row(lockRow));
					trclean.erase(new Column("lock"), lock.getTimestamp());
					trclean.commit();
					
					NewRowTransaction trclean2=table.startRowTransaction(row);
					trclean2.erase(new Column("lock"), lock.getTimestamp());
					trclean2.commit();
				}
			}
			
			//If it's primary and not committed
			//Check chubby to see if it will clean up
			NewRowTransaction trclean=table.startRowTransaction(row);
			trclean.erase(new Column("lock"), lock.getTimestamp());
			trclean.commit();
		}
	}