Skip to content

Instantly share code, notes, and snippets.

View rofr's full-sized avatar

Robert Friberg rofr

View GitHub Profile
@rofr
rofr / CommandBatch.cs
Created October 21, 2014 08:26
OrigoDB approaching 100k transactions per second with Akka.NET and GetEventStore
[Serializable]
public class CommandBatch
{
public readonly Command[] Commands;
public CommandBatch(IEnumerable<Command> commands)
{
Commands = commands.ToArray();
}
}
namespace AckAck
{
public class EventStoreJournal : IJournalWriter
{
private readonly IEventStoreConnection _eventStore;
private readonly IFormatter _formatter;
public EventStoreJournal(IEventStoreConnection connection)
{
@rofr
rofr / gist:d14f6691c49184dca542
Created October 16, 2014 21:06
more performance output eventstore/akka/origo
Batch size: 10
async elapsed: 00:00:09.3169992
Batch size: 20
[INFO][2014-10-16 21:45:26][Thread 0013][akka://prevayler/deadLetters] Message ReceiveTimeout from NoSender to akka://prevayler/deadLetters was not delivered. 1 dead letters encountered.
async elapsed: 00:00:04.0975454
Batch size: 40
async elapsed: 00:00:02.2847282
Batch size: 80
async elapsed: 00:00:01.2958812
Batch size: 160
@rofr
rofr / gist:2ba2c3376cf6e6b7c7ac
Created October 16, 2014 20:00
eventstore 3 testclient output on roberts dellcrappo
[03528,10,19:58:56.693] Command exited with code 0.
[03528,07,19:58:56.693] Completed. Successes: 1000000, failures: 0 (WRONG VERSION: 0, P: 0, C: 0, F: 0, D: 0)
[03528,07,19:58:56.693] 1000000 requests completed in 62640ms (15964,24 reqs per sec).
[03528,07,19:58:56.743] [[begin
DataName:WRFL;
clientsCnt:10;requestsCnt:1000000;ElapsedMilliseconds:62640;
successes:1000000;failures:0;
end]]
[03528,07,19:58:56.743]
@rofr
rofr / gist:6afb0f0c0f4922d9ad8a
Created October 15, 2014 09:11
akka.net log output
Batch size: 10
async elapsed: 00:00:02.8304468
Batch size: 20
PostStop called
[INFO][2014-10-15 11:08:37][Thread 0013][akka://prevayler/deadLetters] Message ReceiveTimeout from akka://prevayler/user/$c to akka://prevayler/deadLetters was not delivered. 1 dead letters encountered.
[INFO][2014-10-15 11:08:37][Thread 0013][akka://prevayler/deadLetters] Message DeathWatchNotification from akka://prevayler/deadLetters to akka://prevayler/deadLetters was not delivered. 2 dead letters encountered.
[INFO][2014-10-15 11:08:37][Thread 0013][akka://prevayler/deadLetters] Message DeathWatchNotification from akka://prevayler/deadLetters to akka://prevayler/deadLetters was not delivered. 3 dead letters encountered.
[INFO][2014-10-15 11:08:37][Thread 0011][akka://prevayler/deadLetters] Message DeathWatchNotification from akka://prevayler/deadLetters to akka://prevayler/deadLetters was not delivered. 4 dead letters encountered.
async elapsed: 00:00:01.3089383
Batch size: 40
@rofr
rofr / gist:06cc041ad235ec82ff7c
Created September 25, 2014 14:25
Why? Co/contravariance
/// <summary>
/// Register or reregister a generic handler
/// </summary>
public void Subscribe(Action<IEvent> eventHandler, Func<IEvent, bool> selector = null)
{
_eventHandlers[new DelegateHandler(eventHandler)] = selector != null
? new DelegateSelector(selector)
: DelegateSelector.Any;
}
@rofr
rofr / gist:608e86031fe24476084a
Created September 25, 2014 09:54
Playing with some thoughts on concurrency control models
public abstract class Actor
{
public abstract void OnTokenReceived();
}
public class TokenRing
{
List<Actor> _actors = new List<Actor>();
@rofr
rofr / gist:b4da21d0a793eba4a850
Created September 18, 2014 15:06
Getting started example code from the gridgain docs
try (Grid g = GridGain.start()) {
Collection<GridCallable<Integer>> calls = new ArrayList<>();
// Iterate through all the words in the sentence and create Callable jobs.
for (final String word : "Count characters using callable".split(" ")) {
calls.add(new GridCallable<Integer>() {
@Override public Integer call() throws Exception {
return word.length();
}
});
@rofr
rofr / gist:03e635ddb6beea5dae7d
Created September 17, 2014 04:14
Building a CMS with OrigoDB - snippet 8
[TestMethod()]
public void MenuSmokeTest()
{
var engine = Engine.LoadOrCreate<CmsModel>("c:\\livedb\\cms");
var page = new Page(Guid.NewGuid(), DateTime.Now);
page.Contents = "Hello, world!";
Command command = new PutPageCommand(page);
engine.Execute(command);
Menu menu = new Menu{Name = "_main"};
@rofr
rofr / gist:b4b3e4eababf619cf30b
Created September 17, 2014 04:13
Building a CMS with OrigoDB - snippet 7
[Serializable]
public class RemoveMenuCommand : Command<CmsModel>
{
public readonly string MenuName;
public RemoveMenuCommand(string menuName)
{
MenuName = menuName;
}