Commit a9790b9e authored by Marc Gravell's avatar Marc Gravell

moar trace

parent ab5327cf
...@@ -284,7 +284,7 @@ protected IServer GetAnyMaster(ConnectionMultiplexer muxer) ...@@ -284,7 +284,7 @@ protected IServer GetAnyMaster(ConnectionMultiplexer muxer)
}; };
muxer.Connecting += (e, t) => Writer.WriteLine($"Connecting to {Format.ToString(e)} as {t}"); muxer.Connecting += (e, t) => Writer.WriteLine($"Connecting to {Format.ToString(e)} as {t}");
muxer.TransactionLog += msg => { lock (Writer) { Writer.WriteLine("tran: " + msg); } }; muxer.TransactionLog += msg => { lock (Writer) { Writer.WriteLine("tran: " + msg); } };
muxer.Heartbeat += msg => Writer.WriteLine($"{Time()}: {msg}"); muxer.InfoMessage += msg => Writer.WriteLine(msg);
muxer.Resurrecting += (e, t) => Writer.WriteLine($"Resurrecting {Format.ToString(e)} as {t}"); muxer.Resurrecting += (e, t) => Writer.WriteLine($"Resurrecting {Format.ToString(e)} as {t}");
muxer.Closing += complete => Writer.WriteLine(complete ? "Closed" : "Closing..."); muxer.Closing += complete => Writer.WriteLine(complete ? "Closed" : "Closing...");
return muxer; return muxer;
......
...@@ -262,7 +262,7 @@ internal void KeepAlive() ...@@ -262,7 +262,7 @@ internal void KeepAlive()
{ {
msg.SetInternalCall(); msg.SetInternalCall();
Multiplexer.Trace("Enqueue: " + msg); Multiplexer.Trace("Enqueue: " + msg);
Multiplexer.OnHeartbeat($"heartbeat '{msg.CommandAndKey}' on '{PhysicalName}' (v{features.Version})"); Multiplexer.OnInfoMessage($"heartbeat '{msg.CommandAndKey}' on '{PhysicalName}' (v{features.Version})");
var result = TryWrite(msg, ServerEndPoint.IsSlave); var result = TryWrite(msg, ServerEndPoint.IsSlave);
if (result != WriteResult.Success) if (result != WriteResult.Success)
...@@ -534,6 +534,7 @@ internal bool TryEnqueue(List<Message> messages, bool isSlave) ...@@ -534,6 +534,7 @@ internal bool TryEnqueue(List<Message> messages, bool isSlave)
private readonly object SingleWriterLock = new object(); private readonly object SingleWriterLock = new object();
private int reentrantCount = 0;
/// <summary> /// <summary>
/// This writes a message to the output stream /// This writes a message to the output stream
/// </summary> /// </summary>
...@@ -557,6 +558,10 @@ internal WriteResult WriteMessageTakingWriteLock(PhysicalConnection physical, Me ...@@ -557,6 +558,10 @@ internal WriteResult WriteMessageTakingWriteLock(PhysicalConnection physical, Me
return WriteResult.TimeoutBeforeWrite; return WriteResult.TimeoutBeforeWrite;
} }
if(reentrantCount++ != 0)
{
Multiplexer?.OnInfoMessage("reentrant call to WriteMessageTakingWriteLock for " + message.CommandAndKey);
}
var messageIsSent = false; var messageIsSent = false;
if (message is IMultiMessage) if (message is IMultiMessage)
{ {
...@@ -592,7 +597,11 @@ internal WriteResult WriteMessageTakingWriteLock(PhysicalConnection physical, Me ...@@ -592,7 +597,11 @@ internal WriteResult WriteMessageTakingWriteLock(PhysicalConnection physical, Me
} }
finally finally
{ {
if (haveLock) Monitor.Exit(SingleWriterLock); if (haveLock)
{
reentrantCount--;
Monitor.Exit(SingleWriterLock);
}
} }
return result; return result;
......
...@@ -254,7 +254,7 @@ internal string GetConnectionName(EndPoint endPoint, ConnectionType connectionTy ...@@ -254,7 +254,7 @@ internal string GetConnectionName(EndPoint endPoint, ConnectionType connectionTy
internal event Action<string, Exception, string> MessageFaulted; internal event Action<string, Exception, string> MessageFaulted;
internal event Action<bool> Closing; internal event Action<bool> Closing;
internal event Action<string> PreTransactionExec, TransactionLog, Heartbeat; internal event Action<string> PreTransactionExec, TransactionLog, InfoMessage;
internal event Action<EndPoint, ConnectionType> Connecting; internal event Action<EndPoint, ConnectionType> Connecting;
internal event Action<EndPoint, ConnectionType> Resurrecting; internal event Action<EndPoint, ConnectionType> Resurrecting;
...@@ -262,9 +262,9 @@ internal void OnMessageFaulted(Message msg, Exception fault, [CallerMemberName] ...@@ -262,9 +262,9 @@ internal void OnMessageFaulted(Message msg, Exception fault, [CallerMemberName]
{ {
MessageFaulted?.Invoke(msg?.CommandAndKey, fault, $"{origin} ({path}#{lineNumber})"); MessageFaulted?.Invoke(msg?.CommandAndKey, fault, $"{origin} ({path}#{lineNumber})");
} }
internal void OnHeartbeat(string message) internal void OnInfoMessage(string message)
{ {
Heartbeat?.Invoke(message); InfoMessage?.Invoke(message);
} }
internal void OnClosing(bool complete) internal void OnClosing(bool complete)
......
...@@ -1799,6 +1799,7 @@ public TracerProcessor(bool establishConnection) ...@@ -1799,6 +1799,7 @@ public TracerProcessor(bool establishConnection)
public override bool SetResult(PhysicalConnection connection, Message message, RawResult result) public override bool SetResult(PhysicalConnection connection, Message message, RawResult result)
{ {
connection?.BridgeCouldBeNull?.Multiplexer.OnInfoMessage($"got '{result}' for '{message.CommandAndKey}' on '{connection}'");
var final = base.SetResult(connection, message, result); var final = base.SetResult(connection, message, result);
if (result.IsError) if (result.IsError)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment