Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Mögliches Speicherleck in den Templates für adapter und vis

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    UNSOLVED Mögliches Speicherleck in den Templates für adapter und vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • OliverIO
      OliverIO last edited by

      Unter folgendem Link habe ich einen neuen Fehler erstellt
      https://github.com/ioBroker/ioBroker.template/issues/62

      Da ich aktuell einen neuen Adapter erstelle und diesen mit dem adapter-wizard vorbereitet habe,
      ist mir im template widget code aufgefallen, das sich da ein mögliches Speicherleck versteckt.

      Es wird ein state abonniert (bind), aber nicht wieder deabonniert (unbind).
      Wird das widget neu gezeichnet, weil sich bspw der Datenpunkt geändert hat,
      so wird immer wieder neu der Datenpunkt abonniert, ohne die nicht mehr gültigen Abonnements zu löschen.

      Das geht zum einen manuell vis.states.unbind(datenpunkt,änderungshandler).
      Eleganter ist aber, man fügt das Abonnement einer widgetvariable (stichwort data('bound') und data('boundhandler')
      Dann kümmert sich vis selbst um das aufräumen.

      Wenn man das nicht macht, sammeln sich bei jeder Neuzeichnung immer mehr Abos an, die bei Änderung des Datenpunkts auch alle aufgerufen werden. Das kann schnell die Oberfläche ziemlich laggy machen (selbst in einem anderen Situation erlebt)

      Da das ja Template code ist, ist der Fehler nicht kritisch.
      Wenn aber jemand einen neuen Adapter anfängt und widgets programmiert und das nicht weiß (steht leider auch sonst nirgends), dann gibt es Probleme, die hier im Forum wieder gelöst werden müssen.
      @AlCalzone

      oweitman created this issue in ioBroker/ioBroker.template

      closed Potential Memoryleak #62

      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @OliverIO last edited by

        @OliverIO Ich kenne mich mit den VIS-Templates nicht aus. Wenn du den Fix kennst würde ich mich über ein Issue freuen, in dem du kurz beschreibst, welche Zeilen wie geändert werden müssen.

        OliverIO 1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @AlCalzone last edited by OliverIO

          @AlCalzone

          Habe Pull request erstellt
          https://github.com/ioBroker/ioBroker.template/pull/63

          Ich habe allerdings aktuell keine Test instanz auf der ich das ordentlich testen könnte.
          Deswegen habe ich den code in den von mir erzeugten adapter kopiert. Aber besser ist nochmal unabhängig testen 🙂

          • Bitte bei dir installieren
          • Dann ein Testadapter JS+VIS und TS+VIS erstellen
          • Dann Instanzen anlegen
          • Dann für beide jeweils die beiden erzeugten widgets ins vis legen
          • Dann die developer console öffnen im reiter console darf kein Fehler für diesen adapter erscheinen.

          Noch ein Hinweis, den ich bei einem eigenen Test gemerkt habe.
          Der Adaptername muss den folgenden Anforderungen für Bezeichner von javascript erfüllen.
          Ich habe selbst ein bindestrich im adapternamen verwendet, wurde auch alles anstandslos verarbeitet.
          Bei vis-widgets gibt es dann allerdings probleme, da der adaptername auch als berzeichner verwendet wird
          und alle template-strings durch den adapter namen ersetzt werden.

          • Bei selbst vergebenen Namen gelten folgende Regeln:
          • sie dürfen keine Leerzeichen enthalten
          • sie dürfen nur aus Buchstaben und Ziffern bestehen - das erste Zeichen muss ein Buchstabe sein; es sind Groß- und
          • Kleinbuchstaben erlaubt. Groß- und Kleinschreibung werden unterschieden!
          • sie dürfen keine deutschen Umlaute oder scharfes S enthalten
          • sie dürfen als einziges Sonderzeichen den Unterstrich "_" enthalten
          • sie dürfen nicht mit einem reservierten Wort identisch sein.
          oweitman created this issue in ioBroker/ioBroker.template

          closed … #63

          AlCalzone 1 Reply Last reply Reply Quote 1
          • AlCalzone
            AlCalzone Developer @OliverIO last edited by

            @OliverIO Der Fix für die zweite Hälfte war viel einfacher als gedacht:

            - vis.binds.test-widget.createWidget(this.data.wid, this.view, this.data, this.style);
            + vis.binds['test-widget'].createWidget(this.data.wid, this.view, this.data, this.style);
            

            Das war die einzige Stelle, wo nicht über diese Syntax auf die Eigenschaften zugegriffen wird.

            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @AlCalzone last edited by OliverIO

              @AlCalzone
              ok, stimmt, aber punkt Schreibweise geht dann nicht mehr, sondern man muss das immer so im browsercode schreiben.
              so eine kleine warnung im adapter creater wäre doch schön.

              Hintergrund: Als ich gestern den Adapter unterbau fertig gestellt habe,
              wollte ich dann das erste Widget probieren. Es hat eine weile gedauert bis ich den Fehler gefunden habe, bzw. verstanden hab warum das schief ging.

              habe dann den kompletten adapter umbenannt, weil ich einen einheitlichen namen wollt.
              will nur nicht, das es anderen genauso geht und gefrustet sind.

              AlCalzone 1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer @OliverIO last edited by

                @OliverIO Ist allerdings schon an einigen anderen Stellen schon länger (schon immer?) so gewesen. Zumindest stammt der widget-Code aus Zeiten, als es ein separates Widget-Template gab. Die Änderung macht es nur einheitlich an der einen Stelle, wo es noch nicht so war.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                879
                Online

                31.9k
                Users

                80.1k
                Topics

                1.3m
                Posts

                fehler iobroker.template speicherleck vis
                2
                6
                253
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo