# Problems in v2.20.2 in my server when I run /openvidu-health-checker

**URL:** <https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676>\
**Category:** Issues with deployment\
**Tags:** v2\
**Created:** [December 22, 2021, 6:54pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676 "2021-12-22T18:54:18Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michel\_Rodriguez](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/michel_rodriguez/32/1806_2.png) [@Michel\_Rodriguez](https://openvidu.discourse.group/u/Michel_Rodriguez)\
**Post date:** [December 22, 2021, 6:54pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/1 "2021-12-22T18:54:18Z")

</div>

Hello  
When I run the sudo docker this command:

run --rm --shm-size 2g -e OV\_URL=XXXXXXX -e OV\_SECRET=XXXXXXXXXXXXXXXXX openvidu/openvidu-health-checker

That is the output:

# lth-checker Waiting xvfb… Running tests… Please wait… EEE

## ERROR: test\_chrome\_no\_relay ( **main**.InfraSmokeTests)

Traceback (most recent call last):  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 699, in urlopen  
httplib\_response = self.\_make\_request(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 382, in \_make\_request  
self.\_validate\_conn(conn)  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 1010, in _validate\_conn  
conn.connect()  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connection.py”, line 416, in connect  
self.sock = ssl\_wrap\_socket(  
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/ssl_.py", line 449, in ssl\_wrap\_socket  
ssl\_sock = _ssl\_wrap\_socket\_impl(  
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/ssl_.py", line 493, in \_ssl\_wrap\_socket\_impl  
return ssl\_context.wrap\_socket(sock, server\_hostname=server\_hostname)  
File “/usr/lib/python3.8/ssl.py”, line 500, in wrap\_socket  
return self.sslsocket\_class.\_create(  
File “/usr/lib/python3.8/ssl.py”, line 1040, in \_create  
self.do\_handshake()  
File “/usr/lib/python3.8/ssl.py”, line 1309, in do\_handshake  
self.\_sslobj.do\_handshake()  
ssl.SSLCertVerificationError: [SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “/usr/local/lib/python3.8/dist-packages/requests/adapters.py”, line 439, in send  
resp = conn.urlopen(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 755, in urlopen  
retries = retries.increment(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/util/retry.py”, line 574, in increment  
raise MaxRetryError(\_pool, url, error or ResponseError(cause))  
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=‘xxxxxx’, port=443): Max retries exceeded with url: /dashboard (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)’)))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “openvidu\_health\_check.py”, line 25, in setUp  
self.is\_openvidu\_ce = self.check\_is\_openvidu\_ce()  
File “openvidu\_health\_check.py”, line 141, in check\_is\_openvidu\_ce  
response = requests.get(self.openvidu\_url + “/dashboard”)  
File “/usr/local/lib/python3.8/dist-packages/requests/api.py”, line 75, in get  
return request(‘get’, url, params=params, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/api.py”, line 61, in request  
return session.request(method=method, url=url, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/sessions.py”, line 542, in request  
resp = self.send(prep, \*\*send\_kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/sessions.py”, line 655, in send  
r = adapter.send(request, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/adapters.py”, line 514, in send  
raise SSLError(e, request=request)  
requests.exceptions.SSLError: HTTPSConnectionPool(host=‘xxxxxx’, port=443): Max retries exceeded with url: /dashboard (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)’)))

## ====================================================================== ERROR: test\_firefox\_force\_relay ( **main**.InfraSmokeTests)

Traceback (most recent call last):  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 699, in urlopen  
httplib\_response = self.\_make\_request(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 382, in \_make\_request  
self.\_validate\_conn(conn)  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 1010, in _validate\_conn  
conn.connect()  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connection.py”, line 416, in connect  
self.sock = ssl\_wrap\_socket(  
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/ssl_.py", line 449, in ssl\_wrap\_socket  
ssl\_sock = _ssl\_wrap\_socket\_impl(  
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/ssl_.py", line 493, in \_ssl\_wrap\_socket\_impl  
return ssl\_context.wrap\_socket(sock, server\_hostname=server\_hostname)  
File “/usr/lib/python3.8/ssl.py”, line 500, in wrap\_socket  
return self.sslsocket\_class.\_create(  
File “/usr/lib/python3.8/ssl.py”, line 1040, in \_create  
self.do\_handshake()  
File “/usr/lib/python3.8/ssl.py”, line 1309, in do\_handshake  
self.\_sslobj.do\_handshake()  
ssl.SSLCertVerificationError: [SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “/usr/local/lib/python3.8/dist-packages/requests/adapters.py”, line 439, in send  
resp = conn.urlopen(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 755, in urlopen  
retries = retries.increment(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/util/retry.py”, line 574, in increment  
raise MaxRetryError(\_pool, url, error or ResponseError(cause))  
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=‘’, port=443): Max retries exceeded with url: /dashboard (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)’)))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “openvidu\_health\_check.py”, line 25, in setUp  
self.is\_openvidu\_ce = self.check\_is\_openvidu\_ce()  
File “openvidu\_health\_check.py”, line 141, in check\_is\_openvidu\_ce  
response = requests.get(self.openvidu\_url + “/dashboard”)  
File “/usr/local/lib/python3.8/dist-packages/requests/api.py”, line 75, in get  
return request(‘get’, url, params=params, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/api.py”, line 61, in request  
return session.request(method=method, url=url, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/sessions.py”, line 542, in request  
resp = self.send(prep, \*\*send\_kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/sessions.py”, line 655, in send  
r = adapter.send(request, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/adapters.py”, line 514, in send  
raise SSLError(e, request=request)  
requests.exceptions.SSLError: HTTPSConnectionPool(host=‘’, port=443): Max retries exceeded with url: /dashboard (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)’)))

## ====================================================================== ERROR: test\_firefox\_no\_relay ( **main**.InfraSmokeTests)

Traceback (most recent call last):  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 699, in urlopen  
httplib\_response = self.\_make\_request(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 382, in \_make\_request  
self.\_validate\_conn(conn)  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 1010, in _validate\_conn  
conn.connect()  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connection.py”, line 416, in connect  
self.sock = ssl\_wrap\_socket(  
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/ssl_.py", line 449, in ssl\_wrap\_socket  
ssl\_sock = _ssl\_wrap\_socket\_impl(  
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/ssl_.py", line 493, in \_ssl\_wrap\_socket\_impl  
return ssl\_context.wrap\_socket(sock, server\_hostname=server\_hostname)  
File “/usr/lib/python3.8/ssl.py”, line 500, in wrap\_socket  
return self.sslsocket\_class.\_create(  
File “/usr/lib/python3.8/ssl.py”, line 1040, in \_create  
self.do\_handshake()  
File “/usr/lib/python3.8/ssl.py”, line 1309, in do\_handshake  
self.\_sslobj.do\_handshake()  
ssl.SSLCertVerificationError: [SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “/usr/local/lib/python3.8/dist-packages/requests/adapters.py”, line 439, in send  
resp = conn.urlopen(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py”, line 755, in urlopen  
retries = retries.increment(  
File “/usr/local/lib/python3.8/dist-packages/urllib3/util/retry.py”, line 574, in increment  
raise MaxRetryError(\_pool, url, error or ResponseError(cause))  
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=‘’, port=443): Max retries exceeded with url: /dashboard (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)’)))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “openvidu\_health\_check.py”, line 25, in setUp  
self.is\_openvidu\_ce = self.check\_is\_openvidu\_ce()  
File “openvidu\_health\_check.py”, line 141, in check\_is\_openvidu\_ce  
response = requests.get(self.openvidu\_url + “/dashboard”)  
File “/usr/local/lib/python3.8/dist-packages/requests/api.py”, line 75, in get  
return request(‘get’, url, params=params, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/api.py”, line 61, in request  
return session.request(method=method, url=url, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/sessions.py”, line 542, in request  
resp = self.send(prep, \*\*send\_kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/sessions.py”, line 655, in send  
r = adapter.send(request, \*\*kwargs)  
File “/usr/local/lib/python3.8/dist-packages/requests/adapters.py”, line 514, in send  
raise SSLError(e, request=request)  
requests.exceptions.SSLError: HTTPSConnectionPool(host=‘’, port=443): Max retries exceeded with url: /dashboard (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1131)’)))

* * *

Ran 3 tests in 0.091s

FAILED (errors=3)  
Executing test… Please wait…  
Executing test… Please wait…  
Executing test… Please wait…

Please can you help me to know the cause of this error?

thx

---

<div class="post-metadata">

**Author:** ![pabloFuente](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/pablofuente/32/2536_2.png) [@pabloFuente](https://openvidu.discourse.group/u/pabloFuente)\
**Post date:** [December 23, 2021, 9:51am UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/2 "2021-12-23T09:51:50Z")

</div>

I am seeing lots of SSLCertVerificationErrors. Make sure your endpoint has a valid domain and SSL certificate.

---

<div class="post-metadata">

**Author:** ![cruizba](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/cruizba/32/18_2.png) [@cruizba](https://openvidu.discourse.group/u/cruizba)\
**Post date:** [December 23, 2021, 2:47pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/3 "2021-12-23T14:47:09Z")

</div>

Aah, yes, the healthchecker does not allow selfsigned certificates. I think I will add it. You need to use a valid certificate.

---

<div class="post-metadata">

**Author:** ![Michel\_Rodriguez](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/michel_rodriguez/32/1806_2.png) [@Michel\_Rodriguez](https://openvidu.discourse.group/u/Michel_Rodriguez)\
**Post date:** [December 23, 2021, 5:18pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/4 "2021-12-23T17:18:58Z")

</div>

Now I made changes and I am using the Let’s Encrypt certificate. After these changes it no longer showed the certificate errors when running the healthchecker, now it shows me this other error:

====== WebDriver manager ======  
Current google-chrome version is 95.0.4638  
Get LATEST chromedriver version for 95.0.4638 google-chrome  
There is no [linux64] chromedriver for browser in cache  
Trying to download new driver from [https://chromedriver.storage.googleapis.com/95.0.4638.69/chromedriver\_linux64.zip](https://chromedriver.storage.googleapis.com/95.0.4638.69/chromedriver_linux64.zip)  
Driver has been saved in cache [/root/.wdm/drivers/chromedriver/linux64/95.0.4638.69]  
.

====== WebDriver manager ======  
Current firefox version is 94.0  
Get LATEST geckodriver version for 94.0 firefox  
Getting latest mozilla release info for v0.30.0  
Trying to download new driver from [https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz](https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz)  
Driver has been saved in cache [/root/.wdm/drivers/geckodriver/linux64/v0.30.0]  
E

====== WebDriver manager ======  
Current firefox version is 94.0  
Get LATEST geckodriver version for 94.0 firefox  
Driver [/root/.wdm/drivers/geckodriver/linux64/v0.30.0/geckodriver] found in cache  
.Executing test… Please wait…

# ====================================================================== | | | Testing OpenVidu CE with chrome and force relay: False | |

Video detected.

Sucess with chrome and Force Turn: False

* * *

Executing test… Please wait…

# ====================================================================== | | | Testing OpenVidu CE with firefox and force relay: True | |

Running firefox with Turn: True  
Waiting for candidates to be checked…  
±----------±----------±---------±----------------±-----------------±-------------±---------±------------±----------------+  
| ICE State | Nominated | Selected | Local Candidate | Remote Candidate | Component ID | Priority | Bytes sent: | Bytes received: |  
±----------±----------±---------±----------------±-----------------±-------------±---------±------------±----------------+  
±----------±----------±---------±----------------±-----------------±-------------±---------±------------±----------------+  
Executing test… Please wait…

# ====================================================================== | | | Testing OpenVidu CE with firefox and force relay: False | |

Running firefox with Turn: False  
Video detected.

Waiting for candidates to be checked…  
±----------±----------±---------±-----------------------------------------±------------------------------±-------------±--------------------±------------±----------------+  
| ICE State | Nominated | Selected | Local Candidate | Remote Candidate | Component ID | Priority | Bytes sent: | Bytes received: |  
±----------±----------±---------±-----------------------------------------±------------------------------±-------------±--------------------±------------±----------------+  
| succeeded | true | true | 172.17.0.2:45151/udp(host) [non-proxied] | 172.31.18.202:56943/udp(host) | 1 | 8655919583267258000 | 883980 | 876061 |  
| succeeded | true | true | 172.17.0.2:45151/udp(host) [non-proxied] | 172.31.18.202:56943/udp(host) | 1 | 8655919583267258000 | 883980 | 876061 |  
| succeeded | true | true | 172.17.0.2:45151/udp(host) [non-proxied] | 172.31.18.202:56943/udp(host) | 1 | 8655919583267258000 | 883980 | 876061 |  
±----------±----------±---------±-----------------------------------------±------------------------------±-------------±--------------------±------------±----------------+  
Sucess with firefox and Force Turn: False

* * *

## ====================================================================== ERROR: test\_firefox\_force\_relay ( **main**.InfraSmokeTests)

Traceback (most recent call last):  
File “openvidu\_health\_check.py”, line 37, in test\_firefox\_force\_relay  
self.inspector\_check(browser=“firefox”, turn=True)  
File “openvidu\_health\_check.py”, line 96, in inspector\_check  
raise Exception(‘Error. No video detected’)  
Exception: Error. No video detected

* * *

Ran 3 tests in 62.503s

FAILED (errors=1)

Is the problem related to port problems?

I had an application that used openvidu-browser and API 2.16.0 and 2.16.0 on the server, after updating to version 2.20.0 on the server the application continues to work with version 2.16 and 2.17 of openvidu-browser, but with version 2.20 of the js it doesn’t work for me. With js version 2.20 the editor works fine, but the subscriber cannot connect to the video, it keeps loading indefinitely, in the browser console it shows me the following warning:

OpenViduLogger.ts:255 StreamManager of Stream XXXXXXX (Subscriber) did not trigger “streamPlaying” event in 4000 ms

---

<div class="post-metadata">

**Author:** ![cruizba](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/cruizba/32/18_2.png) [@cruizba](https://openvidu.discourse.group/u/cruizba)\
**Post date:** [December 24, 2021, 12:34pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/5 "2021-12-24T12:34:13Z")

</div>

This openvidu health check should be executed outside the deployment. From what I can see in your logs you’re executing that in the same machine. But anyways I think this error is due to your Coturn not running correctly and not configured correctly in OpenVidu.

1. What ports do you have opened? Do you have port 3478 and 40000-65535 publicly accesible?
2. Can you show me the output of:

```auto
docker logs openvidu_openvidu-server_1 | grep 'COTURN IP'

```

1. Is the IP of the previous command your public IP?

---

<div class="post-metadata">

**Author:** ![cruizba](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/cruizba/32/18_2.png) [@cruizba](https://openvidu.discourse.group/u/cruizba)\
**Post date:** [December 24, 2021, 12:59pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/7 "2021-12-24T12:59:07Z")

</div>

**Context** : I think the Public IP is not being discovered correctly, and a wrong Public IP is reaching the browser.

Do you have external DNS requests enabled? What this command output to you?:

```auto
dig @ns1.google.com o-o.myaddr.l.google.com TXT -4 +short | tr -d \"

```

If this command timeouts with an error, this would be the cause of your OpenVidu instance not autodiscovering its public IP.

In that case you can:

- Enable outgoing requests through port 52 to external DNS services.  
… **or** …

- Add the public IP by hand:  
1 ) Replace `/opt/openvidu/docker-compose.yml` from this in the coturn section:

2 ) Add this environment variable in `/opt/openvidu/.env`

```auto
COTURN_IP=<YOUR_PUBLIC_IP>

```

---

<div class="post-metadata">

**Author:** ![Michel\_Rodriguez](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/michel_rodriguez/32/1806_2.png) [@Michel\_Rodriguez](https://openvidu.discourse.group/u/Michel_Rodriguez)\
**Post date:** [December 24, 2021, 4:00pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/8 "2021-12-24T16:00:13Z")

</div>

Hello thanks for your answers

When I run this command: docker logs openvidu\_openvidu-server\_1 | grep ‘COTURN IP’  
This returns the correct public IP of my server.  
When I run this other command: dig @ns1.google.com [o-o.myaddr.l.google.com](http://o-o.myaddr.l.google.com) TXT -4 +short | tr -d "  
This returns the correct public IP of my server too.

The problem is the following after updating the server to version 2.20, my application works fine using openvidu-browser 2.17, but when I change this js to version 2.20, the video editor works correctly, but the viewer never watches the video in the editor and in the viewer’s browser console it always shows these warnings:

OpenViduLogger.ts:255 StreamManager of Stream str\_CAM\_HmKi\_con\_Zqzezrjzp0 (Subscriber) did not trigger “streamPlaying” event in 4000 ms  
OpenViduLogger.warn @ OpenViduLogger.ts:255  
(anonymous) @ StreamManager.ts:582  
chatroom.php?db\_id=3980701:617 ExceptionEvent {hasBeenPrevented: false, cancelable: false, target: Session, type: ‘exception’, name: ‘NO\_STREAM\_PLAYING\_EVENT’, …}

The functionality of my site is as follows an editor that many viewers can connect to. Only one video is streamed per session. Viewers never play their own videos, they can only watch the publisher’s video.

Thanks and have a good Christmas.

---

<div class="post-metadata">

**Author:** ![cruizba](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/cruizba/32/18_2.png) [@cruizba](https://openvidu.discourse.group/u/cruizba)\
**Post date:** [December 26, 2021, 4:21pm UTC](https://openvidu.discourse.group/t/problems-in-v2-20-2-in-my-server-when-i-run-openvidu-health-checker/3676/9 "2021-12-26T16:21:16Z")

</div>

Hello @Michel_Rodriguez , have a good Christmas too 🙂

What I would recommend in such cases where you need to update from version to version is, instead of going from 2.17.0 to 2.20.0 directly, go first to version 2.18.0, then 2.19.0, and so on…  
In this way you can check in [release notes](https://docs.openvidu.io/en/stable/releases/) for each version what breaking changes could be between versions and do all necessary changes if you are affected by those breaking changes.

The other possiblity is to guess what is happening in your update from 2.17.0 to 2.20.0, but it will be harder:

1. To check if it is a deployment issue, you can test your app pointing to our demos deployment, which serves version 2.20.0 right now:

2. Are you using OpenVidu directly from the browsers? Or do you have a backend logic?  
If you are using a Backend, make sure that the client is updated also, or if you are using Rest API requests, check that there are no breaking changes affecting you. [Check release notes](https://docs.openvidu.io/en/stable/releases/)

3. Do you have warnings logs regarding `deprecated` calls in your OpenVidu server?
