Skip to content

Instantly share code, notes, and snippets.

View bbeaudreault's full-sized avatar

Bryan Beaudreault bbeaudreault

View GitHub Profile
@Test
public void testMergeEmptyWithMetaCache() throws Throwable {
TableName tableName = TableName.valueOf("MergeEmpty");
byte[] family = Bytes.toBytes("CF");
TableDescriptor td = TableDescriptorBuilder.newBuilder(tableName)
.setColumnFamily(ColumnFamilyDescriptorBuilder.of(family)).build();
TEST_UTIL.getAdmin().createTable(td, new byte[][] { Bytes.toBytes(2), Bytes.toBytes(5) });
TEST_UTIL.waitTableAvailable(tableName);
TEST_UTIL.waitUntilNoRegionsInTransition();
RegionInfo regionA = null;
@bbeaudreault
bbeaudreault / 0001-Cache-costs-so-we-don-t-waste-so-much-time-recomputi.patch
Last active May 18, 2021 19:47
Cache costs so we don't waste so much time recomputing things that havent changed, written against hbase 1.2. This patch was written to be minimal diff as opposed to the most ideal/clean solution. It improved performance on our clusters by about 10x.
From bc5de4ffd41b7dbb88a51ad255af6b617e9282f8 Mon Sep 17 00:00:00 2001
From: Bryan Beaudreault <bbeaudreault@hubspot.com>
Date: Thu, 6 May 2021 10:39:05 -0400
Subject: [PATCH] Cache costs so we don't waste so much time recomputing things
that havent changed
---
.../master/balancer/BaseLoadBalancer.java | 22 +++++++
.../balancer/StochasticLoadBalancer.java | 65 ++++++++++++-------
.../balancer/TestStochasticLoadBalancer.java | 2 +-
@bbeaudreault
bbeaudreault / validateSubquerySamePlan.go
Created August 4, 2017 18:24
validate that if a subquery it exists, it and any further subqueries are all part of the same plan.
func validateSubquerySamePlan(node sqlparser.SQLNode, outer *engine.Route, vschema VSchema) bool {
samePlan := true
inSubQuery := false
_ = sqlparser.Walk(func(node sqlparser.SQLNode) (kontinue bool, err error) {
if _, ok := node.(*sqlparser.Subquery); ok {
inSubQuery = true
return true, nil
}
package vitessutil
import (
"fmt"
"encoding/json"
"time"
"github.com/pkg/errors"
jww "github.com/spf13/jwalterweatherman"
@bbeaudreault
bbeaudreault / vtparse.patch
Created March 29, 2017 12:27
Disclaimer: This was the first piece of go I wrote and I've not run this in a few months. It may not work as is, but could be used as a starting point for some hacking. It expects to be run against the general log of mysql, and makes some assumptions about you care about. For instance it ignores a long list of DBA queries
From a89a8d6144136512574681f36e5e9828c757090d Mon Sep 17 00:00:00 2001
From: Bryan Beaudreault <bbeaudreault@hubspot.com>
Date: Wed, 4 Jan 2017 11:23:12 -0500
Subject: [PATCH] vtparse -- a tool for analyzing query logs, sending them
through vitess planbuilders, and outputting errors
---
go/cmd/vtparse/main.go | 10 +
go/cmd/vtparse/plugin_cephbackupstorage.go | 5 +
go/cmd/vtparse/plugin_etcd2topo.go | 22 +
@bbeaudreault
bbeaudreault / build.sh
Last active December 9, 2016 15:58
rpm builder for vitess
#!/bin/sh -ex
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
vitess_version='2.1.0-alpha'
source /opt/rh/devtoolset-4/enable
source /opt/rh/python27/enable
export GOROOT="/usr/local/go"
@bbeaudreault
bbeaudreault / build_basic_vitess.sh
Created November 21, 2016 19:47
Building basic vitess vtgate and vtctld
# May need to install the proper version (1.7+) of go before starting
export GOPATH=~/work
export PATH=$PATH:$GOPATH/bin
mkdir -p $GOPATH/src $GOPATH/bin $GOPATH/pkg
git clone git@github.com:youtube/vitess.git $GOPATH/src/github.com/youtube/vitess
cd $GOPATH/src/github.com/youtube/vitess
go get -u github.com/golang/lint/golint github.com/golang/mock/mockgen github.com/kardianos/govendor golang.org/x/tools/cmd/goimports honnef.co/go/unused/cmd/unused code.google.com/p/go.tools/cmd/cover
govendor sync
cd go/cmd
go install ./vtgate ./vtctld
package org.apache.hadoop.hbase.regionserver.metrics;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
java.lang.AssertionError: Key REDACTED_ROWKEY/2:\x00\x05\x12\xBF8/OLDEST_TIMESTAMP/Minimum/vlen=0/seqid=0 followed by a smaller key REDACTED_ROWKEY/2:\x00\x03,\x0E0/1456850400248000000/Put/vlen=10/seqid=0 in cf 2
at org.apache.hadoop.hbase.regionserver.StoreScanner.checkScanOrder(StoreScanner.java:787)
at org.apache.hadoop.hbase.regionserver.StoreScanner.next(StoreScanner.java:542)
at org.apache.hadoop.hbase.regionserver.KeyValueHeap.next(KeyValueHeap.java:145)
at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.populateResult(HRegion.java:5272)
at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextInternal(HRegion.java:5423)
at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextRaw(HRegion.java:5210)
at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.next(HRegion.java:5187)
at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.next(HRegion.java:5174)
at org.apache.h
1 times (0% total cpu)
"2116134604@qtp-1167186972-0" daemon prio=10 tid=0x7f20df278000 nid=0xb655 in Object.wait() start=2015-11-30 21:17:39
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:626)
- locked <0x00007f19080118c0> (a org.mortbay.thread.QueuedThreadPool$PoolThread)
1 times (2.5% total cpu)
"RpcServer.responder" daemon prio=10 tid=0x7f20dfb64000 nid=0xb6f9 runnable cpu=2.5% start=2015-11-30 21:17:42
java.lang.Thread.State: RUNNABLE