Azure-sdk-for-java: [BUG] Speicherleck in ServiceBusReceiverAsyncClient schließen

Erstellt am 6. Dez. 2020  ·  3Kommentare  ·  Quelle: Azure/azure-sdk-for-java

Beschreibe den Fehler
Wenn eine Instanz von ServiceBusReceiverAsyncClient erstellt wird, werden zwei LockContainer Instanzfelder erstellt.

Jede Variable (im Konstruktor von LockContainer ) abonniert Flux, um regelmäßig Ressourcen zu bereinigen. Das bei der Bereinigung verwendete Lambda verwendet die Sperrcontainerinstanz selbst, sodass Flux weiterhin auf die Sperrcontainerinstanz verweist, bis der Consumer verworfen wird.

Das Problem ist , dass , wenn ServiceBusReceiverAsyncClient geschlossen ist , der LockContainer Variablen nicht auch geschlossen werden, die einen Speicherverlust verursacht.

Fortpflanzen
Um zu reproduzieren, erstellen Sie eine ServiceBusReceiverAsyncClient Instanz und rufen Sie wiederholt close und start . Verwenden Sie Visual VM, um die Speichernutzung mit Heap-Dumps zu verfolgen.

Dies ist das Muster der Speichernutzung, das Sie sehen sollten (ein leichter, aber stetiger Anstieg der Speichernutzung):
Screenshot 2020-12-05 at 23 53 01

Und so werden die Anzahl der Instanzen im Heap und ihre beibehaltenen Größen im Laufe der Zeit aussehen:
Screenshot 2020-12-05 at 23 55 07
Screenshot 2020-12-05 at 23 56 24

Erwartetes Verhalten
LockContainer-Instanzen sollten geschlossen werden, wenn der Client geschlossen wird und daher nicht in den Speicher gelangen.

Einrichtung (bitte füllen Sie die folgenden Informationen aus):

  • Betriebssystem: Mac/Linux
  • IDE: IntelliJ
  • 7.0.0

Informations-Checkliste
Bitte stellen Sie sicher, dass Sie alle folgenden Informationen oben angegeben haben und kreuzen Sie die erforderlichen Felder an, andernfalls behandeln wir den Aussteller als unvollständigen Bericht

  • [X] Fehlerbeschreibung hinzugefügt
  • [X] Reproschritte hinzugefügt
  • [X] Setup-Informationen hinzugefügt
Client Service Bus customer-reported question

Alle 3 Kommentare

Hallo, ich habe gerade eine PR mit einem Fix für dieses Problem geöffnet: https://github.com/Azure/azure-sdk-for-java/pull/17993.

Bitte lassen Sie mich wissen, wenn Sie Änderungen oder weitere Informationen benötigen.

Mit freundlichen Grüßen!

Danke fürs Überprüfen der PR @conniey ! Können wir bald mit einer neuen Veröffentlichung rechnen? Mit freundlichen Grüßen!

@marciopd wir werden im Januar eine Veröffentlichung haben.

Behoben von #17993

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen