connection refused after restart

Hi,
Firstly, thank you for this integration it works really well and helped me pull the trigger on upgrading my heating system :)
My issue occurs sometimes when I restart hass and it fails to get the integration to work, debug logs show:
2022-04-01 17:36:52 DEBUG (MainThread) [pyrinnaitouch.system] Error during renewConnection [Errno 113] Host is unreachable
2022-04-01 17:36:52 DEBUG (MainThread) [pyrinnaitouch.system] renewing connection failed, not sending command
2022-04-01 17:36:52 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-01 17:36:52 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 23
2022-04-01 17:36:54 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-01 17:36:57 DEBUG (MainThread) [pyrinnaitouch.system] Error during renewConnection [Errno 113] Host is unreachable
2022-04-01 17:36:57 DEBUG (MainThread) [pyrinnaitouch.system] renewing connection failed, not sending command

During these repeated connection refused attempts, I am able to use both a phone and tablet with the official RinnaiTouch app and connect and control my heater, which makes me wonder if the rinnai touch unit is denying the hass connection for some reason? (error 113 and its fast, not a timeout, every few seconds - so maybe it has some sort of connection protection/throttling that is triggering?  and maybe a simple back-off for a bit could help?)
FWIW, just before the restart, I had a working integration, I could see and control the heating unit.    This fail on restart has occurred probably 50% of the time, and so far I have been unable to work out what fixes it.   Which also makes me wonder what the RinnaiTouch is doing.  If I leave this for a while, hass will eventually get a connection again (based on previous attempts).   I'll update the ticket if/when I get a stable connection with the relevant debug logs.

Took a could of hours, then this:
2022-04-01 19:50:01 DEBUG (MainThread) [pyrinnaitouch.system] renewing connection failed, not sending command
2022-04-01 19:50:01 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-01 19:50:01 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 23
2022-04-01 19:50:02 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-01 19:50:03 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-01 19:50:03 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-01 19:50:03 DEBUG (MainThread) [pyrinnaitouch.system] Client Variable: <socket.socket fd=21, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 45622), raddr=('<IP_ADDRESS>', 27847)> / False
2022-04-01 19:50:07 DEBUG (MainThread) [pyrinnaitouch.system] Sequence: 1 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "Z
C": "                ", "ZD": "                " }, "AVM": {"HG": "Y", "EC": "N", "CG": "N", "RA": "N", "RH": "N", "RC": "N" }, "OSS": {"DY": "FRI", "TM": "19:47", "BP": "Y", "RG": "Y", "ST": "N", "MD": "H", "DE": "N", "DU": "N", "AT": "999", "LO": "N"
 }, "FLT": {"AV": "N", "C3": "000" } } },{"HGOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "CF": "N", "PS": "Y", "DG": "W" }, "OOP": {"ST": "F", "CF": "N", "FL": "08", "SN": "N" }, "GSS": {"HC": "N", "FS": "N", "GV": "N
", "PH": "N" }, "APS": {"AV": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]
2022-04-01 19:50:07 DEBUG (MainThread) [pyrinnaitouch.heater] Heater is OFF
2022-04-01 19:50:07 DEBUG (MainThread) [pyrinnaitouch.system] We are in HEAT mode
2022-04-01 19:50:07 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-01 19:50:07 DEBUG (MainThread) [pyrinnaitouch.system] Client shutting down
2022-04-01 19:50:07 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-01 19:50:07 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 23
2022-04-01 19:50:07 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-01 19:50:08 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-01 19:50:08 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...

Very interesting. The module is indeed a bit finnicky with connections. I restart fairly frequently during development and haven't seen much of this problem, but I've definitely seen a few times of this happening. The second error in the second log is even rarer, but should actually fix itself?
When this error occurs, does the RinnaiTouch app connect locally or via cloud? You'll see a little cloud symbol in the bottom right corner that indicates a cloud connection.
I have not figured out the first error when I've seen it on my system. It didn't seem related to the integration, but more a network issue, and only waiting or a router reboot has fixed it for me. I couldn't even ping the unit from any computer in my network when that happens.
I also noticed your IP setup. It appears HA and the unit are not in the same subnet?

Like all intermittent problems, I can't get it to fail at the moment, so I can't comment on the cloud connection yet, but when it happens I'll report back.
My hass and rinnai are both on a local subnet, but I sometimes use a SSL'd internet facing connection to the front-end as well.   I'm running a little bit of a home-built version of hass, so its using local DNS entries to point to the local subnet.  The actual IPs are all on the <IP_ADDRESS>/24 subnet.
I had a suspicion today that the issue might relate to me restarting hass when the heater was off, but that did not matter.  My 2 restarts today, both just worked fine.
I don't know if this is matters, but when I first installed the rinnaitouch, it was at the far-end of the house and wifi coverage was borderline.   After about a week of use (app only at this point), it dropped off the wifi and I could not get it back no matter how many times I went through the AP learning mode on the rinnaitouch.   Long story short, I had been intending to use a wifi mesh in the house, and I did end up installing a second unit nearby and the wifi signal is now solid near the rinnaitouch.   When reconfiguring the AP, I noticed it sees 2 of my wifi SSID, rather than "1" that the mesh is providing.  I don't know whether it might occasionally try to connect to the wifi at the other end of the house and maybe go back into that mode?  It's still a bit of a stretch though, as the app on my phone will work when hass doesn't which tells me something else is going on than simple connectivity issues.   It still seems like the rinnaitouch is blocking the hass connection while letting through the app on a different 192.168.0 IP.   Is there any chance of some caching of connection state on the hass side?
FWIW, I can code some python, and can tinker in the code if we can think of anything useful to look for, but right now, I'm puzzling over what more to do in the code when it seems a simple socket connection fails.
Thanks again, really appreciate the work

As said, the connection can be a bit funny at times, and in the earlier versions of the integration it was quite unstable. I don't remember how often I needed to restart my router/repeater! However, I've now seen it fairly stable in my setup and some others who have reported back.
You are correct, it is a simple tcp socket. However, I keep it open as much as possible, as closing and reconnecting isn't something the unit likes. In fact, it reboots after a connection is closed, which may be what happened to yours. Then it could have connection issues between your 2 access points potentially, and this could be random if the area overlaps. Possibly, you could pin the MAC address to 1 of them?

My mesh router (tplink) has a pretty GUI, but no advanced features, so I've got a static IP and that is all :(
FWIW, I had a working connection for days, then it stopped responding. I checked, the rinnai app it had the cloud icon & controlled the heater. I restarted hass several times and even after a could of days, white the app still worked, hass would not. Then during an unrelated restart today hass came back. App still has cloud icon on it.

Okay, a little more interesting / info today.   Just noticed hass stopped allowing me to control my rinnaitouch, when I changed the temp, it just didn't work tonight.
The app officially works, and has the cloud on.   But, new info, from my box itself, the rinnaitouch is pingable / has port 80 open:
$ nmap -p 80 rinnaitouch.ddp.net
Starting Nmap 7.80 ( https://nmap.org ) at 2022-04-22 19:08 AEST
Nmap scan report for rinnaitouch.ddp.net (<IP_ADDRESS>)
Host is up (0.097s latency).

PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.14 seconds
$ ping rinnaitouch.ddp.net
PING rinnaitouch.ddp.net (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from rinnaitouch.ddp.net (<IP_ADDRESS>): icmp_seq=1 ttl=128 time=613 ms
64 bytes from rinnaitouch.ddp.net (<IP_ADDRESS>): icmp_seq=2 ttl=128 time=21.1 ms
64 bytes from rinnaitouch.ddp.net (<IP_ADDRESS>): icmp_seq=3 ttl=128 time=44.1 ms
64 bytes from rinnaitouch.ddp.net (<IP_ADDRESS>): icmp_seq=4 ttl=128 time=67.6 ms
^C
--- rinnaitouch.ddp.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 21.054/186.412/612.922/246.794 ms

the server, runs a set of containers including hass, so going into the hass container itself:
$ sudo docker exec -it hass bash
bash-5.1# nmap -p 80 rinnaitouch.ddp.net
Starting Nmap 7.91 ( https://nmap.org ) at 2022-04-22 19:12 AEST
Nmap scan report for rinnaitouch.ddp.net (<IP_ADDRESS>)
Host is up (0.093s latency).

PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds
bash-5.1# ping rinnaitouch.ddp.net
PING rinnaitouch.ddp.net (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: seq=0 ttl=127 time=39.253 ms
64 bytes from <IP_ADDRESS>: seq=1 ttl=127 time=61.965 ms
^C
--- rinnaitouch.ddp.net ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 39.253/50.609/61.965 ms

So, seems at a network level it is okay, but somehow the hass module is not...
logs on hass for last working and first failing entries, and the last logs as well:
2022-04-22 14:24:23 DEBUG (MainThread) [pyrinnaitouch.system] Client Variable: <socket.socket fd=24, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.0
.28', 41786), raddr=('<IP_ADDRESS>', 27847)> / False
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.system] Sequence: 1 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010",
"CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "Y", "EC": "N", "CG": "N", "RA": "N", "RH": "N", "RC
": "N" }, "OSS": {"DY": "FRI", "TM": "15:20", "BP": "Y", "RG": "Y", "ST": "N", "MD": "H", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"HGOM": {
"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "CF": "N", "PS": "Y", "DG": "W" }, "OOP": {"ST": "N", "CF": "N", "FL": "07", "SN": "N" }, "GSO": {"OP": "M", "SP
": "18", "AO": "N" }, "GSS": {"HC": "N", "FS": "N", "GV": "N", "PH": "N", "AT": "W", "AZ": "W" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZC
O": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"A
E": "N", "MT": "999" } } }]
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.heater] Heater is ON
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.heater] Fan Speed is: 07
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.heater] Heat OpMode is: M
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.heater] Heat set temp is: 18
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.system] We are in HEAT mode
2022-04-22 14:24:28 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.system] Client shutting down
2022-04-22 14:24:28 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-22 14:24:28 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 20
2022-04-22 14:24:28 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-22 14:24:28 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-22 14:24:29 DEBUG (MainThread) [pyrinnaitouch.system] Client Variable: <socket.socket fd=51, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.0
.28', 41788), raddr=('<IP_ADDRESS>', 27847)> / False
2022-04-22 14:24:30 ERROR (MainThread) [pyrinnaitouch.system] Couldn't decode JSON (exception), skipping (AttributeError("'NoneType' object has no attribute 'group'"))
2022-04-22 14:24:30 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-22 14:24:30 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 20
2022-04-22 14:24:30 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-22 14:24:33 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 107] Socket not connected
2022-04-22 14:24:33 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-22 14:24:34 DEBUG (MainThread) [pyrinnaitouch.system] Error during renewConnection [Errno 111] Connection refused

[snip]

2022-04-22 19:14:48 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-22 19:14:53 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-22 19:14:53 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-22 19:14:54 DEBUG (MainThread) [pyrinnaitouch.system] Error during renewConnection [Errno 111] Connection refused
2022-04-22 19:14:54 DEBUG (MainThread) [pyrinnaitouch.system] renewing connection failed, not sending command
2022-04-22 19:14:54 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-22 19:14:54 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 20
2022-04-22 19:14:54 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999

My first-pass at a guess, from the debug logs you are opening port 27847.  Prior and up to 2:24:23 pm it worked, but since 2:24:34 this port is closed.
 $ nmap -p 27847 rinnaitouch.ddp.net
Starting Nmap 7.80 ( https://nmap.org ) at 2022-04-22 19:17 AEST
Nmap scan report for rinnaitouch.ddp.net (<IP_ADDRESS>)
Host is up (0.26s latency).

PORT      STATE  SERVICE
27847/tcp closed unknown

Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds

Checking hassio threads, etc. either something else has the port open (e.g. my phone - which I had not used for days, so super unlikely), or any chance we are just hitting it so frequently some network protection on the device drops the conn?   Looks like the code hits it every 10 secs....  I might find some time Sunday to dig into the code, and might tweak the frequency of reconnects...  I'll also log the output of nmap -p 27847 to confirm the port was open and is closed at the point of failure...

We're definitely only interested in the 27847/tcp port. Quick question: do you still use the Rinnai app on addition to home assistant? Apparently, the module only allows 1 local connection and sort of pins to it. If anything were to take over that connection/port, home assistant would basically be locked out.

Might have something to work with.   I am not using the apps until after hass loses control.   This time, I definitely killed of the Rinnai app on my phone and table, and left hass to "connect".   Interestingly, I can see the port is open with nmap, then when it connects, it changes to filtered.  After a while it is closed.
I have verified this has happened twice now, exactly 1 hour after I power on/off the rinnaitouch device, my hass container establishes the socket, and the it enters TIME_WAIT and afterwards nmap shows it closed and I lose control.
# restarted power on rinnai
16:23 25/04: 27847/tcp open  unknown
16:24 25/04: nmap="27847/tcp filtered unknown -- netstat="tcp     1064      0 <IP_ADDRESS>:54882       <IP_ADDRESS>:27847     ESTABLISHED"
[snip]
17:24 25/04: nmap="27847/tcp closed unknown -- netstat="tcp        0      0 <IP_ADDRESS>:54882       <IP_ADDRESS>:27847     TIME_WAIT"
17:25 25/04: nmap="27847/tcp closed unknown" -- netstat=""
[snip]
17:35 25/04: 27847/tcp closed unknown -- tcp        0      1 <IP_ADDRESS>:55166       <IP_ADDRESS>:27847     SYN_SENT
[snip]

18:44 25/04: 27847/tcp closed unknown --

Sorry the above output is a bit hard to read, but at those times, I ran an nmap and netstat looking for the port and after 17:25 its all closed, and no netstat, so no hass connection to the rinnai appliance. FWIW, there are about 3 of those SYN_SENT log lines, so I presume your integration is still trying to connect to the now closed port.
If I hard power off/on the appliance, the same sequence will occur.
I don't know if your code does something on the hour, hass does, or the rinnai touch does?   Is there any chance when you use your integration that you are pushing/pulling content from the rinnaitouch more frequently and this somehow keeps your connection alive, but I am not? I don't have my dashboard active all the time, but I do have a simple-thermostat showing the status when I do load my dashboard.
Also, in case it helps logs from hass around this time:
2022-04-25 16:23:29 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-25 16:23:39 DEBUG (MainThread) [pyrinnaitouch.system] Error during renewConnection timed out
2022-04-25 16:23:39 DEBUG (MainThread) [pyrinnaitouch.system] renewing connection failed, not sending command
2022-04-25 16:23:39 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-25 16:23:39 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 22
2022-04-25 16:23:39 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 16:23:39 WARNING (MainThread) [homeassistant.components.climate] Updating rinnaitouch climate took longer than the scheduled update interval 0:00:05
2022-04-25 16:23:44 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-25 16:23:44 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-25 16:23:48 DEBUG (MainThread) [pyrinnaitouch.system] Error during renewConnection [Errno 113] Host is unreachable
2022-04-25 16:23:48 DEBUG (MainThread) [pyrinnaitouch.system] renewing connection failed, not sending command
2022-04-25 16:23:48 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-25 16:23:48 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 22
2022-04-25 16:23:48 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 16:23:49 DEBUG (MainThread) [pyrinnaitouch.system] sending empty command
2022-04-25 16:23:49 DEBUG (MainThread) [pyrinnaitouch.system] Empty command exception: [Errno 9] Bad file descriptor
2022-04-25 16:23:49 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-25 16:23:49 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-25 16:23:49 DEBUG (MainThread) [pyrinnaitouch.system] Client Variable: <socket.socket fd=34, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 54880), raddr=('<IP_ADDRESS>', 27847)> / False
2022-04-25 16:23:53 DEBUG (MainThread) [pyrinnaitouch.system] Sequence: 1 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "Y", "EC": "N", "CG": "N", "RA": "N", "RH": "N", "RC": "N" }, "OSS": {"DY": "MON", "TM": "17:20", "BP": "Y", "RG": "Y", "ST": "N", "MD": "H", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"HGOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "CF": "N", "PS": "Y", "DG": "W" }, "OOP": {"ST": "N", "CF": "N", "FL": "00", "SN": "N" }, "GSO": {"OP": "M", "SP": "19", "AO": "N" }, "GSS": {"HC": "N", "FS": "N", "GV": "N", "PH": "N", "AT": "W", "AZ": "W" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]
2022-04-25 16:23:53 DEBUG (MainThread) [pyrinnaitouch.heater] Heater is ON
2022-04-25 16:23:53 DEBUG (MainThread) [pyrinnaitouch.heater] Fan Speed is: 00
2022-04-25 16:23:53 DEBUG (MainThread) [pyrinnaitouch.heater] Heat OpMode is: M
2022-04-25 16:23:53 DEBUG (MainThread) [pyrinnaitouch.heater] Heat set temp is: 19
2022-04-25 16:23:53 DEBUG (MainThread) [pyrinnaitouch.system] We are in HEAT mode
2022-04-25 16:23:53 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 16:23:53 DEBUG (MainThread) [pyrinnaitouch.system] Client shutting down
2022-04-25 16:23:53 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-25 16:23:53 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 22
2022-04-25 16:23:53 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 16:23:54 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-25 16:23:54 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-25 16:23:54 DEBUG (MainThread) [pyrinnaitouch.system] Client Variable: <socket.socket fd=38, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 54882), raddr=('<IP_ADDRESS>', 27847)> / False
2022-04-25 16:23:58 DEBUG (MainThread) [pyrinnaitouch.system] Sequence: 1 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "Y", "EC": "N", "CG": "N", "RA": "N", "RH": "N", "RC": "N" }, "OSS": {"DY": "MON", "TM": "17:20", "BP": "Y", "RG": "Y", "ST": "N", "MD": "H", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"HGOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "CF": "N", "PS": "Y", "DG": "W" }, "OOP": {"ST": "N", "CF": "N", "FL": "00", "SN": "N" }, "GSO": {"OP": "M", "SP": "19", "AO": "N" }, "GSS": {"HC": "N", "FS": "N", "GV": "N", "PH": "N", "AT": "W", "AZ": "W" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]
[snip]
2022-04-25 17:23:46 DEBUG (MainThread) [pyrinnaitouch.system] Client Variable: <socket.socket fd=38, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 54882), raddr=('<IP_ADDRESS>', 27847)> / False
2022-04-25 17:23:50 DEBUG (MainThread) [pyrinnaitouch.system] Sequence: 1 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "Y", "EC": "N", "CG": "N", "RA": "N", "RH": "N", "RC": "N" }, "OSS": {"DY": "MON", "TM": "18:20", "BP": "Y", "RG": "Y", "ST": "N", "MD": "H", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"HGOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "CF": "N", "PS": "Y", "DG": "W" }, "OOP": {"ST": "N", "CF": "N", "FL": "00", "SN": "N" }, "GSO": {"OP": "M", "SP": "18", "AO": "N" }, "GSS": {"HC": "N", "FS": "N", "GV": "N", "PH": "N", "AT": "W", "AZ": "W" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]
2022-04-25 17:23:50 DEBUG (MainThread) [pyrinnaitouch.heater] Heater is ON
2022-04-25 17:23:50 DEBUG (MainThread) [pyrinnaitouch.heater] Fan Speed is: 00
2022-04-25 17:23:50 DEBUG (MainThread) [pyrinnaitouch.heater] Heat OpMode is: M
2022-04-25 17:23:50 DEBUG (MainThread) [pyrinnaitouch.heater] Heat set temp is: 18
2022-04-25 17:23:50 DEBUG (MainThread) [pyrinnaitouch.system] We are in HEAT mode
2022-04-25 17:23:50 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 17:23:50 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-25 17:23:50 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 22
2022-04-25 17:23:50 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 17:23:51 DEBUG (MainThread) [pyrinnaitouch.system] Client Variable: <socket.socket fd=38, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 54882), raddr=('<IP_ADDRESS>', 27847)> / False
2022-04-25 17:23:55 DEBUG (MainThread) [pyrinnaitouch.system] Sequence: 1 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "Y", "EC": "N", "CG": "N", "RA": "N", "RH": "N", "RC": "N" }, "OSS": {"DY": "MON", "TM": "18:20", "BP": "Y", "RG": "Y", "ST": "N", "MD": "H", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"HGOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "CF": "N", "PS": "Y", "DG": "W" }, "OOP": {"ST": "N", "CF": "N", "FL": "00", "SN": "N" }, "GSO": {"OP": "M", "SP": "18", "AO": "N" }, "GSS": {"HC": "N", "FS": "N", "GV": "N", "PH": "N", "AT": "W", "AZ": "W" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]
2022-04-25 17:23:55 DEBUG (MainThread) [pyrinnaitouch.heater] Heater is ON
2022-04-25 17:23:55 DEBUG (MainThread) [pyrinnaitouch.heater] Fan Speed is: 00
2022-04-25 17:23:55 DEBUG (MainThread) [pyrinnaitouch.heater] Heat OpMode is: M
2022-04-25 17:23:55 DEBUG (MainThread) [pyrinnaitouch.heater] Heat set temp is: 18
2022-04-25 17:23:55 DEBUG (MainThread) [pyrinnaitouch.system] We are in HEAT mode
2022-04-25 17:23:55 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 17:23:55 DEBUG (MainThread) [pyrinnaitouch.system] Client shutting down
2022-04-25 17:23:55 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature
2022-04-25 17:23:55 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor reports: 22
2022-04-25 17:23:55 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Internal temperature sensor reports: 999
2022-04-25 17:23:56 DEBUG (MainThread) [pyrinnaitouch.system] Error 1st phase during renewConnection [Errno 9] Bad file descriptor
2022-04-25 17:23:56 DEBUG (MainThread) [pyrinnaitouch.system] Creating new client...
2022-04-25 17:23:56 DEBUG (MainThread) [pyrinnaitouch.system] Error during renewConnection [Errno 111] Connection refused

FWIW, I had about 2 weeks of it just worked, then after a hass update it failed again.  This time, I've decided to look a bit harder at the code.
My json return does not contain the modes? that you try to use, and I have inserted this code at line 293 in system.py to get around the fact that you try to reference j[1] and yet in my json, there is only j[0].   This has stopped my socket being lost/broken, and I can now consistently see with nmap and netstat that the rinnai touch appliance is responding to hass:
            # I think this causes the json error and then the subsequent client close...
            if len(j) == 1:
                _LOGGER.debug("TESTING: modes not processed")
                return True

But, for now, this has still left me with the actual climate device in hass being in an unavailable state.   Should the code set the modes to false or something?   The heater is actually on and in heat_cool mode when I power the rinnai on and off, not sure if that matters, or explains the json difference?

The above hack is only part of the situation for me, but it has helped.  After re-checking everything last night, I noticed the rinnai touch app had the heater in 'System Initialising' mode.   I went to the physical heater controls, made sure they were working (it was stuck asking for clock time to be set, so it really did seem to be in an odd state).   Once that was fixed, your code started showing the climate entry again.
I thought it was all solved, but for timing, we had a power outage last night, long story, but I definitely had the device enter a connection refused state again this morning, and I had to go through this sequence - in case anyone else needs to do this in the future:
Firstly, the code needs the 'hack above', then:

power off the rinnaitouch
disable the rinnaitouch integration in hass
power on the rinnaitouch
check via nmap the rinnaitouch is now in an open port state (nmap -p 27846 )
enable the rinnaitouch integration in hass
Maybe? go to your rinnaitouch app / heater panel and make sure the rinnaitouch is not initialising / fix this on the heater controls (I've got an nc6 on the wall)

HTH

Just an update, I've commented out pretty much all the socket close code, and my rinnai is now solid unless I restart hass.  The moment I restart hass, the connection gets closed and the rinnai touch stays in connection refused until I restart the rinnai touch device.   Otherwise though, I have had it work for days without issues.  Odd to say the least.

can you try the very latest version 0.11.1? I've changed the handling of the connection a lot and switched the whole library from poll to push which works so much better for me now.

Hi, only been using this for 5 minutes, but so far, all good - I did a restart of hass (I run hass in a docker container), and this always broke the integration in the past, this time, its all still working :)
BTW, I used to make some mods to /usr/local/lib/python3.10/site-packages/pyrinnaitouch/system.py mostly socket closing that should be all good now -- but sharing as I think you might want to fix (line 386), it never triggered, but feels like it checks the wrong var:
            flt = get_attribute(status_json[0].get("SYST"), "FLT", None)
            if not avm:
                # Probably an error
                _LOGGER.error("No FLT - Not happy, Jan")

The if should be:
           if not flt  (I am guessing)

Also I saw another bug at this line that I think will still trigger (line 393)
            if 'HGOM' in status_json[1]:

For me, status_json[1] does not exist sometimes (I think just after power-on of the wireless unit).   In this state, the json contained:
[{'SYST': {'CFG': {'MTSP': 'N', 'NC': '00', 'DF': 'N', 'TU': 'C', 'CF': '1', 'VR': '0183', 'CV': '0010', 'CC': '043', 'ZA': '                ', 'ZB': '                ',
 'ZC': '                ', 'ZD': '                '}, 'AVM': {'HG': 'N', 'EC': 'N', 'CG': 'N', 'RA': 'N', 'RH': 'N', 'RC': 'N'}, 'OSS': {'DY': 'MON', 'TM': '00:00', 'BP': 'Y', 'RG': '
N', 'ST': 'C', 'MD': 'N', 'DE': 'N', 'DU': 'N', 'AT': '999', 'LO': 'N'}, 'FLT': {'AV': 'N', 'C3': '000'}, 'STM': {'DY': 'MON', 'TM': '00:00', 'SV': 'N'}}}]

I added a hack by putting an:
                if len(json_status) != 2:

before the check for 'HGOM', to at least stop it crashing...
Thanks again, the new push method seems much better :)

Thanks for all that info. I've put some fixes in (and some more that I found) and released 0.10.4 version of the library integrated into 0.11.4 of the integration.

Hi, I'm currently on 11.6, but I think I also saw an issue on 11.5, but I definitely can see it in my logs now.   It seems after leaving hass running for a few days, I lose control as the network fails at some point and does not recover.   Here are relevant logs from grep -i rinnai home_assistant.log:
2023-02-13 17:18:58.231 DEBUG (MainThread) [custom_components.rinnaitouch] Get controller with IP: rinnaitouch.ddp.net
2023-02-13 17:18:58.232 DEBUG (SyncWorker_6) [pyrinnaitouch.system] Creating new client...
2023-02-13 17:19:03.237 DEBUG (SyncWorker_6) [pyrinnaitouch.system] Error during renewConnection [Errno -3] Try again
2023-02-13 17:19:03.238 DEBUG (SyncWorker_6) [pyrinnaitouch.system] renewing connection failed, ooops

FWIW: Unlike previously, a simple restart of hass fixes this now.  In previous versions I would have to hard power on/off the rinnai device to get hass to control it again.

Actually after a restart it is still not working, same error and now the port has closed between my rinnai and hass...
2023-02-14 09:19:17.495 WARNING (SyncWorker_3) [homeassistant.loader] We found a custom integration rinnaitouch which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-02-14 09:19:25.322 DEBUG (MainThread) [custom_components.rinnaitouch] Get controller with IP: rinnaitouch.ddp.net
2023-02-14 09:19:25.322 DEBUG (SyncWorker_0) [pyrinnaitouch.system] Creating new client...
2023-02-14 09:19:25.350 DEBUG (SyncWorker_0) [pyrinnaitouch.system] Client refused connection: [Errno 111] Connection refused
2023-02-14 09:19:25.351 DEBUG (SyncWorker_0) [pyrinnaitouch.system] Error during renewConnection [Errno 111] Connection refused
2023-02-14 09:19:25.351 DEBUG (SyncWorker_0) [pyrinnaitouch.system] renewing connection failed, ooops
2023-02-14 09:19:25.460 INFO (MainThread) [custom_components.rinnaitouch.climate] Set up RinnaiTouch entity rinnaitouch.ddp.net
2023-02-14 09:19:25.460 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature

nmap -p 27847 rinnaitouch
Starting Nmap 7.80 ( https://nmap.org ) at 2023-02-14 10:26 AEDT
Nmap scan report for rinnaitouch (<IP_ADDRESS>)
Host is up (0.19s latency).

PORT      STATE  SERVICE
27847/tcp closed unknown

Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

Feels like this is different to 11.4 and 11.5 - I saw those "silently" fail in the interface, the controls seem to work, the commands were sent, but the device did not respond, I restarted hass and it fixed it.   Since 11.6, the above has occurred.

I have experience this randomly before. I am not sure what the best course of action is in that case, it seems best to leave the Rinnai alone for a bit, but I don't know how long that is. Currently, the extension will retry the connection, maybe I should build in an increasing amount of wait time.
What I do in case this happens, btw, is to go to my router and block the Rinnai device from connecting (which throws it out of the network and causes it to reboot) and then remove the block about 20 seconds later. Then it connects again fine.

Actually after a restart it is still not working, same error and now the port has closed between my rinnai and hass...
2023-02-14 09:19:17.495 WARNING (SyncWorker_3) [homeassistant.loader] We found a custom integration rinnaitouch which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-02-14 09:19:25.322 DEBUG (MainThread) [custom_components.rinnaitouch] Get controller with IP: rinnaitouch.ddp.net
2023-02-14 09:19:25.322 DEBUG (SyncWorker_0) [pyrinnaitouch.system] Creating new client...
2023-02-14 09:19:25.350 DEBUG (SyncWorker_0) [pyrinnaitouch.system] Client refused connection: [Errno 111] Connection refused
2023-02-14 09:19:25.351 DEBUG (SyncWorker_0) [pyrinnaitouch.system] Error during renewConnection [Errno 111] Connection refused
2023-02-14 09:19:25.351 DEBUG (SyncWorker_0) [pyrinnaitouch.system] renewing connection failed, ooops
2023-02-14 09:19:25.460 INFO (MainThread) [custom_components.rinnaitouch.climate] Set up RinnaiTouch entity rinnaitouch.ddp.net
2023-02-14 09:19:25.460 DEBUG (MainThread) [custom_components.rinnaitouch.climate] External temperature sensor entity name: sensor.dining_ac_measured_value_of_room_temperature

nmap -p 27847 rinnaitouch
Starting Nmap 7.80 ( https://nmap.org ) at 2023-02-14 10:26 AEDT
Nmap scan report for rinnaitouch (<IP_ADDRESS>)
Host is up (0.19s latency).

PORT      STATE  SERVICE
27847/tcp closed unknown

Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

Feels like this is different to 11.4 and 11.5 - I saw those "silently" fail in the interface, the controls seem to work, the commands were sent, but the device did not respond, I restarted hass and it fixed it. Since 11.6, the above has occurred.

I just wondered, are you using a mesh network? I have turned mesh functionality off for the unit (on the router). I've done this a while ago, but I believe the unit was less stable. I believe it may have been switching access points and somehow disrupted the connection during those moments.

Yes, I am using a wireless mesh (it was the only to reach the rinnai reliably).

In my router I can turn mesh off and ensure the unit always connects to just one access point. Same for me, I needed a mesh to reach it reliably. Do you have any similar settings?

:)  Yes, I have a tp-link deco mesh too.   I have just changed the toggle on the appliance to stop it roaming.   Let's see if that helps / thanks.

Just an update since I also locked the ip to the closest mesh node, I think it has helped, but I still have had 2 times were the rinnai device won't allow connections.   I can reliably cause this to happen for me by shutting down hass via docker (I run it on top of ubuntu via docker-compose).   When I stop the container with hass in it, I instantly get a closed state on the port with nmap.  The integration is much more resilient now, these days I can power off the rinnai device and then back on again, and the integration will recover when the port becomes available.
I don't know if there is something different in how hass is running in docker vs via the supervisor.   If you know docker, I am running hass in network mode, so its appearing with an ip on the same subnet as the rinnai device, and my docker host is connected over a wired connection to the modem, so there seems to be something in how the closing down of the socket causes the port to be unable to come back without hard powering.    I am wildly guessing the improvements you have made all relate to reducing the change that there is an active connection being closed, rather than stopping the exact really weird condition that is causing this.
Thanks

Good news it's more reliable now. I believe there is an event about shutdown or removing the entity that I don't listen to nor do anything with. I think that could be the key to your scenario. Let me look at that. It sounds like if shutdown (or restart) was handled more reliably that would do it for you?

Try again with 0.12.7 and let me know if that does it.

Perfect, survives the shutdown (and restarts) now.  I think we can close this now :)
Thanks, really appreciate it.

That's awesome. I meant to look at shutdown for a while. Closing this on off


Data save

Two things:

Would be nice to save the whole table, not just the visible rows
Data export should customize the list of experiments (evidence) column nicely (or otherwise just drop it)

Solved at some point


Handle dedup for image vulnerabilities post refactor

Currently the logic to dedup image vulnerabilities is sprinkled through out the system (external api, policy-engine gate evaluation etc). It's error prone and not consistent. Vulnerabilities refactor PR #1001 disabled the dedup entirely
Refactor the dedup logic and move it into the provider abstraction so the clients don't have to bother with it. Also allows for configuring different dedup strategies at the provider level
Refer to external api for the authoritative answer on dedup strategy for legacy provider
https://github.com/anchore/anchore-engine/blob/41615e56aedb9fd06288418e25733330776d7cf9/anchore_engine/services/apiext/api/controllers/utils.py#L364-L534

Closed by #1019


[Feature] Add support for scale property

Hello,
Image cropper stopped working properly whenver outer element of cropper having transform scale property. It won't work smooth as it expected. It will starting lag while moving cropper as well changing size of cropper.
Demo Link: https://codesandbox.io/s/react-image-crop-demo-with-scale-property-dj9ut?file=/src/index.js
Suggestion:
We can pass scale prop to react-image-crop lib. It should adjust this scale value while drawing/moving cropper.

The lib has a scale property now (v9), though this is going away in v10 it will still be possible to directly scale the image (see v10 notes when released)


Fix ZF-7570: forceIndex, useIndex, ignoreIndex methods on db select and join.

This PR is a replacement for #509.

@ezequielp The tests are failing on travis

Trying again. I made a mistake on the tests.

Any updates on that?

This is fixed but never got pushed

@ezequielp I don't agree to put specific vendor SQL syntax in Zend_Db_Select. The actual design of Zend_Db doesn't allow to have specific SQL dialect. As you also commented here this will work only for MySQL.
A better architecture design should have a subclass of Zend_Db_Select in each Adapter with specific SQL syntax, but this would require an heavy refactor of the actual implementation and unfortunately this is not possible at the actual stage of ZF1.
A workaround to use Hint SQL features is to use an explicit syntax with Zend_Db_Statement, for instance:
$stmt = $db->query('SELECT `p`.* FROM `product` AS `p` FORCE INDEX(?)');
$stmt->execute(array('IX_this_index_does_not_exist'));

I'm very sorry but I cannot merge this MySQL feature in Zend_Db :(
/cc @froschdesign, @mhujer, @Alez, @dbaltas, @weierophinney

I close this pull request, because:

…this would require an heavy refactor of the actual implementation and unfortunately this is not possible at the actual stage of ZF1.

ok, makes sense

Actually, you can set this option.
So, if you still want to use Zend Db/TDG
$select = new Select;    // instance of \Zend\Db\Sql\Select
$select->....
$select->setSpecification(Select::SELECT, [
            'SELECT %1$s FROM %2$s USE INDEX (yor_index_name)' => [
                [1 => '%1$s', 2 => '%1$s AS %2$s', 'combinedby' => ', '],
                null
            ],
            'SELECT %1$s %2$s FROM %3$s'                        => [
                null,
                [1 => '%1$s', 2 => '%1$s AS %2$s', 'combinedby' => ', '],
                null
            ],
            'SELECT %1$s'                                       => [
                [1 => '%1$s', 2 => '%1$s AS %2$s', 'combinedby' => ', '],
            ],
]);

Basically you need to override default specification for queries you want
https://github.com/zendframework/zend-db/blob/master/src/Sql/Select.php#L68
work like a charm :)

@tasmaniski
Zend\Db\Sql\Select is a part of ZF2/3. Not ZF1!


updated readme and removed managed notebook command

Hello @karticn-google,
Thank you for getting the automation side of this project going!
One change I would recommend before we continue here.  I notice that both options in the readme.md suggest copy/pasting the command from the .sh file.  In this case the .sh file is not actually being used as a script.  For simplicity it may be better to put the example command in-line in the readme using a code block like
gcloud ...

Thank You,
Mike

Hey @statmike,
I have deleted the user_managed_notebook.sh script and added the sample command to readme file. The step to replace the values in the placeholder has been updated as well. Thanks for your feedback.
Regards,
Kartic

@karticn-google Thank You!  I merged it in


Freeze a model

Versions

TensorFlow version 1.12.0
Python version 3.6.5
Operating system win10 no cpu

Issue
How to freeze a model into pb, but I don't know which of output_node_names to take ? I encountered some of the following errors:
cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\dnn\src\tensorflow\tf_graph_simplifier.cpp:860: error: (-215:Assertion failed) nodesMapIt != nodesMap.end() in function 'cv::dnn::dnn4_v20190122::sortByExecutionOrder'
How can I take nodesMap.end() out?

In the answer you can find the node names: https://github.com/githubharald/SimpleHTR/issues/56
I can't provide any further help on this.


ECMWF module does not exist

What maintenance does this project need?
No module is available on ECMWF servers whereas it is stated otherwise in the documentation: doc.
Organisation
ECMWF

The documentation is fixed by #63.
The Environment Modules are no longer directly supported on ECMWF systems.
The recommended installation procedure is using a Conda environment.


a little problem when using some pretrained models

🐛 Bug

A little problem.
I used some pretrained models to do object detection.
However, when i used models whose name include others models' name, such as 'fasterrcnn_mobilenet_v3_large_320_fpn', (its name includes the name of model 'mobilenet_v3_large'),  it will download the weight file of the short name models.
For example, when i used model 'fasterrcnn_mobilenet_v3_large_320_fpn', whenever the pretrained attribute is True or not, the weight file of model 'mobilenet_v3_large' will be downloaded.
This problem also happen in the models such as 'maskrcnn_resnet50_fpn' and many other models.
To Reproduce
Steps to reproduce the behavior:
it's easy to reproduce. For example:
from torchvision.models.detection import *
model = fasterrcnn_mobilenet_v3_large_320_fpn()

excute the code above, the weight file of model "mobilenet_v3_large" will be  downloaded.
you can change the model name to other this kind of model names.

cc @fmassa @vfdev-5 @pmeier

@datumbox maybe we should only download the backbone weights if pretrained=False and pretrained_backbone=True?

@ZhiyanWXZ the vast majority of the models have pretrained=False and pretrained_backbone=True as default parameters which means this is an expected behaviour. As @vfdev-5 said, if you pass pretrained_backbone=False it won't download the backbone data.
As for when pretrained=True as far as I can tell the pretrained_backbone is set to False automatically for all models. Which version of TorchVision are you using?
fasterrcnn_mobilenet_v3_large_fpn/fasterrcnn_mobilenet_v3_large_320_fpn:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/detection/faster_rcnn.py#L382-L383
fasterrcnn_resnet50_fpn:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/detection/faster_rcnn.py#L364-L366
keypointrcnn_resnet50_fpn:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/detection/keypoint_rcnn.py#L334-L336
maskrcnn_resnet50_fpn:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/detection/mask_rcnn.py#L327-L329
retinanet_resnet50_fpn:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/detection/retinanet.py#L616-L618
ssd300_vgg16:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/detection/ssd.py#L574-L576
ssdlite320_mobilenet_v3_large:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/detection/ssdlite.py#L193-L194
fcn_resnet50/fcn_resnet101/deeplabv3_resnet50/deeplabv3_resnet101/deeplabv3_mobilenet_v3_large:
https://github.com/pytorch/vision/blob/183a722169421c83638e68ee2d8fc5bd3415c4b4/torchvision/models/segmentation/segmentation.py#L70-L72
The only problematic case I found was for lraspp_mobilenet_v3_large which I'll patch in a bit.

thanks, I get it!


Enhance the match by id filter eval id.

TODO:

id(v) + 1 IN [...]
id(v) IN [...] OR v.prop == 'xxx'  (this need analysis all query entry e.g. id,prop,label seek)   It's disabled now.

I feel this's a case by case solution for IN or RelEq expression! Could it handle the following scenario:
MATCH (v)
WHERE (id(v) == "Tim Duncan" AND v.age>10) OR (id(v)=="Tony Parker" AND v.age>10)
RETURN v.name AS Name

I think the proper way for this issue is to normalize the logical expressions to the format A AND B AND C firstly，and then retrieve the id(v) related expressions from former A/B/C.
For the NOT NOT expression, we should define some expression visitors which do some transformation equivalently. Not only just for that, maybe some cases like:
NOT NOT expr => expr
expr +/-/*// constant IN [constants list] => expr IN [constant list]
expr +/-/*// constant == constant => expr == constant

Had add this case to test.

I feel this's a case by case solution for IN or RelEq expression! Could it handle the following scenario:
MATCH (v)
WHERE (id(v) == "Tim Duncan" AND v.age>10) OR (id(v)=="Tony Parker" AND v.age>10)
RETURN v.name AS Name

I think the proper way for this issue is to normalize the logical expressions to the format A AND B AND C firstly，and then retrieve the id(v) related expressions from former A/B/C.
For the NOT NOT expression, we should define some expression visitors which do some transformation equivalently. Not only just for that, maybe some cases like:
NOT NOT expr => expr
expr +/-/*// constant IN [constants list] => expr IN [constant list]
expr +/-/*// constant == constant => expr == constant

Had add this case to test.

I feel this's a case by case solution for IN or RelEq expression! Could it handle the following scenario:
MATCH (v)
WHERE (id(v) == "Tim Duncan" AND v.age>10) OR (id(v)=="Tony Parker" AND v.age>10)
RETURN v.name AS Name

I think the proper way for this issue is to normalize the logical expressions to the format A AND B AND C firstly，and then retrieve the id(v) related expressions from former A/B/C.
For the NOT NOT expression, we should define some expression visitors which do some transformation equivalently. Not only just for that, maybe some cases like:
NOT NOT expr => expr
expr +/-/*// constant IN [constants list] => expr IN [constant list]
expr +/-/*// constant == constant => expr == constant

Had add this case to test.

For the expression transform , I think they are not strongly related to the vid extract, so we could add it in latter.

I feel this's a case by case solution for IN or RelEq expression! Could it handle the following scenario:
MATCH (v)
WHERE (id(v) == "Tim Duncan" AND v.age>10) OR (id(v)=="Tony Parker" AND v.age>10)
RETURN v.name AS Name

I think the proper way for this issue is to normalize the logical expressions to the format A AND B AND C firstly，and then retrieve the id(v) related expressions from former A/B/C.
For the NOT NOT expression, we should define some expression visitors which do some transformation equivalently. Not only just for that, maybe some cases like:
NOT NOT expr => expr
expr +/-/*// constant IN [constants list] => expr IN [constant list]
expr +/-/*// constant == constant => expr == constant

Had add this case to test.

For the expression transform , I think they are not strongly related to the vid extract, so we could add it in latter.


bug: ERROR TypeError: _co.login is not a function  Cannot find function.

I'm using Ionic 4 and today i have created new project.
After in new page I create button .
login.page.html
 <div >

        <ion-button (click)="cancel()" >Cancel</ion-button>

 </div>

login.page.ts
cancel(){
    console.log("You clicked cancel button")
  }

I checked everywhere everything is OK . But when click button I get error
AppComponent.html:19 ERROR TypeError: _co.cancel is not a function
at Object.eval [as handleEvent] (AppComponent.html:19)
at handleEvent (core.js:43993)
at callWithDebugContext (core.js:45632)
at Object.debugHandleEvent [as handleEvent] (core.js:45247)
at dispatchEvent (core.js:29804)
at core.js:42925
at HTMLElement. (platform-browser.js:2668)
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:39680)
at ZoneDelegate.invokeTask (zone-evergreen.js:390)
Please help!!!

Thanks for the issue. I am going to close this as this is more of a support question. For further help debugging I recommend you post your question on our forums.


{ "error": { "errors": [ { "domain": "usageLimits", "reason": "dailyLimitExceededUnreg", "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", "extendedHelp": "https://code.google.com/apis/console" } ], "code": 403, "message"

Fatal error: Uncaught Google_Service_Exception: { "error": { "errors": [ { "domain": "usageLimits", "reason": "dailyLimitExceededUnreg", "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", "extendedHelp": "https://code.google.com/apis/console" } ], "code": 403, "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." } } in C:\xampp\htdocs\test-example\google-drive-api\vendor\google\apiclient\src\Google\Http\REST.php:118 Stack trace: #0 C:\xampp\htdocs\test-example\google-drive-api\vendor\google\apiclient\src\Google\Http\REST.php(94): Google_Http_REST::decodeHttpResponse(Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #1 C:\xampp\htdocs\test-example\google-drive-api\vendor\google\apiclient\src\Google\Task\Runner.php(181): Google_Http_REST::doExecute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #2 C:\xampp\htdocs\test-example\google-drive-api\ in C:\xampp\htdocs\test-example\google-drive-api\vendor\google\apiclient\src\Google\Http\REST.php on line 118

if ($client->isAccessTokenExpired()) {
// Refresh the token if possible, else fetch a new one.
if ($client->getRefreshToken()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
} else {
// Request authorization from the user.
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:\n%s\n", $authUrl);
print 'Enter verification code: ';
$authCode = trim(fgets(STDIN));
        // Exchange authorization code for an access token.
        $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
        $client->setAccessToken($accessToken);

        // Check to see if there was an error.
        if (array_key_exists('error', $accessToken)) {
            throw new Exception(join(', ', $accessToken));
        }
    }
    // Save the token to a file.
    if (!file_exists(dirname($tokenPath))) {
        mkdir(dirname($tokenPath), 0700, true);
    }
    file_put_contents($tokenPath, json_encode($client->getAccessToken()));
}

i am using this code for google drive api

Looks like the requests you're making are not authorized. Were you able to successfully go through the authorization flow? This would mean being prompted in your browser to authorize your application, and pasting an authorization code back on the command line.

See the examples in the examples directory for more help on how to do this. Specifically, check out the simple-file-upload example, which uses the Drive API.

sir now i am getting the invalid json token in codeigniter. because the token.js file has null no access token in it. Plz tell me what i doing wrong.

Hello @FahadTariq476-dev
This is because the scope you use for Drive API is labelled restricted.
You can make a limited number of requests to get file data/content.
Once you have reached the limit you have to get another access_token for the existing session. It is like having refresh_token.
You can wrap your code that sends requests to get files in try...catch
If that error is thrown you can requestAccessToken.
NOTE: For refreshing the access token in an existing session, you do not need to ask for content again.

Question: what if I'm not using credentials but else API key?

@neoacevedo Your question is not clear


Change the order of components names in Generated Name

Hi,
I would like to have different order of components than the current one.
Eg. Currently generated name pattern is:  "ResourceType""delimiter""ApplicationName""delimiter""environment""delimiter""InstanceNumber" is fixed.
But I would like to have "ApplicationName""delimiter""ResourceType""delimiter""environment""delimiter""InstanceNumber"
where ApplicationName is 1st then followed by resource type

It already there. Thanks


added support for STM32F4 and Ethernet

Added support for STM32F407 (Cortex-M4) boards with native Ethernet support (like Olimex E407 board).
A lot of files in this PR are autogenerated after building with this command:
docker pull microros/micro_ros_static_library_builder:galactic
docker run -it --rm -v $(pwd):/project --env MICROROS_LIBRARY_FOLDER=extras microros/micro_ros_static_library_builder:galactic

But basically I changed only those files:

library_generation.sh
cortex_m4_toolchain.cmake
micro_ros_arduino.h
native_ethernet_transport.cpp
library.properties

Everything is working fine on a real hardware. Tested in this project: https://github.com/husarion/micro_ros_stm32_template

Could you reduce the file changed to:
library_generation.sh
cortex_m4_toolchain.cmake
micro_ros_arduino.h
native_ethernet_transport.cpp
library.properties
?
We will generate the other when CI is executed

LGTM

@mergify backport foxy main


[Packaging] Change samples and build.sln to use PackageReference

All of build.sln has been updated to PackageReference at memontic/PackageReference
It needs the fix in the updated NuGet build task so this PR will have to wait until #2200 in implemented.

Merged into packaging (and develop)


Regex or wildcard in the album/artist/genre search view

Add support for regex or wildcards for easier search inside the album/artist/genre search view.
Some example use-cases:

See all artists with names starting on K
See all artists with names starting with The
See all albums including multiple words.

Somewhat related to https://github.com/clangen/musikcube/issues/268.

Yeah, this has been on my mind for quite a while. Today I spent some time working on an implementation, and got it working a couple hours ago. I need to do more extensive testing, but am hopeful to make it into the next release.
The PR is here: https://github.com/clangen/musikcube/pull/379

Part of 0.95.0, which was just released. To use: focus a search field and press M-m to toggle between regular and regex "match modes." The search field will be highlighted in blue when regex mode is enabled, and highlighted in red for standard search/filter.


Adding better handling of invalid intersects geometry

Related Issue(s):

https://github.com/stac-utils/stac-server/issues/245

Proposed Changes:

Use geojsonhint to validate the geometry before sending it to Search (this will handle some, but not all geometries that Search is incompatible with)
Parse the response from Search, and pass a 400 to the user with a helpful error message, when possible

PR Checklist:

[x] I have added my changes to the CHANGELOG or a CHANGELOG entry is not required.
[x] Address vulnerability with geojsonhint (underscore), found by npm audit - https://github.com/advisories/GHSA-cf4h-3jhx-xvhq

History
This ticket suggested several tools for identifying invalid/problematic geometry:

geojsonhint library
geojson schema validation
geojson-validation library
turf.js area computation

In my testing, only one tool flagged more than 1/5 of our test fixtures/samples. (geojsonhint flags 3/5)

Regarding the geojsonhint/underscore vulnerability, it appears that underscore is unused, and it is safe to use this library:
https://github.com/mapbox/geojsonhint/pull/89
https://github.com/mapbox/geojsonhint/commit/55950968d9ede4f7f4df5e3d6fa15297efbc7d49


Changed UI.png image and includes changes made by QL to DevGuide

Changed UI.png to better reflect our product. Accidentally merged QL's commits in advanced

Looks like you PR'ed against the wrong repo? :-) Closing...


Full link URL for image

Good practice not to use relative links

@uglyeoin Merged. Thanks for the contribution.


Controller: handle add/remove in the same reconciliation

What this PR does / why we need it:
The controller is now setting the pod network status annotation only once in the reconcile loop to avoid conflicts when a network attachment is added and another one removed at the same time.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes: #157
Special notes for your reviewer (optional):

OK !
First of: thanks for reporting the bug, and thanks for providing a fix for it. I appreciate both your effort for being a contributing member of the community, and the way you're doing so.
Secondly, as stated in the issue, I agree we can improve the user flow.
Lastly, while code wise this could work, I don't like how it looks like. It mislead me a couple of times.
I think we can (and should!) do what your PR proposes - i.e. only set the status once, at the end of the flow. I do disagree on the "how" you're doing it though.
What do you think about removing the "update state" functions from the addNetworks / removeNetworks functions, and update the PodDynamicNetworkStatus to receive the list of "added" attachments and "removed" attachments ? Then just compute it all in one go, and write that to the API once ?
It is more code, but I do feel it is more explicit. The update status block should happen in a defer, so it gets done even if there's an error adding/removing an attachment to the pod (but some others succeeded).
@LionelJouin do you see any issues with this ?
I also welcome other options.

Thoughts @kmabda ?

Thanks for reporting this bug and providing a fix for it @LionelJouin
IMHO, the approach used to fix this issue as provided in this PR looks okay to me, the virtue is keeping it simple.

Thanks for reporting this bug and providing a fix for it @LionelJouin
IMHO, the approach used to fix this issue as provided in this PR looks okay to me, the virtue is keeping it simple.

OK, fair enough.
Please approve it, and let's merge.  @kmabda
I can refactor this later on, and we can discuss if it that's preferable.
The unit tests seem good enough for me to work on top of.


Add influx_inspect filtering support

A few changes to make influx_inspect more usable with larger data files as well as add some structure to the code.

Adds command-line flags -index, -block, -all that will dump only the index, the blocks or all data.  By default, only statistics and summary info is displayed.
Adds a command-line flag -filter-key which is a string to match on the points key (measurement + tags).  If the filter matches, only index and block data for those matching points will be displayed.
Handles one error case I ran into where the ids file was out of sync with the tsm1 file.  It will now record those errors and display them.  If an ids file is not present, we just shown UNKNOWN for that data since we can't determine if there is an error with it or not.
Added an errors section that will be used to track errors with parts of the file if we see detect any while reading it.

Some minor feedback, but if this works as you hope +1.


investigating go release issues

We need to move the server side languages above all others so that we know we can generate the implementation before npm artifacts are published.
Still perhaps looking for guidance on this one.  During an attempt to cross commit in a repo the correct go files are generated:
Target //:admin_grpc up-to-date:
  bazel-bin/admin_grpc/live/administration/v1alpha1/auth.pb.go
  bazel-bin/admin_grpc/live/administration/v1alpha1/githubintegration.pb.go

https://github.com/drud/ddev-apis/runs/2117040156?check_suite_focus=true#step:10:55
however the cross commit still cannot access them:
https://github.com/drud/ddev-apis/runs/2117040156?check_suite_focus=true#step:11:16
rsync: change_dir "/github/workspace/bazel-bin/admin_grpc/live/administration" failed: No such file or directory (2)

so the cross commit is correct to think the directory doesn't exist
"/github/workspace/bazel-bin/admin_grpc/live/administration" failed: No such file or directory

the ./bazel-bin is a symlink to ${HOME}/.cache/bazel/... and that directory is outside of what GitHub actions mount in the "Commit admin-api gen to ddev-apis-go". This is all github mounts
-v "/var/run/docker.sock":"/var/run/docker.sock"
-v "/home/runner/work/_temp/_github_home":"/github/home"
-v "/home/runner/work/_temp/_github_workflow":"/github/workflow"
-v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands"
-v "/home/runner/work/ddev-apis/ddev-apis":"/github/workspace" 5588e4:2c20efe839a146bb9267b4bb4d3a38b5

I think we can remove the indirection in "release-go" step or if github allows, we can bindmount entire ${HOME}/.cache/bazel to the steps so it's shared between them


new feature: Allow s3 service to configure assume role's tags

Feature Description
As requested by https://github.com/apache/iceberg-rust/issues/527, it's better for opendal to support setting assume role's tags.
Problem and Solution
reqsign doesn't support tags for assume-role now. We will need to add it in reqsign first.
Additional Context
No response
Are you willing to contribute to the development of this feature?

[ ] Yes, I am willing to contribute to the development of this feature.

Hey there I'm newer to the data space and am looking to help on a few apache projects. Could I pick up this issue if its not currently being worked on?

Hey there I'm newer to the data space and am looking to help on a few apache projects.

Welcome!

Could I pick up this issue if its not currently being worked on?

@rahull-p has completed most of the work in https://github.com/Xuanwo/reqsign/issues/467, and we can proceed once reqsign releases a new version.

Get sounds good @Xuanwo - please do let me know if there are any other issues that need to be worked on and I would be happy to take it on 👍


Is there a createSchemaIfNotExist()?

Is your feature request related to a problem? Please describe.
It looks like createSchema() will error out if the schema already exists. I have to wrap it in a try/catch block which is not ideal.
Describe the solution you'd like
createSchemaIfNotExist() or something like that.
Describe alternatives you've considered
try/catch block works, but not elegant.

Why do you need to call it like this? Maybe updateSchema would fit better? It will create the schema or update it when its already there. Or you could first drop it and then create it, if its for testing purposes.
I don't think we need such API (but feel free to convince me :])

It wasn’t clear to me that updateSchema() would actually create the schema. I will try that. I couldn’t find much documentation about the schema API...
On Mar 19, 2020, 11:19 PM -0700, Martin Adámek<EMAIL_ADDRESS>wrote:

Why do you need to call it like this? Maybe updateSchema would fit better? It will create the schema or update it when its already there. Or you could first drop it and then create it, if its for testing purposes.
I don't think we need such API (but feel free to convince me :])
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

SchemaGenerator has quite simple API, so you can check the implementation directly:
https://github.com/mikro-orm/mikro-orm/blob/master/lib/schema/SchemaGenerator.ts
It will synchronize the database with metadata, so if there is a table missing, it will create it (with the very same method as createSchema uses.

updateSchema() works. Thanks!
On Mar 19, 2020, 11:25 PM -0700, Martin Adámek<EMAIL_ADDRESS>wrote:

SchemaGenerator has quite simple API, so you can check the implementation directly:
https://github.com/mikro-orm/mikro-orm/blob/master/lib/schema/SchemaGenerator.ts
It will synchronize the database with metadata, so if there is a table missing, it will create it (with the very same method as createSchema uses.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

So, updateSchema() drops tables it doesn't know about...I am trying to use Mikro-ORM in a microservices setting where each service connects independently to a DB and manages its own tables. The second service that connects drops the tables of the first one :)
What options do I have?  Also, I am using PostgreSQL. I guess I could different schemas for each service, but I gotta figure out how to specify schema to the connection string. My last resort is to use separate databases altogether, which I hope I don't have to do...

Hmm I guess we could add a parameter to disable table dropping. I was planning to add a safe mode anyway (that would also disable column dropping).

I think the ORM should have control over its entities, so column dropping might be ok. It should not touch entities that are not known to it.

I think the ORM should have control over its entities, so column dropping might be ok. It should not touch entities that are not known to it.

Those are 2 things, I mentioned the safe mode because that is also something I want to have. If you use the schema generator directly (not via migrations) that it can be dangerous to execute it directly, as it might drop some columns instead of renaming them (although it should not). That is where the safe mode can be used, so you can be sure that no real damage can be done to your data.
So there will be definitely way to disable just dropping of db tables, but there will be also the aforementioned safe mode that will also disable column dropping.
But by default I will keep what it does right now. It is correct to remove unknown tables. If you delete an entity, it will become unknown table and it should be removed. This behaviour is same as in doctrine (which I took for an inspiration mostly). But the schema tool there also support working with multiple schemas I believe, which is what I would like to implement too going forward (although not planned for the nearest future).

So my current option is to use multiple databases, one for each service?

You could also maybe register all your entities in every service if its a mono repo? Not perfect, but as a workaround it could work.
Anyway, this is easy to implement, so it will come in few days.

Ok great! All my services are in different repos. I am not a fan of mono repos :)


[Script]: Amazon Product Scrapper

Aim
A script that will scrape the product data from Amazon India website
Details
The info we will get will be :

product link
product details
product image
customer reviews

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSoC'23 contributor
[X] I want to work on this issue

@Yashbhadiyadra @avinashkranjan Assign me this issue.

/assign


Try it without hshift

Not too sure what is going on here.

Not too sure what is going on here.

Doing a quick test of a Roborazzi change, the dev asked me to try something. I uploaded this using one of my scripts that automatically added you as a reviewer, sorry.


Help: Pseudo Device Address randomness generation

Some phones incorrectly rotate their BLe MAC address every few seconds. This causes device discovery routines to reconsider a device even though it may have only just been identified recently. The Pseudo Device Address is a method around this. The mechanism used to generate this address needs to be reliable on a wide range of phones - even when idle for many hours - and prevent a passing attacker from predicting future addresses based on just the current observable address. There are many methods - we're looking for suggestions that work across Android devices going back, ideally, to Android 5.0.
Background: https://vmware.github.io/herald/bluetooth/hardware
Ideal timeline: PR ready for merge mid Jan 2021 (v1.3 release of Herald for Android).
If more time is required that isn't a huge issue - just let us know how far you are by sending a PR with a note that the content isn't ready for merge yet. That gives us some way to see progress.
Acceptance Criteria

Cannot predict the next Pseudo Device Address based on casual observation of a number of previous addresses (E.g. 4 - an hours worth), without knowing the seed value chosen
Must provide at least 6 bytes of randomness (same chance of a clash as a BLe MAC address)
Values chosen must have even distribution across the random values chosen (i.e. no 'hot spots' in random addresses chosen) so as to avoid clashes
Must not block the operation of Herald or Android OS whilst waiting for entropy to be generated. Minimum 12 hours without either degradation in, or loss of, continuity as per the Fair Efficacy Formula formal testing with 10 devices (The Herald project team can carry out this testing for you) (Continuity requires at least one RSSI reading from an advertisement every 30 seconds)
Android versions supported (and ideally tested): Back to Android 5.0. May accept a mix of approaches based on Android version detection in code.
Must be tested to work on a range of actual devices and not just theorised based on API documentation. Java and Android API documentation can not necessarily be trusted as device manufacturers are free to diverge from it in their implementations.

Implementation guidance

Implement in Java only
Provide tests for all functions
See herald.datatypes.RandomSource for existing ideas
Submitted as a PR to this project that can be merged
Be sure to add a 'Signed-off-by' line in all commits to your PR, and follow the CONTRIBUTING.md file

Cool prizes
We don't have much in the way of budget for prizes being an open source project. We will soon be getting a set of Herald laptop stickers so we'd be happy to send one of those on.
Naturally the usual GitHub contributions, Authors.md file mention, and bragging rights we be available, as will the knowledge that your contribution has helped many installations and projects worldwide.

A solution has been contributed by one of our own project developers now as part of #190.


Ownership

It's can automatically change voice ownership when the fast user left the VC the 2nd user get automatically add voice ownership

This is a great idea! I will add it in the next update.

I have pushed a new feature! Please give it a try. Thank you.


Filter IMDB and Actors/Directors

Hi. It appears that IMDB filtering for accepting only certain actors and directors is not working as described here: http://flexget.com/wiki/Plugins/imdb
I set up a task to download from an RSS feed any movie that has certain actors or directors (and meets certain quality requirements). The result is that ALL movies of the required quality are accepted by the IMDB filter and downloaded, regardless of whether the actors/directors have anything to do with the movies or not. I would have thought any unaccepted movies (those that don't match an actor or director) would be left undecided to potentially be picked up later in the IMDB filter by another clause (then rejected if they don't meet any clause by the end of the IMDB filter).
Am I misunderstanding the point of accept_actors and accept_directors? I have assumed these filters would accept a movie only if it has one of the acceptable actors or directors. Or put another way, would cause any movie to be undecided/rejected if it does not have one of the acceptable actors or directors.
There is some similar behaviour from the rottentomatoes plugin discussed here 2 years ago (not sure if it got fixed): http://flexget.com/ticket/2574
Similarly IMDB and RT here: https://github.com/Flexget/Flexget/pull/263
There is also some more discussion here: "When "accept_actors:" is set, only movies that match that condition by having the actor/s you list will be accepted - regardless of other conditions that have already been set." http://discuss.flexget.com/t/imdb-plugin-confusion/98/2
Otherwise, does anyone have a simple way to monitor an RSS and download only those movies with certain actors or directors?
This is my task code (I've cut it back to one actor and one director for brevity):
templates:
  qual_target:
    quality:
      1080p
      hdrip+
    content_size:
      min: 500
      max: 5000
      strict: no
    exists_movie:
      path: [location]
      allow_different_qualities: better
    disable: seen

  IMDB_actors:
    rss: [feed address]
    imdb:
      accept_actors:
        - nm0000242
      accept_directors:
         - nm0000233

tasks:
  Movies-Actors:
    template:
      - qual_target
      - IMDB_actors
    download: [location]

And here is some of my output log. 100 entries inputed from the RSS, 97 rejected based on quality and content size, then 3 left for the IMDB plugin, which returns the following:
Rejects for quality (others removed from copy/paste to keep size down):
2016-01-19 11:23 VERBOSE  task          Movies-Actors-TD REJECTED: `Seven Thieves 1960 RERiP 720p BluRay x264-GUACAMOLE` by quality plugin because 720p bluray h264 does not match quality requirement [<Requirements(1080p)>]

Rejects for content size:
2016-01-19 11:23 INFO     content_size  Movies-Actors-TD Entry `Yogi Bear 2010 1080p 3D BluRay AVC DTS-HD MA 5 1-FGT` too big, rejecting
2016-01-19 11:23 VERBOSE  task          Movies-Actors-TD REJECTED: `Yogi Bear 2010 1080p 3D BluRay AVC DTS-HD MA 5 1-FGT` by content_size plugin because maximum size 5000 MB, got 36864 MB

These make it to IMDB filter:
2016-01-19 11:23 VERBOSE  imdb_lookup   Movies-Actors-TD Searching from imdb `The Persuaders 1971 S01E08 MULTi 1080p BluRay x264-AiRTV`
2016-01-19 11:23 WARNING  imdb_lookup   Movies-Actors-TD IMDB lookup failed for The Persuaders 1971 S01E08 MULTi 1080p BluRay x264-AiRTV
2016-01-19 11:23 INFO     imdb          Movies-Actors-TD Skipping The Persuaders 1971 S01E08 MULTi 1080p BluRay x264-AiRTV because of an error: Title `The Persuaders 1971 S01E08 MULTi 1080p BluRay x264-AiRTV` lookup failed
2016-01-19 11:23 VERBOSE  imdb_lookup   Movies-Actors-TD Searching from imdb `The Persuaders 1971 S01E02 MULTi 1080p BluRay x264-AiRTV`
2016-01-19 11:23 WARNING  imdb_lookup   Movies-Actors-TD IMDB lookup failed for The Persuaders 1971 S01E02 MULTi 1080p BluRay x264-AiRTV
2016-01-19 11:23 INFO     imdb          Movies-Actors-TD Skipping The Persuaders 1971 S01E02 MULTi 1080p BluRay x264-AiRTV because of an error: Title `The Persuaders 1971 S01E02 MULTi 1080p BluRay x264-AiRTV` lookup failed
2016-01-19 11:23 VERBOSE  imdb_lookup   Movies-Actors-TD Searching from imdb `Glass no Hana to Kowasu Sekai 2016 1080p WEBRip x264-ANiHLS`
2016-01-19 11:23 VERBOSE  imdb_lookup   Movies-Actors-TD Found http://www.imdb.com/title/tt5330596/?ref_=fn_ft_tt_1
2016-01-19 11:23 VERBOSE  imdb_lookup   Movies-Actors-TD Parsing imdb for `Glass no Hana to Kowasu Sekai 2016 1080p WEBRip x264-ANiHLS`
2016-01-19 11:24 VERBOSE  task          Movies-Actors-TD ACCEPTED: `Glass no Hana to Kowasu Sekai 2016 1080p WEBRip x264-ANiHLS` by imdb plugin
2016-01-19 11:24 VERBOSE  exists_movie  Movies-Actors-TD Scanning path /Volumes/Media Raid/Movies ...
2016-01-19 11:24 INFO     seenmovies    Movies-Actors-TD Rejecting The Persuaders 1971 S01E08 MULTi 1080p BluRay x264-AiRTV because of missing movie (imdb, tmdb or trakt) id
2016-01-19 11:24 VERBOSE  task          Movies-Actors-TD REJECTED: `The Persuaders 1971 S01E08 MULTi 1080p BluRay x264-AiRTV` by seen_movies plugin because missing movie (imdb, tmdb or trakt) id, strict
2016-01-19 11:24 INFO     seenmovies    Movies-Actors-TD Rejecting The Persuaders 1971 S01E02 MULTi 1080p BluRay x264-AiRTV because of missing movie (imdb, tmdb or trakt) id
2016-01-19 11:24 VERBOSE  task          Movies-Actors-TD REJECTED: `The Persuaders 1971 S01E02 MULTi 1080p BluRay x264-AiRTV` by seen_movies plugin because missing movie (imdb, tmdb or trakt) id, strict
2016-01-19 11:24 INFO     download      Movies-Actors-TD Downloading: Glass no Hana to Kowasu Sekai 2016 1080p WEBRip x264-ANiHLS
2016-01-19 11:24 VERBOSE  details       Movies-Actors-TD Summary - Accepted: 1 (Rejected: 99 Undecided: 0 Failed: 0)

We had several IMDB error due to layout change. Upgrade to latest please and try again.

Reopen if relevant.


When making MetadataService reference, inject the ConsumerModel.

What is the purpose of the change
Fix https://github.com/apache/dubbo/issues/9662
Brief changelog
Verifying this change

Checklist

[x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
[ ] Add some description to dubbo-website project if you are requesting to add a feature.
[ ] GitHub Actions works fine on your own branch.
[ ] If this contribution is large, please follow the Software Donation Guide.

Codecov Report

Merging #9873 (7638be7) into 3.0 (feb1792) will decrease coverage by 0.31%.
The diff coverage is 96.66%.

@@             Coverage Diff              @@
##                3.0    #9873      +/-   ##
============================================
- Coverage     65.78%   65.47%   -0.32%
  Complexity      319      319
============================================
  Files          1212     1213       +1
  Lines         52819    52932     +113
  Branches       8008     8012       +4
============================================
- Hits          34747    34656      -91
- Misses        14283    14467     +184
- Partials       3789     3809      +20

Impacted Files
Coverage Δ

...apache/dubbo/common/constants/CommonConstants.java
100.00% <ø> (ø)

.../dubbo/registry/client/metadata/MetadataUtils.java
72.07% <96.66%> (+7.78%)
:arrow_up:

...dubbo/remoting/zookeeper/ZookeeperTransporter.java
55.55% <0.00%> (-33.34%)
:arrow_down:

...org/apache/dubbo/rpc/filter/TokenHeaderFilter.java
0.00% <0.00%> (-27.28%)
:arrow_down:

...ng/zookeeper/curator5/Curator5ZookeeperClient.java
43.47% <0.00%> (-25.13%)
:arrow_down:

.../remoting/api/SingleProtocolConnectionManager.java
61.53% <0.00%> (-23.08%)
:arrow_down:

.../apache/dubbo/rpc/filter/ProfilerServerFilter.java
62.85% <0.00%> (-20.00%)
:arrow_down:

...dubbo/common/status/support/LoadStatusChecker.java
46.15% <0.00%> (-15.39%)
:arrow_down:

...he/dubbo/rpc/protocol/tri/stream/ClientStream.java
33.33% <0.00%> (-13.73%)
:arrow_down:

.../dubbo/rpc/protocol/tri/command/QueuedCommand.java
78.57% <0.00%> (-13.10%)
:arrow_down:

... and 75 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update feb1792...7638be7. Read the comment docs.


Ignore env Files

Why
We'd like to ensure that sensitive information is stored securely and not exposed.
This Commit
This commit adds .env files to the .gitignore.

Might be good to document the need for this in the readme now so folks know how to set it up

great point 👍

My understanding is that .gitignore will keep things from being tracked, but since these where previously being tracked wont we need to also explicitly untrack the files?
It also would be nice to include a .env.sample file which is in the git history.

I believe that this commit will have the effect of keeping the existing files (as changed in this PR) in the repo, but will ignore changes going forward. I'm not sure that there is a way to get around the need for a .env.gps with a gps tracing strategy in order for the e2e tests to pass. I'd like to store the populated .env files in a private repo on the org, and then per your recommendation add a step to dev_setup.sh to pull them down. Very open to alternative approaches if any come to mind for you 🤔

I believe that this commit will have the effect of keeping the existing files (as changed in this PR) in the repo, but will ignore changes going forward. I'm not sure that there is a way to get around the need for a .env.gps with a gps tracing strategy in order for the e2e tests to pass. I'd like to store a set of populated .env files in a private repo on the org, and then per your recommendation add a step to dev_setup.sh to pull them down. Very open to alternative approaches if any come to mind for you 🤔

If we need info from the env files for CI, we should be storing those as secrets in the github org. I dont see a reason to do the extra work of pulling down files.
I was mostly thinking that during dev setup we would create the .env files for the dev locally as a convince. They would still need to ask another developer for the secret keys and stuff if they want to deploy.


Update to python3

Modern macs don't install pytho2 with xcode or other tooling by default.
To allow the scripts to work with the system python.

Thanks


python310Packages.simplisafe-python: 2023.10.0 -> 2023.12.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.simplisafe-python is: Python library the SimpliSafe API
meta.homepage for python310Packages.simplisafe-python is: https://simplisafe-python.readthedocs.io/
meta.changelog for python310Packages.simplisafe-python is: https://github.com/bachya/simplisafe-python/releases/tag/2023.12.0
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2023.12.0 with grep in /nix/store/fxspbcjy2a02ljk7wc5khngb4fi6a8aa-python3.10-simplisafe-python-2023.12.0
found 2023.12.0 in filename of file in /nix/store/fxspbcjy2a02ljk7wc5khngb4fi6a8aa-python3.10-simplisafe-python-2023.12.0

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)

3 package rebuild(s)

First fifty rebuilds by attrpath
home-assistant-component-tests.simplisafe
python310Packages.simplisafe-python
python311Packages.simplisafe-python

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/fxspbcjy2a02ljk7wc5khngb4fi6a8aa-python3.10-simplisafe-python-2023.12.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.simplisafe-python https://github.com/r-ryantm/nixpkgs/archive/f743f1dba967c308b24ede2d0a93b3b37b038d2e.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/f743f1dba967c308b24ede2d0a93b3b37b038d2e#python310Packages.simplisafe-python

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/fxspbcjy2a02ljk7wc5khngb4fi6a8aa-python3.10-simplisafe-python-2023.12.0
ls -la /nix/store/fxspbcjy2a02ljk7wc5khngb4fi6a8aa-python3.10-simplisafe-python-2023.12.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

python310Packages.simplisafe-python
python311Packages.simplisafe-python

Maintainer pings
cc @fabaff for testing.

Result of nixpkgs-review pr 276046 run on x86_64-linux 1

4 packages built:

python310Packages.simplisafe-python
python310Packages.simplisafe-python.dist
python311Packages.simplisafe-python
python311Packages.simplisafe-python.dist


149

QUESTION 149
Hotspot Question
For each of the following statements, select Yes if the statement is true. Otherwise, select No.
NOTE: Each correct selection is worth one point.


[ALLUXIO-2259]remove alluxio.Constants.DEFAULT_HOST_RESOLUTION_TIMEOUT_MS from Constants.java

…tants.java

Can one of the admins verify this patch?

alluxio-bot, check this please' to re-run checks

alluxio-bot, check this please

ok to test

Jenkins, add to whitelist

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/11850/
Test FAILed.

Jenkins, test this please

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/11906/
Test PASSed.


canDeactivate and back navigation

I was able to implement canActivate and canDeactivate guard successfully.
canDeacivate works fine with normal navigation. However with back navigation (NavigationButton or RouterExtensions.back()), page will navigate back even if canDeactivate is resolving to false. And all navigation on the previous page  will stop working except navigation back will result on fatal error:
file:///app/tns_modules/rxjs/Subscriber.js:227:2
2: JS ERROR Error: Calling startGoBack while going back.

Currently, there is no way to prevent user-initiated back navigation - trying to apply guards in such scenario is not supported.


Upgrade tested Kotlin and AGP versions

Kotlin

from 2.0.20 to 2.0.21-RC
adding 2.1.0-Beta1

AGP

from 8.4.0 to 8.4.2
from 8.5.0 to 8.5.2
from 8.6.0-dev to 8.6.1
introducing 8.7.0 and 8.8.0-dev

Reviewing cheatsheet
Before merging the PR, comments starting with

❌ ❓must be fixed
🤔 💅 should be fixed
💭 may be fixed
🎉 celebrate happy things

@bot-gradle test AFT AST APT

I've triggered the following builds for you. Click here to see all build failures.

All Functional Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Smoke Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Performance Tests (Trigger)

@bot-gradle test AFT AST APT

I've triggered the following builds for you. Click here to see all build failures.

All Functional Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Smoke Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Performance Tests (Trigger)

@bot-gradle test AFT AST APT

I've triggered the following builds for you. Click here to see all build failures.

All Functional Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Smoke Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Performance Tests (Trigger)

@bot-gradle test AFT AST APT

I've triggered the following builds for you. Click here to see all build failures.

All Functional Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Smoke Tests for Pull Request Feedback (Trigger) (Pull Request Feedback)
All Performance Tests (Trigger)

@bot-gradle test APT

I've triggered the following builds for you. Click here to see all build failures.

All Performance Tests (Trigger)


[Bug]: Translucent Water Bucket

Minecraft Version
1.19
Forge Version
41.0.76+
Mod Version
1.19-<IP_ADDRESS>
Modpack or other Mod
No response
Describe the Issue
You can see through a water bucket generated by this library. The update (https://github.com/cech12/BucketLib/issues/18) after the breaking change of Forge 41.0.64 caused this issue. It should be fixed. :)
Interesting links:

https://github.com/MinecraftForge/MinecraftForge/commit/ce3d8b40cf37924caf1708cdde6842ae6fdcee31

{
  "parent": "forge:item/bucket",
  "fluid": "minecraft:water",
  "loader": "forge:fluid_container"
}

Try if Forge 41.0.95 (8854) could fix it.
Logs
No response
Do you use any performance-enhancing mods (e.g. OptiFine)?
No response

Opened Forge issue https://github.com/MinecraftForge/MinecraftForge/issues/8871

Updating to Forge 41.0.105 should fix the issue

Fixed and released in 1.19-<IP_ADDRESS>


remove 4.0 ceres-ebaf; fix ref name for hadley SST

Resolves #460 and part of #447
Note, CERES-EBAF TOA 4.0 for variables SWCF and LWCF are kept, because they were used as benchmarking data for E3SM v0 in Taylor Diagram

Hey @tomvothecoder I have tested running,  a visual check for code change should be sufficient. Thanks.


[Bug] The type definition of props is missing in the template.

volar version : 1.8.14
<script setup lang="ts">
const props = defineProps({
  msg: String
})
</script>

<template>
  {{ msg }}  <!-- msg is undefined -->
  {{ props.msg }}  <!-- this is ok -->
</template>

Could you please provide a minimal reproduction?

Sorry. I forgot to add more information.
I use vue 2.7.14 and setup script with js, but I set checkJs to true in jsconfig.json.
And I test setup script with ts, the type definitions are all right.

If I downgrade the version of volar to 1.8.13, everything will be normal.

<script setup>
const props = defineProps({
  msg: String
})
</script>

<template>
  {{ msg }}  <!-- msg is undefined -->
  {{ props.msg }}  <!-- this is ok -->
</template>

You mean this?

Yes! And I use vue2.


Continuous Benchmark

https://github.com/rhysd/github-action-benchmark

Added here https://herringtondarkholme.github.io/vue-compiler/dev/bench/


How could I include the directory of another library

OS : ubuntu20.04
php7.4.3, using this fork--https://github.com/scorninpc/PHP-CPP
I would like to include the rapidjson and compile an extension by the php-cpp, but it always fail after I add the path into the makefile.
Example:
INCLUDES = -I/home/cv_projects/3rdLibs/rapidjson/include

COMPILER_FLAGS		=	-Wall -c -O2 -std=c++11 -fpic -o $(INCLUDES)

After I add the $(INCLUDES), everything cannot compile, even the simplest main.cpp don't work, if I remove $(INCLUDES), I can compile.
Tried with these solutions too
INCLUDES = -I/home/cv_projects/3rdLibs/rapidjson/include

CFLAGS += $(INCLUDES)
CXXFLAGS += $(INCLUDES)

But this time it complain cannot find the include directory. How could I include the directory of another library properly?Thanks

Solved