[Server] The socket has been shut down


#1

Salut,

Aujourd’hui, mon serveur Constellation s’est arrêté.
C’est sans doute dû aux tests que j’effectue sur ESP8266.

Afin d’aider à rendre le server plus robuste, voici la trace de l’erreur:

Unhandled Exception:
System.IO.IOException: Write failure ---> System.Net.Sockets.SocketException: The socket has been shut down
  at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags) [0x00000] in <filename unknown>:0
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
  at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
  at System.Net.ResponseStream.Close () [0x00000] in <filename unknown>:0
  at System.Net.HttpConnection.Close (Boolean force_close) [0x00000] in <filename unknown>:0
  at System.Net.HttpListenerResponse.Close (Boolean force) [0x00000] in <filename unknown>:0
  at System.Net.HttpListenerResponse.Abort () [0x00000] in <filename unknown>:0
  at Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerResponse.End () [0x00000] in <filename unknown>:0
  at Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerContext.End () [0x00000] in <filename unknown>:0
  at Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerContext.End (System.Exception ex) [0x00000] in <filename unknown>:0
  at Microsoft.Owin.Host.HttpListener.OwinHttpListener+<ProcessRequestAsync>d__5.MoveNext () [0x00000] in <filename unknown>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0
  at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in <filename unknown>:0
  at Microsoft.Owin.Host.HttpListener.OwinHttpListener+<ProcessRequestsAsync>d__0.MoveNext () [0x00000] in <filename unknown>:0

Hélas, je ne suis pas certains que ce soit d’une grande aide.

Par contre, comme puis-je redémarrer mon server sans avoir a effectuer un reboot ?
Il est installé sur un Raspberry.

Merci,
Julien.


#2

Bonjour Julien,

C’est bien le problème de Mono/Linux dont l’implémentation du .NET n’est pas aussi robuste que la version originale de .NET pour Windows.

En effet sur plus de 3 ans d’utilisation (et de nombreux tests tu imagines) mon serveur Constellation n’aura jamais planté !

Dans ton cas, ce n’est pas vraiment Constellation qui plante mais le listener HTTP d’OWIN utilisé par Constellation.

Sur Windows les services peuvent automatiquement rédémarrés, sous Linux j’utilise supervisor.

Tu peux lancer manuellement la commande sudo /etc/init.d/supervisor restart mais je ne sais pas dans quelle mesure il est possible d’automatiser cette action en cas de problème.

Sebastien