Product: .NET SDK
Component: sdk
Issue Link: NCBC-3794
Affects Version(s): 3.5.2, 3.5.3
Fix Version(s): 3.6.0Summary
- The .NET SDK can enter an infinite loop when trying to fetch a new configuration from the cluster. This results in high CPU usage.
- The loop occurs off the main IO thread, so the application continues functioning: Users may see it as a CPU spike without immediate functional failure. Main IO thread could be affected only if system resource limits are reached.
Symptoms
- High CPU for applications using the .NET SDK
Triggers
- The issue is triggered when fetching a new configuration after a Push Notification from the server. If the first node in the list is unavailable and causes a SocketException, the SDK repeatedly retries using the same invalid node.
Verification
The issue can be verified by extremely frequent logging of the following message (at DEBUG level):
2024-06-06 13:56:07.5739|DEBUG|Couchbase.CouchbaseBucket|Entered the semaphore to check pushedVersion 1/171341For example, the following command execution on debug level logs shows the message is regularly being logged (~600 times per 1/10th of a millisecond):
rg -i "Entered the semaphore to check pushedVersion" Nlog\ -\ DEBUG.txt | rg -o "\d{4}-\d\d-\d\d \d\d:\d\d:\d\d.\d\d\d\d" | sort | uniq -c | tail -10
584 2024-06-06 13:58:34.7104
598 2024-06-06 13:58:34.7260
598 2024-06-06 13:58:34.7417
592 2024-06-06 13:58:34.7573
595 2024-06-06 13:58:34.7729
459 2024-06-06 13:58:34.7886
604 2024-06-06 13:58:34.8042
630 2024-06-06 13:58:34.8198
609 2024-06-06 13:58:34.8354
40 2024-06-06 13:58:34.8510 Workarounds
There are no workarounds for this issue; the only option is to upgrade to a version containing the fix.
Comments
0 comments
Article is closed for comments.