MqttNet client using WebSocket fails if not using .NET Framework

There must be some difference between ClientWebSocket implementation in .NET 452 and .NET Core or UWP. I am using latest MQTTnet 2.5.1.
I tried to test the MQTTNet.TestApp.NetCore ClientTest against MQTTNet.TestApp.AspNetCore2.
When I run the AspNetCore2 Server via IISExpress and localhost:54191 both net452 and netcoreapp2.0 ClientTest failed.
Than I run AspNetCore2 using Kestrel server and <IP_ADDRESS>:54191. Now the net452 ClientTest is running perfect but netcoreapp2.0 still gets a WebSocketException (0x80004005 : "Unable to connect to the remote server") during WebSocket connect..
I created a UWP app similar to ClientTest and got the same exception during WebSocket connect.
My real environment is an AspNetCore 2.0 (net462) server using http.sys. My Windows Forms (4.6.2) mqtt test app is running perfect against this server.  But trying the  UWP test app shows a different behavior : Connect and subscribe succeeds, client got several application messages, but after approx 30 seconds I got a mqtt timeout exception because server did not answer the clients Ping request.

Hi,
thanks your sharing the issue. I will look into it but I require some additional info. Please share some export of trace messages when the connection is dropped and also some times span before the disconnect.

Trace of MQTTNet.TestApp.NetCore ClientTest netcoreapp2.0 against your MQTTNet.TestApp.AsoNetCore2. Running AspNetCore without IISExpress not on localhost but on my local IP address. UWP app trace looks quite similar. ClientTest net452 suceeds with same environment !!
MQTTnet - TestApp.NetFramework
1 = Start client
2 = Start server
3 = Start performance test
4 = Start managed client
fail: MQTTnet.Core.Client.MqttClient[0]
      Error while connecting with server.
MQTTnet.Core.Exceptions.MqttCommunicationException: Unable to connect to the remote server ---> System.Net.WebSockets.WebSocketException: Unable to connect to the remote server ---> System.Net.WebSockets.WebSocketException: Unable to connect to the remote server ---> System.Net.Http.WinHttpException: Der Vorgang wurde erfolgreich beendet
   --- End of inner exception stack trace ---
   at System.Net.WebSockets.WinHttpWebSocket.ThrowOnInvalidHandle(SafeWinHttpHandle value)
   at System.Net.WebSockets.WinHttpWebSocket.<ConnectAsync>d__18.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Net.WebSockets.WebSocketHandle.<ConnectAsyncCore>d__20.MoveNext()
   --- End of inner exception stack trace ---
   at System.Net.WebSockets.WebSocketHandle.<ConnectAsyncCore>d__20.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Net.WebSockets.ClientWebSocket.<ConnectAsyncCore>d__16.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MQTTnet.Implementations.MqttWebSocketChannel.<ConnectAsync>d__11.MoveNext() in C:\temp\MQTTnet-master\Frameworks\MQTTnet.Netstandard\Implementations\MqttWebSocketChannel.cs:line 66
   --- End of inner exception stack trace ---
   at MQTTnet.Core.Internal.TaskExtensions.<TimeoutAfter>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter.<ConnectAsync>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MQTTnet.Core.Client.MqttClient.<ConnectAsync>d__24.MoveNext()
info: MQTTnet.Core.Client.MqttClient[0]
      Disconnected from adapter.

Trace of running my UWP test app against my AspNetCore 2 server with http.sys
[2017-11-12 15:27:56.819] [Trace] [MQTTnet.Core.Client.MqttClient] [3] [Trying to connect with server.]
[2017-11-12 15:27:56.904] [Trace] [MQTTnet.Core.Client.MqttClient] [7] [Connection with server established.]
[2017-11-12 15:27:56.922] [Information] [MQTTnet.Core.Client.MqttClient] [9] [Start receiving packets.]
[2017-11-12 15:27:57.034] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [7] [TX >>> MqttConnectPacket: [ClientId=DevicesMqtt_d0f4a5b0-4b6c-4551-b6fa-4103061072a3]<EMAIL_ADDRESS>[Password=5BFD372E-F9DD-48D6-8E4D-FAF4824CBD59] [KeepAlivePeriod=5] [CleanSession=True] [Timeout=00:00:10]]
'TestUWP.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Dev\RIC\SmartHome\TestUWP\bin\x86\Debug\AppX\System.Net.WebSockets.Client.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TestUWP.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Dev\RIC\SmartHome\TestUWP\bin\x86\Debug\AppX\System.Net.WebSockets.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TestUWP.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Dev\RIC\SmartHome\TestUWP\bin\x86\Debug\AppX\System.Security.Cryptography.X509Certificates.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TestUWP.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Dev\RIC\SmartHome\TestUWP\bin\x86\Debug\AppX\System.Net.WebHeaderCollection.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TestUWP.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Dev\RIC\SmartHome\TestUWP\bin\x86\Debug\AppX\Microsoft.Win32.Primitives.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
[2017-11-12 15:27:57.079] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [8] [RX <<< MqttConnAckPacket: [ConnectReturnCode=ConnectionAccepted] [IsSessionPresent=False]]
[2017-11-12 15:27:57.084] [Information] [MQTTnet.Core.Client.MqttClient] [7] [Received <<< MqttConnAckPacket: [ConnectReturnCode=ConnectionAccepted] [IsSessionPresent=False]]
[2017-11-12 15:27:57.088] [Trace] [MQTTnet.Core.Client.MqttClient] [7] [MQTT connection with server established.]
### CONNECTED WITH SERVER ###
[2017-11-12 15:27:57.098] [Information] [MQTTnet.Core.Client.MqttClient] [12] [Start sending keep alive packets.]
[2017-11-12 15:27:57.108] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [7] [TX >>> MqttSubscribePacket: [PacketIdentifier=1] [TopicFilters=smarthome/sensor/#@AtLeastOnce,smarthome/rpcreply/c43d87c4-82a5-4535-938b-95d64d2c0228/#@AtLeastOnce] [Timeout=00:00:10]]
### WAITING FOR APPLICATION MESSAGES ###
[2017-11-12 15:27:57.166] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [11] [RX <<< MqttSubAckPacket: [PacketIdentifier=1] [SubscribeReturnCodes=SuccessMaximumQoS1,SuccessMaximumQoS1]]
[2017-11-12 15:27:57.168] [Information] [MQTTnet.Core.Client.MqttClient] [7] [Received <<< MqttSubAckPacket: [PacketIdentifier=1] [SubscribeReturnCodes=SuccessMaximumQoS1,SuccessMaximumQoS1]]
[2017-11-12 15:27:57.173] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [13] [RX <<< MqttPublishPacket: [Topic=smarthome/sensor/HomeMatic/VirtKey_14] [Payload=AAEAAwAHAAAADEJpZENvUy1SRjoxNAAAADgAAAAAAAAAAAAAAAAAAAEAAgA=] [QoSLevel=AtLeastOnce] [Dup=False] [Retain=True] [PacketIdentifier=0]]
[2017-11-12 15:27:57.175] [Information] [MQTTnet.Core.Client.MqttClient] [8] [Received <<< MqttPublishPacket: [Topic=smarthome/sensor/HomeMatic/VirtKey_14] [Payload=AAEAAwAHAAAADEJpZENvUy1SRjoxNAAAADgAAAAAAAAAAAAAAAAAAAEAAgA=] [QoSLevel=AtLeastOnce] [Dup=False] [Retain=True] [PacketIdentifier=0]]
[2017-11-12 15:27:57.181] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [5] [RX <<< MqttPublishPacket: [Topic=smarthome/sensor/HomeMatic/VirtKey_15] [Payload=AAEAAwAHAAAADEJpZENvUy1SRjoxNQAAADkAAAAAAAAAAAAAAAAAAAEAAgA=] [QoSLevel=AtLeastOnce] [Dup=False] [Retain=True] [PacketIdentifier=0]]
[2017-11-12 15:27:57.183] [Information] [MQTTnet.Core.Client.MqttClient] [11] [Received <<< MqttPublishPacket: [Topic=smarthome/sensor/HomeMatic/VirtKey_15] [Payload=AAEAAwAHAAAADEJpZENvUy1SRjoxNQAAADkAAAAAAAAAAAAAAAAAAAEAAgA=] [QoSLevel=AtLeastOnce] [Dup=False] [Retain=True] [PacketIdentifier=0]]
Sensor 15:27:57.187 : smarthome/sensor/HomeMatic/VirtKey_14
Sensor 15:27:57.187 : smarthome/sensor/HomeMatic/VirtKey_15
[2017-11-12 15:27:57.212] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [8] [TX >>> MQTTnet.Core.Packets.MqttPubAckPacket [Timeout=00:00:10]]
[2017-11-12 15:27:57.214] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [13] [TX >>> MQTTnet.Core.Packets.MqttPubAckPacket [Timeout=00:00:10]]
[2017-11-12 15:28:02.101] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [7] [TX >>> MqttPingReqPacket [Timeout=00:00:10]]
[2017-11-12 15:28:12.109] [Warning] [MQTTnet.Core.Client.MqttPacketDispatcher] [16] [Timeout while waiting for packet of type 'MqttPingRespPacket'.]
[2017-11-12 15:28:12.112] [Warning] [MQTTnet.Core.Client.MqttClient] [16] [MQTT communication exception while sending/receiving keep alive packets.]
Exception of type 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' was thrown.
The program '[18436] TestUWP.exe: Program Trace' has exited with code 0 (0x0).
The program '[18436] TestUWP.exe' has exited with code 1 (0x1).

@ChristianRiedl  hi chris i was able to reproduce and fix it. i added mqtt subprotocol in 2.5 as it was required for the browser library to work correctly. seems im not allowed to tell you im using mqtt if you dont ask for it. and hoorraaayy for that super helpful error message from microsoft

@JanEggers Jan, after adding the "mqtt" subprotocol, the netcoreapp2.0 ClientTest is running. The UWP testapp I created also connects now, but gets a timeout exception after some time.
I found this info regarding ClientWebSocket difference between UWP and .NET Core
https://github.com/dotnet/corefx/issues/21102
Maybe this is the reason. My UWP test app simply adds the ClientTest RunSync function to MainPage.
 private void Page_Loaded(object sender, RoutedEventArgs e)
 {
        Task.Run (async () => {
          await Task.Delay(5000);
           await RunAsync(); });
  }

Trace
'MQTTnet.TestApp.UniversalWindowsClient.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\temp\MQTTnet-master\MQTTnet.TestApp.UniversalWindowsClient\bin\x86\Debug\AppX\System.Text.Encoding.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.

Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:07:57.5472229Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"Client 'XYZ': Connected.","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"XYZ","CategoryName":"MQTTnet.Core.Server.MqttServer","{OriginalFormat}":"Client '{0}': Connected.","DeveloperMode":"true"}}}}
The thread 0x2050 has exited with code 0 (0x0).
[2017-11-12 17:07:57.554] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [4] [RX <<< MqttConnAckPacket: [ConnectReturnCode=ConnectionAccepted] [IsSessionPresent=False]]
[2017-11-12 17:07:57.558] [Information] [MQTTnet.Core.Client.MqttClient] [5] [Received <<< MqttConnAckPacket: [ConnectReturnCode=ConnectionAccepted] [IsSessionPresent=False]]
[2017-11-12 17:07:57.561] [Trace] [MQTTnet.Core.Client.MqttClient] [5] [MQTT connection with server established.]
### CONNECTED WITH SERVER ###
[2017-11-12 17:07:57.570] [Information] [MQTTnet.Core.Client.MqttClient] [11] [Start sending keep alive packets.]
The thread 0x641c has exited with code 0 (0x0).
[2017-11-12 17:07:57.582] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [5] [TX >>> MqttSubscribePacket: [PacketIdentifier=1] [TopicFilters=#@AtMostOnce] [Timeout=00:00:10]]
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: RX <<< MqttSubscribePacket: [PacketIdentifier=1] [TopicFilters=#@AtMostOnce]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:07:57.5914980Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"RX <<< MqttSubscribePacket: [PacketIdentifier=1] [TopicFilters=#@AtMostOnce]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttSubscribePacket: [PacketIdentifier=1] [TopicFilters=#@AtMostOnce]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"RX <<< {0}","DeveloperMode":"true"}}}}
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttSubAckPacket: [PacketIdentifier=1] [SubscribeReturnCodes=SuccessMaximumQoS1] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:07:57.6279777Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttSubAckPacket: [PacketIdentifier=1] [SubscribeReturnCodes=SuccessMaximumQoS1] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttSubAckPacket: [PacketIdentifier=1] [SubscribeReturnCodes=SuccessMaximumQoS1]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
[2017-11-12 17:07:57.637] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [9] [RX <<< MqttSubAckPacket: [PacketIdentifier=1] [SubscribeReturnCodes=SuccessMaximumQoS1]]
[2017-11-12 17:07:57.639] [Information] [MQTTnet.Core.Client.MqttClient] [4] [Received <<< MqttSubAckPacket: [PacketIdentifier=1] [SubscribeReturnCodes=SuccessMaximumQoS1]]
### SUBSCRIBED ###
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:07:58.2454105Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
[2017-11-12 17:07:58.250] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [4] [RX <<< MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]]
[2017-11-12 17:07:58.252] [Information] [MQTTnet.Core.Client.MqttClient] [5] [Received <<< MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]]
### RECEIVED APPLICATION MESSAGE ###
+ Topic = message
+ Payload = Mqtt is still awesome at 12.11.2017 17:07:56
+ QoS = AtMostOnce
+ Retain = False

MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:00.2591975Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
[2017-11-12 17:08:00.283] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [4] [RX <<< MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]]
[2017-11-12 17:08:00.285] [Information] [MQTTnet.Core.Client.MqttClient] [5] [Received <<< MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDc6NTg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]]
### RECEIVED APPLICATION MESSAGE ###
+ Topic = message
+ Payload = Mqtt is still awesome at 12.11.2017 17:07:58
+ QoS = AtMostOnce
+ Retain = False

MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:02.2576880Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
[2017-11-12 17:08:02.262] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [14] [RX <<< MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]]
[2017-11-12 17:08:02.264] [Information] [MQTTnet.Core.Client.MqttClient] [4] [Received <<< MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]]
### RECEIVED APPLICATION MESSAGE ###
+ Topic = message
+ Payload = Mqtt is still awesome at 12.11.2017 17:08:00
+ QoS = AtMostOnce
+ Retain = False

[2017-11-12 17:08:02.575] [Information] [MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter] [9] [TX >>> MqttPingReqPacket [Timeout=00:00:10]]
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: RX <<< MqttPingReqPacket
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:02.5840348Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"RX <<< MqttPingReqPacket","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPingReqPacket","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"RX <<< {0}","DeveloperMode":"true"}}}}
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPingRespPacket [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:02.5883702Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPingRespPacket [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPingRespPacket","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
The thread 0x6418 has exited with code 0 (0x0).
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDI=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:04.2694224Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDI=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDI=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDQ=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:06.2711910Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDQ=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDQ=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
The thread 0x24a4 has exited with code 0 (0x0).
The thread 0x6414 has exited with code 0 (0x0).
The thread 0x5e08 has exited with code 0 (0x0).
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:08.2857505Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDY=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:10.2906312Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MDg=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MTA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-12T16:08:12.3018253Z","tags":{"ai.operation.name":"GET /mqtt","ai.application.ver":"<IP_ADDRESS>","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|d87e33f3-407baec4a919b670.","ai.location.ip":"<IP_ADDRESS>","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.operation.id":"d87e33f3-407baec4a919b670","ai.internal.nodeName":"RICSTUDIO"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MTA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"AspNetCoreEnvironment":"Development","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDEyLjExLjIwMTcgMTc6MDg6MTA=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","{OriginalFormat}":"TX >>> {0} [Timeout={1}]","1":"00:00:15","DeveloperMode":"true"}}}}
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in MQTTnet.Core.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in System.Private.CoreLib.ni.dll
[2017-11-12 17:08:12.667] [Warning] [MQTTnet.Core.Client.MqttPacketDispatcher] [10] [Timeout while waiting for packet of type 'MqttPingRespPacket'.]
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in MQTTnet.Core.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in System.Private.CoreLib.ni.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in System.Private.CoreLib.ni.dll
[2017-11-12 17:08:12.733] [Warning] [MQTTnet.Core.Client.MqttClient] [10] [MQTT communication exception while sending/receiving keep alive packets.]
Exception of type 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' was thrown.
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in MQTTnet.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in System.Private.CoreLib.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in System.Private.CoreLib.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in MQTTnet.Core.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in System.Private.CoreLib.dll
'd

for me it looks like this is the same issue as #71 im currently triing to setup a unittest that verifies what happens if sockets loose connection. but that is kind of hard.
i found some issue that in case the server is stopped the existing sessions are not stopped. resulting in clients that think they are still connected. but that doesnt seem to be the issue at hand.

Hm, I changed WebSocketStream to buffer the received data. The UWP client is running now !!!
Here my quick&dirty change
#if BUFFERED
        Queue<byte> _queue = new Queue<byte>(10000);
        public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
        {
            int currentCount = count;
            int currentOffset = offset;
            while (currentCount > 0 && _queue.Count > 0)
            {
                buffer[currentOffset++] = _queue.Dequeue();
                currentCount--;
            }
            if (currentCount == 0)
            {
                return count;
            }
            while (_webSocket.State == WebSocketState.Open)
            {
                byte[] buf = new byte[10000];
                var response = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buf, 0, 1000), cancellationToken).ConfigureAwait(false);
                for (int i = 0; i < response.Count; i++)
                {
                    _queue.Enqueue(buf[i]);
                }
                while (currentCount > 0 && _queue.Count > 0)
                {
                    buffer[currentOffset++] = _queue.Dequeue();
                    currentCount--;
                }
                if (response.MessageType == WebSocketMessageType.Close)
                {
                    await _webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, cancellationToken).ConfigureAwait(false);
                }
                if (currentCount == 0)
                {
                    return count;
                }
            }
            if (_webSocket.State == WebSocketState.Closed)
            {
                throw new MqttCommunicationException("connection closed");
            }
            return currentOffset - offset;
        }
#else

@JanEggers I also experienced some lost connections when using my ESP8266 devices. Very rarely the connection is lost directly after connect. I mean in a couple of ms. I also extracted two exceptions. But because of a release build I only got
NullRef MqttClientSession.RunAsync > MoveNext

and
CancellationTokenDisposed MqttClientPendingMessagesQueue.Start  > Task.Run

Maybe those errors are related to the lost connections. I already investigated the code but I was not able to find something yet. Still checking...

My experience is that the problem occurs only with UWP websocket clients. All other (netcoreapp2.0 console app, net452 app) are running properly and https://github.com/dotnet/corefx/issues/21102 points in the direction that websocket.ReceiveAsync behaves different on UWP. This was the reason I tried the buffered receive version, with success !!!

Shall I send you the UWP Websocket client sample code to verify the problem and try my "buffered WebSocketStream Receiver" fix ? I simply created a default UWP app and added your ClientTest.RunAsync function to the MainPage (replacing Console by System.Diagnostics.Debug).
private void Page_Loaded(object sender, RoutedEventArgs e)
{
       Task.Run (async () => {
        await Task.Delay(5000);
        await RunAsync(); });
}

Anyhow I think that calling WebSocket.ReceiveAsync bit for bit is not very efficient. My buffered ReadAsync is not threadsafe, but I think reading from the websocket is done only by one thread.

@ChristianRiedl I am trying to apply your fix but I have some problems in understanding the problem. Also I cannot test it because the UWP implementation works on my machine.
I have problems in understanding why this queue is required. I don't want to say that it is not required I just don't get why it is required. The data you receive is pushed into that you and this will result in having some bytes in the queue after the read process is completed (requested count reached). So these bytes are used at the next call. Is this assumption correct?

@chkr1011 I created an empty UWP application (Build 16299) and added your RunAsync from ClientTest.cs to MainPage. I got a MqttCommunicationTimeout exception after running 20-30 seconds running and receiving messages.
Than I found the  info at https://github.com/dotnet/corefx/issues/21102 about different ClientWebSocket.ReceiveAsync behavior. So I added the buffering Queue, and now the UWP app is working as expected. Can you send me your UWP testproject to<EMAIL_ADDRESS>?

@ChristianRiedl I usually use the UWP test app from this repo. It has several feature like starting a server and also connecting via different channels and publishing/subscribing. Is it possible that you test with that application instead and let me know if it also fails after 20-30 seconds (sharing the traces from the app window)?

@chkr1011 I tested with your UWP app running UWP and AspNetCore2 in one VS2017 session. I connected successfully to  ws://localhost:54191/mqtt. AspNetCore was running once as dotnet app once via IISExpress (both with same result). Before subscribing no error occurs. After subscribing topic # (I tried AtLeastOnce and AtMostOnce) I get 2 - 3 messages, than the timeout exception. Using my buffered WebSocketStream  it was running and receiving without error for 10 minutes, than I stopped it.
In the log I removed a lot of such messages from Application Insight, Where is it configured and initialized ?
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2017-11-16T18:23:51.0208207Z","tags":{"ai.internal.nodeName":"RICSTUDIO","ai.operation.id":"541d611c-4ffdad94e405cd69","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.cloud.roleInstance":"RICSTUDIO","ai.operation.parentId":"|541d611c-4ffdad94e405cd69.","ai.location.ip":"<IP_ADDRESS>","ai.application.ver":"<IP_ADDRESS>","ai.operation.name":"GET /mqtt"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"TX >>> MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDE2LjExLjIwMTcgMTk6MjM6NDk=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0] [Timeout=00:00:15]","severityLevel":"Information","properties":{"{OriginalFormat}":"TX >>> {0} [Timeout={1}]","AspNetCoreEnvironment":"Development","1":"00:00:15","CategoryName":"MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter","DeveloperMode":"true","0":"MqttPublishPacket: [Topic=message] [Payload=TXF0dCBpcyBzdGlsbCBhd2Vzb21lIGF0IDE2LjExLjIwMTcgMTk6MjM6NDk=] [QoSLevel=AtMostOnce] [Dup=False] [Retain=False] [PacketIdentifier=0]"}}}}
Log without Application insight
MQTTnet.Core.Server.MqttServer:Information: Started.
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: RX <<< MqttConnectPacket: [ClientId=XYZ] [Username=] [Password=] [KeepAlivePeriod=5] [CleanSession=True]
MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter:Information: TX >>> MqttConnAckPacket: [ConnectReturnCode=ConnectionAccepted] [IsSessionPresent=False] [Timeout=00:00:15]
MQTTnet.Core.Server.MqttServer:Information: Client 'XYZ': Connected.

MQTTnet.Core.Exceptions.MqttCommunicationException: connection closed
   at MQTTnet.Implementations.WebSocketStream.<ReadAsync>d__14.MoveNext() in C:\Dev\RTS\MQTTnet-master\Frameworks\MQTTnet.Netstandard\Implementations\WebSocketStream.cs:line 110
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at MQTTnet.Implementations.WebSocketStream.Read(Byte[] buffer, Int32 offset, Int32 count) in C:\Dev\RTS\MQTTnet-master\Frameworks\MQTTnet.Netstandard\Implementations\WebSocketStream.cs:line 121
   at System.IO.Stream.ReadByte()
   at MQTTnet.Core.Serializer.MqttPacketReader.ReadHeaderFromSource(Stream stream, CancellationToken cancellationToken)
   at MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter.<ReceiveAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at MQTTnet.Core.Adapter.MqttChannelCommunicationAdapter.<ReceivePacketAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at MQTTnet.Core.Server.MqttClientSession.<ReceivePacketsAsync>d__21.MoveNext()
MQTTnet.Core.Server.MqttClientSession:Information: Client 'XYZ': Disconnected.
Exception thrown: 'System.OperationCanceledException' in System.Collections.Concurrent.dll
MQTTnet.Core.Server.MqttClientSession:Information: Client 'XYZ': Disconnected.
MQTTnet.Core.Server.MqttServer:Information: Client 'XYZ': Disconnected.
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in MQTTnet.Core.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in MQTTnet.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in System.Private.CoreLib.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in System.Private.CoreLib.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in MQTTnet.Core.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in System.Private.CoreLib.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationTimedOutException' in System.Private.CoreLib.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in MQTTnet.Core.dll
Exception thrown: 'MQTTnet.Core.Exceptions.MqttCommunicationException' in System.Private.CoreLib.dll

Hi thank you for sharing. I did not add AppInsights actively!? I will try to reproduce it in the way you described.

@chkr1011 I forgot to tell you that I added the subprotocol. Otherwise I got no connection.
        options.ChannelOptions = new MqttClientWebSocketOptions
                {
                    Uri = Server.Text,
                    SubProtocols = new List<string> { "mqtt" },
                    TlsOptions = tlsOptions
                };

This issue is fixed in the preview version 2.5.2-rc1 (available as nuget).  Please let me know if the issue is now fixed.

@chkr1011 thanks, for me it is fixed now


Main - SOS

[x] Creation of home fragment
[x] creation of contacts fragment
[x] creation of profile fragment
[ ] creation of settings fragment
[x] Red blinking SOS button in Home fragment
[x] Bottom navigation

We have no Settings Screen in our Wireframes

@SAM4you thanks... I will open a new issue for the settings screen and remind @Balthazar-02 to layout a wireframe for it


Jerky movements while rotating in-place

Hello @bjsowa @szlachcic !
I've spawned the leo rover in Gazebo using this repo & initiated teleop with keyboard using this repo. When I try to rotate the rover in-place, it doesn't rotate all the time & even when it rotates, it does so jerkily. I'm uploading the video of the motion here.
Description of the video:

When I command the rover to rotate continuously (by pressing 'l' key), it starts to rotate but suddenly stops after a short time (Although a non-zero angular.z is continuously being written to the twist msg on cmd_vel topic - As seen in the bottom terminal of the video)
Then, I command it to move forward in a straight line (by pressing 'i' key). It moves in a curved line. (Although only linear.x is non-zero in the twist msg on cmd_vel topic - As seen in the bottom terminal of the video)
Then, I stop pressing any key but the rover still rotates around (the twist msg has on cmd_vel has no non-zero component during this time period).
It looks as if the rover stops executing the commands it receives but accumulates them & resumes executing them at a later point of time.

Can you please help me understand why this is happening & how to fix it? Any help is greatly appreciated!

The problem is that the wheels have problems overcoming the static friction, the robot appears to have stopped but there is still torque applied and the integral component of the PID controller increases. Then, when you start driving forward the integral components take a while to decrease, that's why the robot does an arc path.
The friction parameters were fine-tuned to world that uses the ODE cone friction model. You can try our marsyard worlds or you can try this one:
<?xml version="1.0" ?>
<sdf version="1.7">
  <world name="default">
    <physics type="ode">
      <ode>
        <solver>
          <friction_model>cone_model</friction_model>
        </solver>
      </ode>
    </physics>

    <!-- A global light source -->
    <include>
      <uri>model://sun</uri>
    </include>
    <!-- A ground plane -->
    <include>
      <uri>model://ground_plane</uri>
    </include>
  </world>
</sdf>

Save this to a file, then run:
roslaunch leo_gazebo leo_gazebo world_name:=<absolute path to the world file>

The rover still moves a little jerky but it doesn't get stuck anymore when rotating in-place.


SourceKit: do not print implementation-only imports

Implementation-only imports are unnecessary in generated module interfaces, since they don't have an effect on the module's public interface:

implementation-only imports aren't exported to the module's dependencies
module's public API cannot reference symbols imported as implementation-only.

This change hides @_implementationOnly imports from generated Swift module interfaces.
It allows, for example, to hide import Darwin/import WinSDK/import Glibc statements from SwiftPM's PackageDescription library interface.

@swift-ci please smoke test

@swift-ci please smoke test

This looks quite reasonable, thank you. I would love it if we could have a dedicated test under test/IDE that checks to make sure we print @_implementationOnly, @_exported, and @_private but it can be done in a follow-up PR.

This looks quite reasonable, thank you. I would love it if we could have a dedicated test under test/IDE that checks to make sure we print @_implementationOnly, @_exported, and @_private but it can be done in a follow-up PR.

@CodaFi hmm, not sure I understand it correctly – there's already a test checking that @_implementationOnly isn't printed in the generated module interface (test/Serialization/Recovery/implementation-only-override.swift) and a few tests for the @_exported attribute (for example, test/IDE/print_clang_framework_with_overlay.swift).
implementation-only-override.swift uses swift-ide-test, perhaps it could have been placed under test/IDE as well.
Is there an untested part that I'm missing?

@CodaFi hmm, not sure I understand it correctly – there's already a test checking that @_implementationOnly isn't printed in the generated module interface (test/Serialization/Recovery/implementation-only-override.swift) and a few tests for the @_exported attribute (for example, test/IDE/print_clang_framework_with_overlay.swift).
implementation-only-override.swift uses swift-ide-test, perhaps it could have been placed under test/IDE as well.
Is there an untested part that I'm missing?

The test under Serialization is trying to make sure that overrides from implementation-only imports can be serialized without issue and show up in the generated interface. I would like a dedicated test for just the expectation that attribute-qualified imports show up in the headers to keep our concerns well separated.

The test under Serialization is trying to make sure that overrides from implementation-only imports can be serialized without issue and show up in the generated interface. I would like a dedicated test for just the expectation that attribute-qualified imports show up in the headers to keep our concerns well separated.

Ah, okay, sounds fair to me. I've sent a new PR with a test: https://github.com/apple/swift/pull/35706


Chore: Typos and grammar

Hi!
Working with the library and studying the source code, and PRs I've noticed some super simple grammatical errors, but there are some typos as well. Maybe this will help keep the code even cleaner and more correct :)

Looking again, I agree with your suggestions. I used grammarly.com and from the looks of it, there are still a lot of nuances in the suggestions that aren't perfect :|


feature pull request

Initial commit with features to clean up audio files after transcribing and downloading the video file by commenting/uncommenting lines.

wrong branch


update example to work with more recent versions of forcelayout and p…

When using the original code with the more recent versions of forcelayout and physics.simulator I found that 1) there was a javascript error being thrown from interaction with ngraph.event and 2) the physics parameters I had specified were being ignored. The proposed changes seem to fix both of these issues.
As a new user of ngraph I naturally look to the example code for my own starting point, thus I think it would be generally helpful to the community of users to update the example code to work with the most recent versions of other ngraph components.
Thanks!  ~ry

Thank you! I also updated the package.json with latest version of dependencies for this example.


remove extra spaces

sprng factories failing to load the class because of the extra spaces issue

Can you rebase onto the 1.1.x branch and force push?


Selecting an item from history adds the history index as well

This might be something on my end, with my configuration, but recently when I select a history entry (after pressing Ctrl + R) in clink i get a list of entries like so:

If I select one of the entries in the history the command prompt changes to:

It adds the history index of the selected command to the command prompt

The screen shots are too small to see what's happening.
But I think you have fzf set up, and I think you don't have the latest fzf.lua script.

Ah, yes, forgot to mention.
I have clink and clink-gizmos (which includes fzf.lua)
I'll update and report back

Everything ok with the latest fzf.lua script. Sorry for the trouble.


pd.NA is treated as a string value when registered in a db.

It's late, so I'll update this with some further information tomorrow morning as appropriate.
This impacts anywhere that either requests nulls be removed/adjusted or that compares strings. This rather tragically includes most of the modelling process.
The good news is that this is an issue with pandas and how pandas deals with csv files, rather than an issue with splink.
Working exmaple:
Or in code form:
from splink.duckdb.duckdb_linker import DuckDBLinker
import pandas as pd
import numpy as np

from tests.basic_settings import get_settings_dict

dict = {
    "unique_id": [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
    "first_name": ["a", "b", "c", "d", np.nan,np.nan,np.nan,np.nan,np.nan,np.nan, pd.NA,pd.NA,pd.NA,pd.NA,pd.NA],
    "numbers": [1,2,3,4,5,6,7,8,9,pd.NA,pd.NA,pd.NA,pd.NA,pd.NA, np.nan]
}
df = pd.DataFrame(dict)

linker = DuckDBLinker(
    df,
)

linker.profile_columns("first_name")

No clear way to fix this, so closing issue

Pardon my naiveté, but why is there no clear way to fix this?

I think there's no clear way to fix this when going through pandas.  The solution is to avoid pandas altogether. If you're using the duckdb backend, load the data in duckdb and give it to Splink as a duckdbpyrelation.  If you're using the spark backend do the equivalent in spark.


schema violation error in request transformer plugin

Hello
Please somebody help me find my error   when I try to add or append a new Authorization header with respective value
and I get the schema violation error.

The problem has been solved


Remove underscore.js dependency and increment semver patch version

the new helpers.js is 2kb unminified/unzipped, whereas the unminified/unzipped underscore.js dependency is 52kb
all tests pass

Great!

Thanks, @Illyism! Any desire to merge this in @kennyt, @mrourke, @Illyism?

Is reducing file size server-side worth it? The fact that underscore is actively maintained and has many eyes on it really makes it reliable and I think that is much higher priority than reducing the file size a bit. At best, we can probably find another module that is a slimmer version of underscore rather than writing all these functions ourselves

Reducing file-size is not the main reason for this change (as you mentioned, this is server-side). The file-size difference was used as a proxy for bloat. The main reason for this PR is to remove a hard external dependency, which you do not have control over. As you mention, you can probably find another module that is a slimmer version of underscore; however, that wouldn't give you control over the dependency. There are many arguments for removing external deps so I won't rehash them. My favorites are: external deps increase the likelihood of a backdoor/injection through the downloaded dep, and external deps make less people use the software (especially enterprise/corporate). I feel more comfortable with 100 LOC that I can maintain than over 1500 LOC that I could change at any moment.


Resilient connection

Summary of the Pull Request
Using an exponential backoff strategy for the http calls in the agent.
PR Checklist

[x] Applies to work item: #79
[x] CLA signed. If not, go over here and sign the CLI.
[ ] Tests added/passed
[ ] Requires documentation to be updated
[x] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Info on Pull Request
What does this include?
Validation Steps Performed
How does someone test & validate?

Every task in testing is failing with
[
'task failed. exit_status:code=1 signal=None success=False',
'',
"[2020-10-26T22:43:50Z ERROR onefuzz_agent] error running task: Couldn't upload file.  path:/onefuzz/3f059c05-2b1b-44b9-985f-ae1c6135ad1b/task_inputs_2/eb408ddc4fa484e6befdf5954e56a2198c7a9fab dir:task_inputs_2 err:This request cannot be retried because it cannot be cloned\nError: Couldn't upload file.  path:/onefuzz/3f059c05-2b1b-44b9-985f-ae1c6135ad1b/task_inputs_2/eb408ddc4fa484e6befdf5954e56a2198c7a9fab dir:task_inputs_2 err:This request cannot be retried because it cannot be cloned\n"
]

Performing integration testing now


02df

Rewrote tutorial 02 to start with dataframes.  Considered replacing it with http://holoviews.org/getting_started/Introduction.html , which already does that and perhaps is more compelling at the start, but it seems like the additional material covered here would be hard to duplicate.

Closed; will rebase on new master.


Play Range start and end settings

Have you read the FAQ and checked for duplicate open issues?
Yes
What version of Shaka Player are you using?
v3.3.2
Can you reproduce the issue with our latest release version?
NO
Can you reproduce the issue with the latest code from main?
NO
Are you using the demo app or your custom app?
Demo APP
If custom app, can you reproduce the issue using our demo app?
__
What browser and OS are you using?
Chrome, Firefox, safari edge on iOS, iPadOS, macOS, Linux, windows
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
What are the manifest and license server URIs?

https://dash.akamaized.net/akamai/bbb_30fps/bbb_with_tiled_thumbnails.mpd
https://multiplatform-f.akamaihd.net/i/multi/will/bunny/big_buck_bunny_,640x360_400,640x360_700,640x360_1000,950x540_1500,.f4v.csmil/master.m3u8
What configuration are you using?  What is the output of player.getConfiguration()?

playRangeStart: 10,
playRangeEnd: 100
What did you do?

I try to set the start and end range for a VOD
What did you expect to happen?
To have a timeline same as start and end range declared
What happened?

When I try to apply the play range start and end for DASH, I have a perfect timeline UI with the range declared, but the video is stuck and doesn't play further unless I click the timeline it plays than when I take back the seek to the start it Stops again.

FOR HLS,
When we declare the range the UI is not well set up and when the video ends we are not able to play the video again.

For mp4, the settings are not applied.
Thanks

Thanks :+1:

Hello, @joeyparrish Do we have any update on this bug?

Looks like PresentationTimeline has a bug, and our unit test for seekRange() doesn't exercise this case.  When the manifest parser notifies the timeline of explicit segment times, rather than just a range, the playRangeEnd is ignored.

Thanks for the quick workaround on this issue.
I would also like to remind you that the UI build for DASH seems perfect but the video doesn't play at the start.
When I click ahead of the timeline then it starts playing because it fetches the segments to play but again when the I take back the timeline to zero the video is stopped.
For HLS,
The scenario is different, here the timeline is not built perfectly, and on the video ended we are not able to play the video again
These settings are also applied for mp4 VOD rather than DASH and HLS?

I created a playback issue #4091
the setting seems to be perfect for both HLS and VOD but it gives playback problem


Configure build scan plugin

Rather than include the question on build it is nicer to allow the user to pass the --scan option like the CI does.

If you run a build with --scan without agreeing to the terms of service then you'll get asked every single time. The current setup asks you at least one time to agree to the terms. After that you can run a local build with --scan and no question should pop up.
You can simplify the build by accepting the terms on behalf of anyone that makes a build but some may object to that.

It would be nice if the build scan question is only asked if a scan is being run. When you don't care about scans then the question is annoying.

To be clear the scan statement would be best if not output unless a scan is run.

Let me think about that, it may be the case that agreeing on the terms of service too late in the process won't have the desired effect.

It does not ask if no scan is run but it makes for noisy output. Feels like the statement about setting up acceptance should only be output if a scan is run and no acceptance is in place.

BTW I had a look at a few scans and it is useful for seeing where time is spent. Thanks.

Is there a means of telling if a scan has been requested so that the statement can be conditionally printed?

I think it's possible to determine if a scan was requested, i.e, the --scan command flag was given, but not with the current version of the com.gradle.build-scan plugin. There's some extra code required for that. This feature could be added to https://aalmiray.github.io/kordamp-gradle-plugins/#_org_kordamp_gradle_plugin which simplifies configuration of the base com.gradle.build-scan plugin.


An empty commit to trigger CICD to force a registry image rebuild

The number of commits needs to be incremented to trigger another rebuild of the registry image.

/assign @mbarnes

/lgtm
/approve


bufio:  panic when write to file use buffio

Go version
go version go1.23.1 windows/amd64
Output of go env in your module/workspace:
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\x\AppData\Local\go-build
set GOENV=C:\Users\x\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.com.cn,direct
set GOROOT=D:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=D:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.23.1
set GODEBUG=
set GOTELEMETRY=local
set GOTELEMETRYDIR=C:\Users\x\AppData\Roaming\go\telemetry
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=xxx -gno-record-gcc-switches

What did you do?
write to file use writer.Write
_, err := c.writer.Write(message)
What did you see happen?
panic: runtime error: slice bounds out of range [:4124] with capacity 4096
goroutine 40723 [running]:
bufio.(*Writer).Flush(0x69cd7c?)
/data/software/go1.20.5/src/bufio/bufio.go:628 +0x185
bufio.(*Writer).Write(0xc0002b1b80, {0xc000183000?, 0xc0002e5bb8?, 0x6?})
/data/software/go1.20.5/src/bufio/bufio.go:672 +0xd0
rgs/record.(*RecordClient).WriteToFile(0xc00069c930, 0x2, {0xc000183000, 0xcaf, 0x1000})
What did you expect to see?
wite to file

please include a reproducer

The most likely cause here is a Write method that does not behave as described at https://pkg.go.dev/io#Writer.


Dis: Ice Boss Idea

Dis, as it appears on The Divine Comedy, is the Lord of Hell himself, a partially frozen, tri-headed monstruosity. The flap of his wings brings forth a blizzard, and his three faces are busy chewing for all eternity on the most important betrayers of history.
As a concept, I can see him as sort of an static boss, since it's partially frozen, that could maybe blink or move very fast but on few occasions.
Positioning would be key against him, and most of his ice abilities would revolve around either slowing down players or even rooting them.
Some ideas for his skills could be:
-Ice Spikes: Stalagmites (Or stalactites? I always mess up both) suddendly sprout forth from the ground, dealing heavy damage and pushing players upwards (Like Nyx's stun). They would come out transversally to the way the boss is looking. This would be the boss main source of damage.
-Freezing Gale: Very similar to, say, Venomous Gale of Venomancer, but it also pushes players aside. The slow of this ability plus the knockback could make dodging the ice spikes quite tricky.
-Frozen Eyes: To tie the flavour of the boss with DotA mechanics, maybe he could be able to summon floating Eyes of Skadi. This eyes would attack nearby targets really fast, although for little damage. However, being under a constant stream of slow and damage can wear down heroes, so focusing them down will become a priority, giving Dis more room to breathe.
Ice Beam: If an Eye of Skadi is left alive long enough, it will place itself up in the air, becoming invulnerable, and shoot down a freezing ray. If a player touches the beam, they will become rooted and take heavy damage. Ideally, the Eyes would try to freeze playes where they could be hit by the Ice Spikes.
Snowblind: After the Ice Beam, the Eyes could launch themselves against the players, exploding on contact with the ground, dealing medium damage, slowing players and reducing their chance to hit for a few seconds.
Betrayal: The boss would receive some strong visual indicator, like say, a red cloud around him. During this period, a big % of the damage dealt to the boss (Say, 65% or something) would be redirected to nearby players, so your team could very easily destroy you. Esentially, imagine Mercurial's passive, but far stronger. After this ends, Dis blinks to another spot, and the fight resumes normally, only that his spikes will now come from a different direction.
Tie-in concept: Eye of Dis: While  thinking of this boss, and its whole Eye of Skadi theme, maybe we could have some flavourful upgrade for our good ol' friend, the aforementioned Eye of Skadi. Maybe, to reach this Eye of Dis you would need some boss items only he can drop (Or that he has the highest chance). This Eye could maybe give you one of his abilities as an active (Like Betrayal, if we also include Blade Mail in the formula) or the Ice Spikes, or whatever. Just as additional flavour.
This is of course a very flawed concept in many aspects. There's so much that can be done with ice and frost and the like, as well as the concept of the betrayer, who is forever bound to punish those who follow in his steps. Take this mock-up of a boss as a suggestion.

Great design! I love this take on an Ice Demon, and also the use of Skadi. May I contribute?
I think his Betrayal aspect could use something like:
Incite Betrayal: Dis's influence incites mistrust and disloyalty among the heroes. All heroes who are within a 300 radius of each other immediately start attacking each other, as if under Winter Wyvern's original ultimate. Mutes all attack slows as long as heroes are attacking their allies.
This would make positioning even more important, and is also something that can be played around, unlike the current ability, which basically amounts to blademail.

Well, in my iteration the damage reflection happens close to him, at least that's the idea I tried to convey, so if all meelee heroes run (Remember, he's static or very slow in any case) the ranged one's could still deal damage in the mean time.
Your idea is not bad either, and I really dig it (I just really like Winter Wyvern...) but I feel that there was a general dislike for big loss of control of the PC among the crew during our discussions, and I felt that just this damage bounce required more reaction rather than prevention.
Hell, maybe even both concepts could be added as different abilities for the boss.
Anyways, any further comment on the boss is greatly appreciated, not only by me, but the entire team. We are here to brainstorm after all!! :D


整库多表同步，其中一个表同步失败，怎么恢复？

Search before asking

[X] I searched in the issues and found nothing similar.

Motivation
整库多表同步，其中一个表同步失败，怎么恢复？
Solution
No response
Alternatives
No response
Anything else?
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

Considering collaboration with developers around the world, please re-create your issue in English on Apache Jira under project Flink with component tag Flink CDC. Thank you!


Bug: Update tuf client tests with go-tuf to import deprecated ECDSA support

Description
Presubmits on tuf client tests with go-tuf tuf-client is failing because it does not support the ECDSA hex-encoded keys unless we import a deprecated package.
Version

I will fix temporarily by pinning the tuf client version, and then resolve this issue when I write a simple wrapper that builds the client with the deprecated support.

This is complete here: https://github.com/sigstore/root-signing/blob/0496f2be0dfd3bc0078e0ee50e8dd642e8d0da27/.github/workflows/tuf_client_tests.yml#L55
We technically don't NEED it anymore, but keeping it around.


disable the http2 attempt upgrade when http2 set to false

Background
Even we disable the http2 from command line by set -http2=false, vegeta will still try to attempt http2 upgrade. So, when server ALPN contains h2 support, vegeta will finally still use the http2 connection to server. This fully prevents the user from testing http1.1 protocol when server ALPN support both http1.1 + h2.
This is very common case when server is using istio as a proxy, since istio always enable ALPN with http1.1 + h2 support. So there is no way to use vegeta to test istio based server with http 1.1 protocol
Solution
Based on https://go.dev/src/net/http/transport.go, this is because the go transport library default try to enable ForceAttemptHTTP2, so we should disable it when user set -http2=false from command line to ensure http1.1 only.
	// ForceAttemptHTTP2 controls whether HTTP/2 is enabled when a non-zero
	// Dial, DialTLS, or DialContext func or TLSClientConfig is provided.
	// By default, use of any those fields conservatively disables HTTP/2.
	// To use a custom dialer or TLS config and still attempt HTTP/2
	// upgrades, set this to true.
	ForceAttemptHTTP2 bool

@tsenart Could you or any one review this? I believe this is not trivial change, but target a very common scenario.


Support private keys with passphrases.

Motivation:
Many users want to use passphrases to secure their private keys. We have not
previously supported any mechanism to provide that passphrase other than
the default OpenSSL passphrase callback. This is not useful in all
circumstances, and is particularly troubling in the case of automated
systems. We should add better support.
Modifications:
Enhance OpenSSLPrivateKey to allow setting a passphrase callback.
Enhance SSLContext to allow setting a passphrase callback.
Result:
Users can set passphrase callbacks.

Updated.

Ok, addressed this feedback. We now hold a protocol existential as much as possible, which reduces the amount of refcounting I do myself. Can only lead to the code being more correct. :smile:


Tb update res

Updating data guide spatial resolution table to go from 50km to 10km for modeled cyclones and from 4km to 1km for modeled floods

Added an edit to change the link for STORM from their 2020 paper to a 2022 paper


Log ignored requests (--ignore-hosts) that are forwarded

Problem Description
Requests that go through --ignore-hosts are not logged as a request. This makes it inconvenient to know if any have happened even if you can't see their contents.
Proposal
Make it possible to see ignored requests in the request log of mitmproxy.
Alternatives
Additional context
It's sometimes necessary to use that with stuff that you can't make ignore SSL verification errors, but still want to go through the mitmproxy for any reason.

What do you mean by "see ignored request"? Are you looking for the entire HTTP request line, or just the hostname?

Like, we get a CONNECT request that gets forwarded off to somewhere, it would be nice to know that, even if the underlying connection is encrypted and ignored by ignore-hosts.

I would love to see this as an option. Right now ignore_hosts is hardcoded to set ignore=True on TCPLayer/UDPLayer, which sets flow = None and makes the connection completely invisible to logging etc.
Meanwhile, it's possible to implement using an addon:
from mitmproxy.addons.next_layer import NextLayer, NeedsMoreData
from mitmproxy.proxy import layers

class MyNextLayer(NextLayer):
    def next_layer(self, nextlayer):
        if nextlayer.layer:
            return

        context = nextlayer.context
        tcp_based = context.client.transport_protocol == "tcp"

        try:
            if self._ignore_connection(context, nextlayer.data_client()):
                nextlayer.layer = (
                    layers.TCPLayer(context)
                    if tcp_based
                    else layers.UDPLayer(context)
                )
        except NeedsMoreData:
            return

addons = [MyNextLayer()]

@nneonneo: if an option would make your life easier, I'd be more than happy to merge a PR for now without asking any further questions. Very grateful for your help with issue triage and PRs, so that's the least I can do. :)
Thinking a bit more long term, I suppose we should figure out if we want a) an option to enable more or less regular TCP/UDP flows, or b) a dedicated Flow type that just records the presence of a flow without data. The idea with the latter would be that we could also add "TlsHandshakeError" flows, and the surface that properly in the UI. The latter is obviously a bit more work, but that feels like a useful addition in terms of UX.

The new Wireguard mode enables practically arbitrary TCP/UDP interception, and is sufficiently powerful that we probably do want new functionality to enable new use cases. In principle, it would be nice to have mitmproxy record literally every flow that is coming through (kind of like wireshark), including TLS handshake errors.
In general, for live requests there are actually three distinct actions that could be subject to filtering:

TLS interception: intercepting and decrypting TLS traffic; disabled by ignore_hosts but enabled by tcp_hosts
Higher-level protocol layers: parsing HTTP, etc. and invoking higher-level protocol processing; disabled by ignore_hosts and by tcp_hosts
Flow recording: keeping track of a flow in memory for viewing, hooking, saving; disabled by ignore_hosts but enabled by tcp_hosts

I can imagine use-cases for separating these things: disabling TLS interception for a host but leaving recording enabled is a useful way to snoop on traffic purely passively, to be able to see things like TLS fingerprints and SNI information; specifically disabling higher-level protocols is useful to disable HTTP parsing for non-HTTP flows (e.g. SIP) or when you don't actually care about parsing even an unencrypted HTTP connection (right now allow_hosts will still record plaintext HTTP even from non-allowed hosts), and so on.

As for my use-case, for the time being I am happy with just having a slightly monkey-patched proxy, because I really only want the ignored host list for logging purposes (discovering hosts that I should be intercepting but am not currently intercepting).

It seems mitmproxy also doesn't log requests that failed SSL/TLS as flows. Could be nice as well. Both ignored requests and SSL/TLS failures are only logged to events.


Add mockgen installation to the script

What type of PR is this:

What does this PR do / why we need it:
Which issue(s) this PR fixes:

Fixes #
PR acceptance criteria:

[ ] Unit test

[ ] Integration test

[ ] Documentation

How to test changes / Special notes to the reviewer:

Remove mockgen binary.

rm $(which mockgen)

Run the script.

  user-guides/quickstart/docs-mdx/java/java_odo_dev_output.mdx
  Expected
      <string>: Â Â (
      Â Â 	"""
      Â Â 	... // 10 identical lines
      Â Â 	âœ“  Added storage m2 to component
      Â Â 	âš   Pod is Pending
      -Â 	âœ“  Pod is Running
      Â Â 	âœ“  Syncing files into the container [1s]
      Â Â 	âœ“  Building your application in container (command: build) [1s]
      Â Â 	... // 9 identical lines
      Â Â 	[Ctrl+c] - Exit and delete resources from the cluster
      Â Â 	[p] - Manually apply local changes to the application on the cluster
      +Â 	âœ“  Pod is Running
      Â Â 	```
      Â Â 	"""
      Â Â )

  to be empty
  In [It] at: /go/odo_1/tests/documentation/user-guides/doc_user_guides_quickstart_test.go:256
------------------------------

Flaky test - addressed by https://github.com/redhat-developer/odo/pull/6545
/override Kubernetes-Integration-Tests/Kubernetes-Docs-Integration-Tests

/override OpenShift-Integration-tests/OpenShift-Integration-tests
Non related tests

/override /prow/v4.10-images
/override /prow/v4.11-images
/override /prow/v4.12-images
/override /prow/v4.9-images


New page shows incorrect privacy info

Issue Summary
When creating a new page that is a child of a private page the info section shows "Visible to all" but it should be "Private"

Steps to Reproduce

In wagtail bakery create a new page as a child of a private page.
Click the status icon, see the privacy option

Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead?

It should show something similar to the edit view, like this:

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: yes

Technical details

Python version: 3.12.5
Django version: 5.0.8
Wagtail version: 6.2a0 (dev)
Browser version: Chrome 128.

Working on this

Anyone can contribute to this. View our contributing guidelines, add a comment to the issue once you’re ready to start.

I can confirm this problem exists. From some quick digging it appears that within the tag def test_page_is_public(context, page): there is no page.path available when the page is not yet created (which makes sense).

https://github.com/wagtail/wagtail/blob/09a9261f7dc90608abb8e3ec00f7f2e83b021294/wagtail/admin/templatetags/wagtailadmin_tags.py#L276-L279
A potential fix might be to either just not show this panel when creating new pages in wagtail/admin/ui/side_panels.py.
class PageStatusSidePanel(StatusSidePanel):
    # ...
    def get_status_templates(self, context):
        templates = super().get_status_templates(context)
        # only inject the privacy status if the page exists (not for create page views)
        if self.object.id:
            templates.insert(
                -1, "wagtailadmin/shared/side_panels/includes/status/privacy.html"
            )
        return templates
``

Another potential fix would be to pass in a way to access the parent page to the template, this appears to be a bit of a larger change.

[`wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/privacy.html`](https://github.com/wagtail/wagtail/blob/main/wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/privacy.html#L5)
```html
{% extends 'wagtailadmin/shared/side_panels/includes/action_list_item.html' %}
{% load i18n wagtailadmin_tags %}

{% block content %}
    {% if page.id %}{% test_page_is_public page as is_public %}{% else %}{% test_page_is_public parent_page as is_public %}{% endif %}

Then, we need to pass the parent_page through from wagtail/admin/views/pages/create.py in the CreateView.get_side_panels method, then pass it through to the context in PageStatusSidePanel. We may need to also do the same for the EditView.


Forest Extension

Forest: This extension helps you stay focused by planting virtual trees. If you navigate away from your focus website before the tree matures, it dies. Over time, you can grow a virtual forest of your focused time.
Problem: Many people struggle with maintaining focus while browsing the internet, often getting distracted by other websites or tasks and losing productivity as a result.
Solution: Develop a browser extension called "Forest" that encourages users to stay focused by gamifying the experience. The extension should allow users to plant virtual trees when they want to focus on a specific website or task. If the user navigates away from the focus website before a certain time period elapses (indicating successful focus), the virtual tree dies. However, if the user successfully maintains focus, the tree matures and contributes to growing a virtual forest over time.
Alternatives:
Users could manually track their focus time using a timer or productivity app, but gamifying the experience with virtual trees may provide additional motivation.
Users could use website blockers or productivity extensions to limit access to distracting websites, but these solutions may not provide the same level of positive reinforcement as growing a virtual forest.
Additional context:
This feature request is for the creation of a browser extension called "Forest" that incentivizes focus and productivity by allowing users to grow a virtual forest of focused time. The extension should provide a fun and engaging way for users to track and improve their focus habits while browsing the internet.

@Sulagna-Dutta-Roy Thank You !!


It does not work under swift

After i run a simple example code using swift. I can not connect the embedded server. Does it work well for swift?

My fork works. https://github.com/colemancda/RoutingHTTPServer

Hi Colemancda,
Thanks for your great work!
And is there any special step to integrate your repo? Now i am using the CocoaPod to run RoutingHTTPServer

This original repo by MattStevens hasn't been updated since many years. Has development stopped? I have been using it since many years, there aren't really any problems, but the deprecations increase with time and so on. Is the fork by @colemancda the best/most up to date one? :-)


dyld: Library not loaded: @rpath/Realm.framework/Versions/A/Realm

Hello,
I just run a simple OS X app with Realm and it is crash when running with error:
dyld: Library not loaded: @rpath/Realm.framework/Versions/A/Realm
Referenced from: /Users/HTAD/Library/Developer/Xcode/DerivedData/REALM-cdxzyeduoxphmoefhjxihxunuzkd/Build/Products/Debug/REALM.app/Contents/MacOS/REALM
Reason: image not found
(lldb)
I don't know what image is ?
P/s: XCode 6.0.1, Mac OS X 10.9.5

@jpsim's linked comment worked for me. I would love if I could learn it from Swift/OSX documentation.

See this one : http://iosdevcenters.blogspot.in/2015/12/realm-error-dyld-library-not-loaded.html

See this one : http://iosdevcenters.blogspot.in/2015/12/realm-error-dyld-library-not-loaded.html

fix it by adding the Swift framework (MySDK.framework) to the "Embedded Binaries" section of the "General" tab of the Xcode project settings. Then deleting the derived data and rebuilding.
See: http://stackoverflow.com/questions/24211549/dyld-library-not-loaded-rpath-mydsk-framework-mydsk-swift-ios-8-0

I just migrated from cocoapods to carthage for better build times and was getting this error. @Archerlly your answer fixed mine! thanks!


[Bridgeless][IOS] bridge is nil on Swift when NewArch is enabled

Description
I maintain a native component library and trying to make it work with New Architecture interop. It builds without problem. However, the bridge in the view manager instance is nil and causing the component to crash.
To give context, the library is similar to RN Modal where it uses the view component as a host view of a view controller. It needs the bridge to attach RCTTouchHandler to the container view. The library is written in swift. https://github.com/lodev09/react-native-true-sheet
Any ideas or I'm missing something?
Steps to reproduce

Clone the library
Modify example/app.json and set newArchEnabled: true at line 38
Run the example project
Notice the crash

React Native Version
0.74.2
Affected Platforms
Runtime - iOS
Areas
Bridgeless - The New Initialization Flow
Output of npx react-native info
System:
  OS: macOS 14.5
  CPU: (10) arm64 Apple M1 Pro
  Memory: 355.75 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.20.3
    path: ~/.nvm/versions/node/v18.20.3/bin/node
  Yarn:
    version: 4.2.2
    path: ~/.nvm/versions/node/v18.20.3/bin/yarn
  npm:
    version: 10.8.1
    path: ~/.nvm/versions/node/v18.20.3/bin/npm
  Watchman: Not Found
Managers:
  CocoaPods:
    version: 1.15.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.5
      - iOS 17.5
      - macOS 14.5
      - tvOS 17.5
      - visionOS 1.2
      - watchOS 10.5
  Android SDK: Not Found
IDEs:
  Android Studio: 2023.2 AI-232.10300.40.2321.11668458
  Xcode:
    version: 15.4/15F31d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.10
    path: /usr/bin/javac
  Ruby:
    version: 3.0.6
    path: /Users/lodev09/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.74.2
    wanted: 0.74.2
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

Stacktrace or Logs
TrueSheet/TrueSheetViewManager.swift:22: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

Reproducer
https://github.com/lodev09/react-native-true-sheet/tree/main/example
Screenshots and Videos

Hi @lodev09, thanks for maintaining a library for React Native and thank you for the issue.
As the name implies, the Bridgless mode means No Bridge. So it makes sense that the bridge instance is actually nil: no bridge is actually initialized.
There are two questions that I need to ask you:

Are you migrating the component to Fabric?
Are you trying to use the component throught the Interop Layer?

My guess is that nobody is setting the bridge in the ViewManager, after it is created: in bridgeless mode, that's kind of expected, given that there is no bridge. But in theory it should work thanks to the Interop Layer.
I'll have a look at it later today or tomorrow.

As the name implies, the Bridgless mode means No Bridge. So it makes sense that the bridge instance is actually nil: no bridge is actually initialized.

Hmmm, interesting. I'm wondering how the RN Modal works on bridgeless then? It uses exactly the same code to set the TouchHandler -- the only difference is that my library is written in swift.

Are you migrating the component to Fabric?
Are you trying to use the component throught the Interop Layer?

I'm trying to run it through Interop layer first and then ultimately fabric. As I mentioned, everything works fine aside from the bridge being nil.
I just need the TouchHandler to work on New Arch :/

I'm wondering how the RN Modal works on bridgeless then?

RN Modals are actually already migrated to Fabric. When you run the new architecture, the component that is loaded is this one.

Ok, I got the issue. I'll work on a fix as there could be other libraries that rely on the bridge property to be set and it is currently not set in the interop layer.
I hope I'll be able to send the fix out before EOW.

Okay.. thank you so much @cipolleschi  🙏

swift is not yet supported for Fabric components right?

Tricky question!
Technically, no, it is not supported. What we mean with that is that you can't create a Fabric component using only Swift.
However, you can create a thin wrapper in objective-c++ and then forward the various calls to Swift. We haven't experimented with that setup a lot, and we are aware that there are some things that are not compatible and that will require some wrapping to make them work in Swift.

So.. https://github.com/facebook/react-native/pull/45329 should fix the crash. But, from what I am seeing, the buttons are not tappable... :/

Yeah.. I use the bridge to mainly setSize and create an RCTTouchHandler instance to be attached to the container view. I'm hoping this is supported on the Interop layer.
https://github.com/lodev09/react-native-true-sheet/blob/643f4e8f39aabfe1403de74042b25bdb392f18ce/ios/TrueSheetView.swift#L59

I need to ask around and investigate... I'll keep you posted!

Wow thank you! :D
Just need a new arch condition and should be go to go with the touch handler!

sizings looks a bit off, though... :(

Yeah, looks like bridge.setSize isn't working... is there any alternative? 😅
Code is here:
https://github.com/lodev09/react-native-true-sheet/blob/643f4e8f39aabfe1403de74042b25bdb392f18ce/ios/TrueSheetView.swift#L147-L152

It turns out, that method was not implemented in the interop layer for Bridgeless. I'll try to work on that tomorrow!

You're awesome @cipolleschi. Thank you so much!

Thank you for reporting the issue and for providing a way for me to work on that!

@cipolleschi yes, I'm really eager to migrate it to fabric -- it's just a bummer that swift isn't supported out of the box. But we'll get there 💪

This is my first native ios/android project so I'm not 100% familiar with all this yet 😅

@lodev09 I looked into this issue a little bit more.
The method that is missing is RCTUIManager setSize:forView:.
The reason why it hasn't been implemented in the Interop Layer is architectural.
In the Old Architecture, we have a native layer that creates a tree of views. Every view is backed by a shadow view that is used to compute the layout. The JS React tree talks to the platform and creates the Native tree and the Shadow tree at the same time. The old RCTUIManager has a mapping between native view and shadow view.
The native layer is the source of truth.
In the New Architecture, we have a shadow tree implementation in C++. In the New Architecture, the Shadow Tree drives everything and it creates the Native tree. The Native views don't have a handle to get the shadow views anymore and they can't really change the layout from the Native layer.
The shadow layer is the source of truth.
Due to this, we cannot really port the setSize method back to the Interop Layer.
I searched on Github and there are not a lot of libraries that uses that method (< 1% of all the React Native libraries) so it does not really make sense to support this API due to its architectural incompatibility with the New Architecture and its low usage.
My suggestion would be to migrate your library to Fabric properly and support both architectures.
We have some guides on how to do it:

Create a Fabric Component
Add Backward Compatibility

And you can use the New Architecture implementation of the React Native Modal component as base implementation for the Fabric version of it.
I would also love to help with review and suggestions on how to bridge ObjC++ with Swift. I made some experiments with modules in the past, here and here, but I never had the time to try with Componentes.
I hope these pointers can help you move forward with this.

@cipolleschi I see. I'm going to implement an alternative approach to updating the size as a short term solution for now, maybe in the JS side.
I agree with migrating to Fabric for the long term. I might just convert it all to ObjC 😅
Anyways, thanks again for your help!

in andoird view how to pass the event touches to chidren?


Delimiting lines have reduced or disappeared since version 6.2.0

Running the following command (as an example) :
gci C:\Windows\System32 -Filter win*.exe -Depth 1 -ErrorAction SilentlyContinue | ft Name,Length -GroupBy Directory
Returns delimiting lines between the grouped-by object and the property headers on version 6.1.3 (and Desktop Edition 5.1.x as well) :
Directory: C:\Windows\System32
Name                                  Length

WinBioDataModelOOBE.exe                60928
Windows.Media.BackgroundPlayback.exe   13312
Windows.WARP.JITService.exe            32768
WindowsActionDialog.exe                60928
WindowsUpdateElevatedInstaller.exe     47104
wininit.exe                           388376
winload.exe                          1468952
winlogon.exe                          779776
winresume.exe                        1179680
winrs.exe                              50176
winrshost.exe                          28672
WinSAT.exe                           2800128
winver.exe                             58880
Directory: C:\Windows\System32\Boot
Name           Length

winload.exe   1468952
winresume.exe 1179680
Directory: C:\Windows\System32\oobe
Name          Length

windeploy.exe 177664
Directory: C:\Windows\System32\wbem
Name        Length

WinMgmt.exe  82432
While grouped-by object and property headers are stuck together on version 6.2.0 as delimiting lines have disappared :
Directory: C:\Windows\System32
Name                                  Length

WinBioDataModelOOBE.exe                60928
Windows.Media.BackgroundPlayback.exe   13312
Windows.WARP.JITService.exe            32768
WindowsActionDialog.exe                60928
WindowsUpdateElevatedInstaller.exe     47104
wininit.exe                           388376
winload.exe                          1468952
winlogon.exe                          779776
winresume.exe                        1179680
winrs.exe                              50176
winrshost.exe                          28672
WinSAT.exe                           2800128
winver.exe                             58880
Directory: C:\Windows\System32\Boot
Name           Length

winload.exe   1468952
winresume.exe 1179680
Directory: C:\Windows\System32\oobe
Name          Length

windeploy.exe 177664
Directory: C:\Windows\System32\wbem
Name        Length

WinMgmt.exe  82432

/cc @SteveL-MSFT Cosmetic regression. Can we add to current milestone?

Delimiting lines here means adding extra whitespace?  The extra newlines were removed on purpose.

Ah, if I just run gci on that dir I see proper space:

But running it through the Format-Table -GroupBy is resulting in the missing line.

Ok, I agree that the two should match.  I'll look into this tomorrow.

Many thanks


Is there a way to change the default HTTP port?

I'm really enjoying using this code in my org-roam setup.
I'm working on a website, and I debug changes to the website on a localhost web server running on port 8080. It would be nice if I could change the HTTP port for the org-roam-server to something other than 8080 so I can use both at the same time.
Is there a way to do this?
Thanks!

Yes, you can set httpd-port before starting the server.
(require 'simple-httpd)
(setq httpd-port 8888)

https://github.com/org-roam/org-roam-server/issues/11

Thank you!

Added port as a customizable variable.
For example;
(use-package org-roam-server
  :ensure t
  :config (setq org-roam-server-port 8888))


Import from BGG

BoardGameGeek publishes an API. As many folks track their collection there It would be great to implement a way to import a collection from BGG.
The BGG API is limited to a single call every 5 seconds so I think this will need to be a import-style functionality (instead of always reading data from BGG).

Done with https://github.com/majr/GAEmes/commit/f53103b9dae88ac064b61a9c68aef1456fb7d870


GO plugin and tcp connection (port 5432)

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
2.4.1-alpine
Current Behavior
When i trying use go plugin for postgres connection i getting error:
2021/11/03 10:39:20 [error] 79#0: *99 upstream timed out (110: Operation timed out) while connecting to upstream, client: <IP_ADDRESS>, server: <IP_ADDRESS>:5432, upstream: "<IP_ADDRESS>:5432", bytes from/to client:0/0, bytes from/to upstream:0/0
2021/11/03 10:39:20 [error] 79#0: *99 failed to run balancer_by_lua*: /usr/local/share/lua/5.1/kong/runloop/balancer.lua:1214: variable "upstream_host" not found for writing; maybe it is a built-in variable that is not changeable or you forgot to use "set $upstream_host '';" in the config file to define it first
stack traceback:
        [C]: in function 'error'
        /usr/local/openresty/lualib/resty/core/var.lua:144: in function '__newindex'
        /usr/local/share/lua/5.1/kong/runloop/balancer.lua:1214: in function 'balancer_set_host_header'
        /usr/local/share/lua/5.1/kong/init.lua:913: in function 'balancer'
        balancer_by_lua:2: in main chunk while connecting to upstream, client: <IP_ADDRESS>, server: <IP_ADDRESS>:5432, upstream: "<IP_ADDRESS>:5432", bytes from/to client:0/0, bytes from/to upstream:0/0

Expected Behavior
I should to see logs of my and i will be sure that it all working
My Yaml file:
services:
  - name: go-ha-proxy
    protocol: tcp
    host: <IP_ADDRESS>
    port: 5432
    routes:
      - name: go-ha-proxy-route
        protocols:
          - tcp
        destinations:
          - port: 5432
    plugins:
      - name: go-ha-proxy-plugin
        config:
          hosts:
            - host: <IP_ADDRESS>
              ip: <IP_ADDRESS>
              port: 5432

my GO plugin:
package main

import (
	"github.com/Kong/go-pdk"
)

type Config struct {
	Hosts []Hosts
}

type Hosts struct {
	Host string
	Ip   string
	Port int
}

func New() interface{} {
	return &Config{}
}

func (conf Config) Access(kong *pdk.PDK) {
	kong.Log.Alert("log --->>>", conf.Hosts[0].Host)
	kong.Log.Alert("log --->>>", conf.Hosts[0].Ip)
	kong.Log.Alert("log --->>>", conf.Hosts[0].Port)
}

My docker file:
FROM golang:1.17-alpine3.14 as builder
ENV GO111MODULE=on

RUN apk update && apk add --no-cache musl-dev gcc build-base

RUN mkdir /go-plugins
COPY go-ha-proxy-plugin.go /go-plugins/
RUN cd /go-plugins && \
    go mod init go-plugins && \
    go get -d -v github.com/Kong/go-pluginserver && \
    go build github.com/Kong/go-pluginserver && \
    go build -buildmode plugin go-ha-proxy-plugin.go

FROM kong:2.4.1-alpine

USER kong
COPY --from=builder /go-plugins/go-pluginserver /usr/local/bin/
COPY --from=builder /go-plugins/go-ha-proxy-plugin.so /usr/local/bin/
COPY config.yml /tmp/

RUN /usr/local/bin/go-pluginserver -version && \
    cd /usr/local/bin && \
    /usr/local/bin/go-pluginserver -dump-plugin-info go-ha-proxy-plugin

ENV KONG_GO_PLUGINS_DIR=/usr/local/bin
ENV KONG_PLUGINS=bundled,go-ha-proxy-plugin

ENV KONG_DATABASE=off
ENV KONG_PROXY_ACCESS_LOG=/dev/stdout
ENV KONG_ADMIN_ACCESS_LOG=/dev/stdout
ENV KONG_PROXY_ERROR_LOG=/dev/stderr
ENV KONG_ADMIN_ERROR_LOG=/dev/stderr
ENV KONG_ADMIN_LISTEN="<IP_ADDRESS>:8001, <IP_ADDRESS>:8444 ssl"
ENV KONG_STREAM_LISTEN="<IP_ADDRESS>:5432"

EXPOSE 80
EXPOSE 1521
EXPOSE 8001
EXPOSE 8444
EXPOSE 5432

Steps To Reproduce
When you will reproduce my files - you will see:
1. Kong trying do proxying of traffic to 5432
2. But i don't see logs of my plugin
3. If i delete tcp and change to normal http url, everything is ok

Does go plugins supporting tcp proxying?

Anything else?
No response

I think you've found a bug, but I'm not sure if it's specific to the use of Go plugins, or because you're using an access phase for a stream plugin.  Can you change to the Preread method and see if it still happens?

@javierguerragiraldez yes, i tried all phases and it all same

Yes, definitely looks like a bug in stream module on balancer retries, this should not happen with stream:
https://github.com/Kong/kong/blob/master/kong/init.lua#L965-L970


create a Dockerfile

Create a Dockerfile that will create an image of Rate Shield. Also for your convenience I've created a docker-compose.yml inside rate_shield folder.

I would like to work on this issue

cool! please go ahead.


the usage for positionial arguments

Maybe, adding the option that overriding usage.
And exporting buildUsage() function.


Enable previews to work with ViewComponentContrib

ViewComponentContrib allows for component_name/preview.rb file structure. Changing the glob allows for lookbook to work, as long as the preview does not inherit from ViewComponentContrib::Preview (due to conflicting Preview templates and who does the rendering).

Thanks @liaden - I've been meaning to look into ViewComponentContrib compatibility so this is a great start.
When I have a little time I'll try and see if there is any way to get Lookbook working even when using ViewComponentContrib::Preview but until I've dug in a bit more I'm not sure what that would involve or if it's even possible.
Thanks again 👍


Shirt Pick Up

Overview
Create a new button and screen for admins to check off users who have picked up their yearly SHPE Member shirt.
Task

[x] Create nav button to shirt pick-up screen
[x] Display all ordered shirts
[x] Create two sections to see which users have and have not picked up their shirts

User Story
As an admin, I would like to be able to see and check off all user shirts after they have been picked up so that I can keep track of which members have and have not picked up their shirts.

https://github.com/TAMUSHPE/MobileApp/commit/ab08d91122dc4e08e9ecf70613dd56e3532f30ab