Skip to content

Instantly share code, notes, and snippets.

@mkscrg
mkscrg / README.md
Created June 26, 2012 17:49
Test topology for possible MAX_SPOUT_PENDING regression in storm 0.8.0-SNAPSHOT

storm-msp

The topology looks like this:

                                 "stream1"
           "one"              /-------------\
OneSpout --------> SplitBolt |               > CountBolt
                              \-------------/
                                 "stream2"
@mkscrg
mkscrg / checksite.rb
Created July 10, 2012 04:06
Ruby script to periodically match a web page against a regex
require 'net/http'
$stdout.sync = true
if ARGV.include?("--help") || ![2,3,4].include?(ARGV.length)
puts "ruby checksite.rb URL REGEX [NOTIFY_EMAIL] [INTERVAL_SECS]"
exit!
end
uri = URI.parse(ARGV[0])
@mkscrg
mkscrg / README.md
Created July 20, 2012 20:47
Test topology for Kryo serializer issue

storm-kryo-test

Kryo serializers seem to work locally, but they're not found on the remote cluster when needed for deserialization.

The test case shows that the serializer works:

mvn test

Run locally to see that the AModels are properly serialized and deserialized:

@mkscrg
mkscrg / stack.txt
Created July 24, 2012 21:14
Storm/ReflectASM stack trace
2012-07-24 13:40:56 util [ERROR] Async loop died!
java.lang.LinkageError: loader (instance of com/esotericsoftware/reflectasm/AccessClassLoader): attempted duplicate class definition for name: "reflectasm/java/util/ArrayListConstructorAccess"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
at com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:45)
at com.esotericsoftware.reflectasm.ConstructorAccess.get(ConstructorAccess.java:61)
at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:974)
at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1024)
@mkscrg
mkscrg / .gitignore
Created July 26, 2012 16:57
Test topology for Issue 276
*.iml
.idea/
target/
*.DS_STORE*
public class Main {
public static void main(String[] args) {
ensureLessThanWithCast(6, 5);
ensureLessThan(6, 5);
}
public static <N extends Number & Comparable<N>, S extends N> S ensureLessThanWithCast(N threshold, S input) {
if (((N) input).compareTo(threshold) >= 0) {
throw new IllegalArgumentException("Input " + input + " is not less than " + threshold);
}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Applicative
import Data.Char
import Data.Attoparsec.Text
import Data.Text (Text)
module Main where
import Data.Char
import Data.List
main :: IO ()
main = print $ wordIndexes "Hello test World"
wordIndexes :: String -> [(Int, String)]
@mkscrg
mkscrg / serve.sh
Created December 23, 2013 03:21
Serve a directory on a port with Nginx, with access logs to STDOUT and error logs to STDERR.
#!/usr/bin/env bash
set -e
usage() {
echo "usage: serve PORT [DIR]"
exit 1
}
conf_template='
worker_processes 1;
@mkscrg
mkscrg / newcabal.sh
Created December 26, 2013 22:56
Start a new Cabal project with minimal sane defaults.
#!/usr/bin/env bash
set -e
template='name: $$NAME$$
version: 0.0.0
build-type: Simple
cabal-version: >= 1.9.2
executable $$NAME$$
main-is: Main.hs