Open jimboca opened 6 years ago
For reference, this should delete the original issue items:
mongo polyglot --eval "db.nodes.remove({'profileNum':null})"
I was having a similar problem with my slot 5, so dump shows this:
mongodump --db polyglot --out postdump
bsondump postdump/polyglot/nodes.bson | grep n005
{ "__v" : 0, "_id" : ObjectId( "5b078c34454df7a3f2383f11" ), "added" : true, "address" : "n005_hue-emu-cntl", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "1" } }, "enabled" : true, "isprimary" : false, "name" : "Hue Emulator Controller", "nodedef" : "controller", "primary" : "n005_controller", "profileNum" : "5", "timeAdded" : "1527220930028" }
So when I try to add a new nodeserver in this slot it makes the controller use this data instead of what my nodeserver tells it...
So I ran this.
mongo polyglot --eval "db.nodes.remove({'profileNum':'5'})"
Isn't that run when you delete a nodeserver from a slot??
I had looked at all nodes using robo3t and for some reason I didn't see those nodes but it could be my lack of knowledge about mongodb... That's why I did the dump and grep...
This causes a lot of pain, just had another user with a corrupt slot. He deleted this nodeserver but all this old data is still there...
pi@raspberrypi:~ $ bsondump postdump/polyglot/nodes.bson | grep n008
{ "__v" : 0, "_id" : ObjectId( "5bd0b11d1be7af18a2e38e49" ), "added" : true, "address" : "n008_hb986629beb2a1", "controller" : "false", "drivers" : { "GV5" : { "uom" : 56, "value" : "0" }, "G V4" : { "uom" : 56, "value" : "0" }, "GV3" : { "uom" : 25, "value" : "0" }, "GV2" : { "uom" : 56, "value" : "0" }, "GV1" : { "uom" : 56, "value" : "0" }, "ST" : { "uom" : 2, "value" : "0" } } , "enabled" : true, "isprimary" : true, "name" : "Aubreys Room", "nodedef" : "hb986629beb2a1", "primary" : "n008_hb986629beb2a1", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b11d1be7af18a2e38e4a" ), "added" : true, "address" : "n008_h6cf5b471715d2", "controller" : "false", "drivers" : { "GV5" : { "uom" : 56, "value" : "0" }, "G V4" : { "uom" : 56, "value" : "0" }, "GV3" : { "uom" : 25, "value" : "0" }, "GV2" : { "uom" : 56, "value" : "0" }, "GV1" : { "uom" : 56, "value" : "0" }, "ST" : { "uom" : 2, "value" : "0" } } , "enabled" : true, "isprimary" : true, "name" : "Harmony Home Theather", "nodedef" : "h6cf5b471715d2", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1601be7af18a2e38e4b" ), "added" : true, "address" : "n008_a28359023", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Watch TV", "nodedef" : "HarmonyActivity", "primary" : "n008_hb986629beb2a1", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1601be7af18a2e38e4c" ), "added" : true, "address" : "n008_d47520777", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Aubreys Room", "nodedef" : "d47520777", "primary" : "n008_hb986629beb2a1", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1601be7af18a2e38e4d" ), "added" : true, "address" : "n008_d47520778", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Vizio TV", "nodedef" : "d47520778", "primary" : "n008_hb986629beb2a1", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e4e" ), "added" : true, "address" : "n008_a6723030", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enabled " : true, "isprimary" : false, "name" : "Listen to Streaming Music", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e4f" ), "added" : true, "address" : "n008_a21049561", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Watch PC", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e50" ), "added" : true, "address" : "n008_a21082673", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Watch Roku", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e51" ), "added" : true, "address" : "n008_a21733697", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Watch TV Family", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e52" ), "added" : true, "address" : "n008_a30735294", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Switch", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e53" ), "added" : true, "address" : "n008_a6720248", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enabled " : true, "isprimary" : false, "name" : "Watch TV Xbox One", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e54" ), "added" : true, "address" : "n008_a27402110", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Watch Family Fire TV", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e55" ), "added" : true, "address" : "n008_a21109427", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Watch Netflix", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e56" ), "added" : true, "address" : "n008_a6720244", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enabled " : true, "isprimary" : false, "name" : "Watch TV", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e57" ), "added" : true, "address" : "n008_a21034982", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Nintendo Wii U", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e58" ), "added" : true, "address" : "n008_d38391867", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Samsung TV", "nodedef" : "d38391867", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e59" ), "added" : true, "address" : "n008_d38306246", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Onkyo AV Receiver 2", "nodedef" : "d38306246", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e5a" ), "added" : true, "address" : "n008_d46150275", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Media Room", "nodedef" : "d46150275", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e5b" ), "added" : true, "address" : "n008_d29165895", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Home Theater", "nodedef" : "d29165895", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e5c" ), "added" : true, "address" : "n008_d15790166", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Home Theater Roku", "nodedef" : "d15790166", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e5d" ), "added" : true, "address" : "n008_d15790161", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Sony Projector", "nodedef" : "d15790161", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e5e" ), "added" : true, "address" : "n008_d37357792", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Wii U", "nodedef" : "d37357792", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e5f" ), "added" : true, "address" : "n008_a6720245", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enabled " : true, "isprimary" : false, "name" : "Watch Apple TV", "nodedef" : "HarmonyActivity", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e60" ), "added" : true, "address" : "n008_d38389577", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Bose AV Receiver", "nodedef" : "d38389577", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e61" ), "added" : true, "address" : "n008_d37356833", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Onkyo AV Receiver", "nodedef" : "d37356833", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e62" ), "added" : true, "address" : "n008_d15821876", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "G Air Mini Split", "nodedef" : "d15821876", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e63" ), "added" : true, "address" : "n008_d50771325", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Nintendo Game Console", "nodedef" : "d50771325", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e64" ), "added" : true, "address" : "n008_d38298833", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Bose Music Server", "nodedef" : "d38298833", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e65" ), "added" : true, "address" : "n008_d15790164", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Microsoft Xbox One", "nodedef" : "d15790164", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e66" ), "added" : true, "address" : "n008_d15790165", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Apple TV", "nodedef" : "d15790165", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
{ "__v" : 0, "_id" : ObjectId( "5bd0b1611be7af18a2e38e67" ), "added" : true, "address" : "n008_d37379220", "controller" : "false", "drivers" : { "ST" : { "uom" : 2, "value" : "0" } }, "enable d" : true, "isprimary" : false, "name" : "Windows Computer", "nodedef" : "d37379220", "primary" : "n008_h6cf5b471715d2", "profileNum" : null, "timeAdded" : "1540347133421" }
400 objects found
I believe I have a fix for this. When updateNode is called, it simply checks if the node exist by doing a query for one by address. If it find one of these records with the null profile number, it just uses it. My fix is to also check for a valid profile number, if it's null, then treat it as if the node record doesn't exist. That seems to make everything happy again.
That sounds good! Also, seems like polyglot should do a sanity check on the db once in an while and cleanup these bad null entries or entries for a profile that is deleted?
@bpaauwe & @Einstein42 Have you made this change? Can we please get it released :) It keeps causing pain.
Good question, that was months ago. I'll have to check if that was part of the PR I submitted back on Nov. 8th
Looks like it's on the edev branch.
Handle null profile number in updateNode. https://github.com/UniversalDevicesInc/polyglot-v2/commit/cf2949f338a6f351c4d20fc718331d9d228f5b7a
Thanks! I've pinged everyone on slack to see what we can do.
No idea how these got there, but this was from a user after deleting the nodeserver in slot 1.