{"id":678,"date":"2023-02-25T18:23:34","date_gmt":"2023-02-25T17:23:34","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=678"},"modified":"2023-02-25T18:24:01","modified_gmt":"2023-02-25T17:24:01","slug":"com-mongodb-mongotimeoutexception-timed-out-after-30000-ms","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2023\/02\/com-mongodb-mongotimeoutexception-timed-out-after-30000-ms\/","title":{"rendered":"com.mongodb.MongoTimeoutException: Timed out after 30000 ms"},"content":{"rendered":"\n<p>Nel progetto che sto seguendo adesso in ambito Azure Cloud con il team abbiamo adottatato come soluzione di persistenza Azure Cosmos DB for MongoDB. Per velocizzare gli sviluppi abbiamo integrato Spring, in particolare spring-boot-starter-data-mongodb, per poter utilizzare agevolmente i MongoRepositories e non doverci preoccupare degli strati pi\u00f9 bassi dell&#8217;applicativo. Tutto figo, scrittura che va senza problemi, fino a quando non decidiamo di fare anche operazioni di lettura e ci scontriamo con questa eccezione oscura:<\/p>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector { readPreference= ReadPreference {name=secondary, hedgeOptions=null}}. Client view of cluster state is {type=REPLICA_SET, servers=[{address=<strong><em>*, type=REPLICA_SET_PRIMARY, TagSet{[Tag{name='region', value='<\/em><\/strong>'}]}, roundTripTime=199.7 ms, state=CONNECTED}<\/code><\/p>\n\n\n\n<p>Tutto quello che si trova in rete non ci permette di risolvere perch\u00e8 non va, fino a quando non rivedo la configurazione adottata con Spring<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Override\nprotected void configureClientSettings(MongoClientSettings.Builder builder) {        \n    builder\n        .applyConnectionString(new ConnectionString(mongoUri))              \n        .readPreference(ReadPreference.secondary());\n}<\/pre>\n\n\n\n<p>E qui finalmente si svela l&#8217;arcano. Essendo un cosmosdb configurato per il dev per limitare i costi non abbiamo attivato la read replica, mentre da nella configurazione avevamo specificato di leggere il secondario che non era stato attivato. L&#8217;eccezione non proprio parlante non ci ha permesso di individuare subito, ma per risolvere agevolmente \u00e8 stato sufficiente cambiare la configurazione in questo modo<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Override\nprotected void configureClientSettings(MongoClientSettings.Builder builder) {        \n    builder\n        .applyConnectionString(new ConnectionString(mongoUri))              \n        .readPreference(ReadPreference.primary());\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Nel progetto che sto seguendo adesso in ambito Azure Cloud con il team abbiamo adottatato come soluzione di persistenza Azure Cosmos DB for MongoDB. Per velocizzare gli sviluppi abbiamo integrato Spring, in particolare spring-boot-starter-data-mongodb, per poter utilizzare agevolmente i MongoRepositories e non doverci preoccupare degli strati pi\u00f9 bassi dell&#8217;applicativo. Tutto figo, scrittura che va senza &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2023\/02\/com-mongodb-mongotimeoutexception-timed-out-after-30000-ms\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">com.mongodb.MongoTimeoutException: Timed out after 30000 ms<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/678"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=678"}],"version-history":[{"count":6,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/678\/revisions"}],"predecessor-version":[{"id":684,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/678\/revisions\/684"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=678"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}