Ayende provided an Interceptor implementation to make developers feel the network latency pain along with catching too many queries per session.
public class PainIsWeaknessLeavingTheBody: EmptyInterceptor
{
public override SqlString OnPrepareStatement(SqlString sql)
{
// check for too many queries
var count = (int)(HttpContext.Current.Items["nh_statment_count"] ?? 0)
if (++count > 30)
throw new InvalidOperationException("Stop querying the DB, dummy!");
HttpContext.Current.Items["nh_statment_count"] = count;
// add a sql delay
return new SqlString("WAITFOR DELAY '00:00:01'\r\n").append(sql);
}
}
All you have to do from here is pass in a new PainIsWeaknessLeavingTheBody to your call to OpenSession.
Some of you may think this is crazy. And as Ayende points out why in the world does SQL Server have a sleep implementation?!? I really like the idea for both tracking the number of queries per session along with adding a delay to make sure your customers aren't having to wait excessively.
0 comments:
Post a Comment