Ayende @ Rahien

My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:


+972 52-548-6969

, @ Q c

Posts: 6,128 | Comments: 45,549

filter by tags archive

Things we learned from production, part IV–is your paperwork in order?

time to read 2 min | 362 words

One of the major points that we worked on in the 1.2 release was making the ops team work easier. That included additional logging, like we have previously discussed, making RavenDB plays nicer with other parts of the system, adding performance counters, etc.

But those are the obvious things, and this series isn’t about the obvious things. One of the problems that we run into is that we already had a moderately good porthole into how RavenDB works.

The problem was that this porthole gave you access to the state of a single database ,which was great…

Except that in order to get a database statistics, you had to actually load that database. Imagine a system under load, and the admin need to check what is causing the load. The act of checking a database statistics will actually force that database to load, generating even more load. This is especially dangerous when we are talking about automated health monitoring tools, the fact that we monitor the health of our software shouldn’t cause it to do additional work.

In RavenDB 1.2 we have taken steps to make sure that we can report on all the active database without having to guess which ones are active and which aren’t. We have also taken additional steps to make sure that we give the admin even more information about what is going on.

You can see this pattern pretty much everywhere, in indexes, in operations, in database and server stats. There are a lot more places where we explicitly built the hooks to make it possible for the admin to figure out what is going on.

The lesson from that is that you have to provide a lot of information for the administrators, so they can figure out what is going on (and that administrator may very well be you, at 2 AM, trying to diagnose a problem). At the same time, you have to be sure to provide those hooks in a way that have minimal impact on the system. Having admin hooks in place that will put undue burden on the application is seriously not a cool thing to do.


Sergey Shumov

Ayende, when will you update RavenDB repository at github?

Ayende Rahien

Sergey, It was last updated about 2 hours ago. Check the 1.2 branch.


The SQL Server guys use the approach to expose even lots of implementation details through DMVs (wait types, latches, ...) so that users can take a peek and diagnose stuff. I think that is the right approach.

Daan Le Duc

Ayende there are only 3 branches none of them is called 1.2


Am i looking at the wrong place? Would love to see how you implemented your latest blog articles.


Daan Le Duc

Found it! seems to be on your private github account https://github.com/ayende/ravendb/tree/1.2


@Daan Try https://github.com/ayende/ravendb/tree/1.2

Ayende Rahien

Daan, Yes, you are looking at the stable branch, you need to look here: https://github.com/ayende/ravendb/tree/1.2

Ayende Rahien

Jesus, They are already per database


@Ayende i think your response to @Jesus was meant to be on the previous post.


Would love to here about some details. After reading "Realease It" I'm thinking about making my app better for opps but I'm afraid my application will be full of logging statements making it hard to find the business logic of code.

Comment preview

Comments have been closed on this topic.


  1. The worker pattern - 3 days from now

There are posts all the way to May 30, 2016


  1. The design of RavenDB 4.0 (14):
    26 May 2016 - The client side
  2. RavenDB 3.5 whirl wind tour (14):
    25 May 2016 - Got anything to declare, ya smuggler?
  3. Tasks for the new comer (2):
    15 Apr 2016 - Quartz.NET with RavenDB
  4. Code through the looking glass (5):
    18 Mar 2016 - And a linear search to rule them
  5. Find the bug (8):
    29 Feb 2016 - When you can't rely on your own identity
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats