• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

I possibly found an updateNotification bug that may be responsible for the out of memory errors

Scheduled Pinned Locked Moved Unsolved Troubleshooting
updatenotification
13 Posts 3 Posters 3.0k Views 5 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Away
    sdetweil @mlcampbe
    last edited by sdetweil Mar 22, 2019, 1:53 PM Mar 22, 2019, 1:41 PM

    @mlcampbe i don’t think u needed to save the payload… i think clearing the array should be enough…

    the payload should be the same, as the module.js is just getting a list of installed/running modules.

    actually a more simple way, is check to see if the timer is not started,. then allow config, else skip it.
    then it will only be done once…

    basically change this

    	socketNotificationReceived: function (notification, payload) {
    		if (notification === "CONFIG") {
    			this.config = payload;
    		} else if(notification === "MODULES") {
    			this.configureModules(payload);
    			this.preformFetch();
    		}
    	},
    

    to this

    	socketNotificationReceived: function (notification, payload) {
    		if (notification === "CONFIG") {
    			this.config = payload;
    		} else if(notification === "MODULES") {
                          // if refresh cycle timer not yet started
                          if(this.updateTimer==null ){
    			this.configureModules(payload);
    			this.preformFetch();
                          }
    		}
    	},
    

    this still leaves a tiny window, if the initial cycle is running, and you start another via refresh…
    so, this calls for another flag.
    updateProcessStarted: false
    and this

    	socketNotificationReceived: function (notification, payload) {
    		if (notification === "CONFIG") {
    			this.config = payload;
    		} else if(notification === "MODULES") {
                          // if this is the 1st time thru the update check process
                          if(this.updateProcessStarted==false ){
                            this.updateProcessStarted=true;
    			this.configureModules(payload);
    			this.preformFetch();
                          }
    		}
    	},
    

    Sam

    How to add modules

    learning how to use browser developers window for css changes

    1 Reply Last reply Reply Quote 0
    • M Offline
      mlcampbe
      last edited by Mar 22, 2019, 4:07 PM

      Sam, when I cleared the simpleGits array only then nothing was refreshing. That could have been where I was clearing it though. It seems that as you mentioned the configureModules was only getting called 1 time when initially loaded unless of course I accessed MM via the browser which called everything again.

      For now I am happy with my solution as it is working for both auto refreshes via the updateInterval and for browser access from another machine. Its not any more code than you added but just done a different way. It may not be quite as efficient as it builds the simpleGits array everytime it is called but I don’t plan to call it more than once every 6 hrs anyway so that is not going to be a problem.

      It is yet to be seen if this fixes the out of memory errors that were being seen though. I’ll have to leave it running for a day or 2 and check to see what happens.

      1 Reply Last reply Reply Quote 0
      • S Away
        sdetweil
        last edited by Mar 22, 2019, 5:57 PM

        ok, I have mine running too… shows 1 update available…

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 Reply Last reply Reply Quote 0
        • M Offline
          mlcampbe
          last edited by Mar 22, 2019, 8:06 PM

          This post is deleted!
          1 Reply Last reply Reply Quote 0
          • S Away
            sdetweil
            last edited by Mar 23, 2019, 11:20 PM

            I’ve spent the day looking over the module, and there are a number of bugs that had to be fixed.

            the design is synchronous calls to simple-gits module, but simple-gits uses promises under the covers, so everything is actually async, which exposes some potential data corruption

            also the module.js overwrites the this.status pointer on each notification from the helper, before checking if the data is useful (behind > 0)… which yanks the data out from under getDom().

            and getDom() processes for each good data message, overlaying anything prior… only one module status shows

            i am testing fixes for all of that…

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            1 Reply Last reply Reply Quote 1
            • E Offline
              ezarlive
              last edited by Mar 24, 2019, 6:22 AM

              Make a pull request ;)

              S 1 Reply Last reply Mar 24, 2019, 10:39 AM Reply Quote 0
              • S Away
                sdetweil @ezarlive
                last edited by Mar 24, 2019, 10:39 AM

                @ezarlive testing… before sending the code

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                1 Reply Last reply Reply Quote 0
                • 1
                • 2
                • 2 / 2
                2 / 2
                • First post
                  11/13
                  Last post
                Enjoying MagicMirror? Please consider a donation!
                MagicMirror created by Michael Teeuw.
                Forum managed by Sam, technical setup by Karsten.
                This forum is using NodeBB as its core | Contributors
                Contact | Privacy Policy