NVP vProxy: Il mount del restore della VM SQL ha esito negativo "HTTP 409 (Conflict)"
Summary: La soluzione NetWorker VMware Protection (NVP) è configurata per eseguire il backup di macchine virtuali (VM) Microsoft SQL utilizzando MSVMAPPAGENT. Durante un'operazione di restore, l'operazione di mount SQL ha esito negativo con HTTP 409 (conflitto) ...
Symptoms
Il restore della VM SQL viene eseguito da Data Protection Restore Client (DPRC).
Il processo di mount ha esito negativo, segnalando HTTP 409 (conflitto):
Il flr-server.log del server NetWorker riporta lo stesso errore HTTP:
Linx: /nsr/authc/logs/flr-server.log
Windows (impostazione predefinita): C:\Program Files\EMC NetWorker\nsr\authc-server\tomcat\logs\flr-server.log
YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] INFO c.e.n.c.v.i.VProxyRestClient.getVProxyUrl 104 - Call vProxy: POST https://NETWORKER-SERVER-ADDRESS:9090/api/v1/FlrBrowseSessions YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] INFO c.e.n.c.v.i.VProxyRestClient.createVProxyHttpRequest 126 - Using already cached NW routable IP: NETWORKER-SERVER-ADDRESS/NETWORKER-SERVER-IP YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] INFO c.e.n.c.v.i.VProxyRestClient._vProxyPOST 265 - Payload = {"Config":{"AcceptedLanguage":"en","acceptedLanguage":"en","SessionId":null,"LogTag":"FLR_Browse_FLR-SESSION-ID","IdleTimeout":0,"LogLevel":"DEBUG","FlrMountSessionId":"FLR-SESSION-ID","CacheRetentionSeconds":60,"CurrentWorkingDirectory":"","BrowseDestination":false,"ParentPath":null,"ApplicationData":null,"AppName":null,"Vcenter":null,"VmGuestLogin":null}} YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] INFO c.e.n.c.v.i.VProxyRestClient._vProxyPOST 270 - Requesting vProxyPOST for https://NETWORKER-SERVER-ADDRESS:9090/api/v1/FlrBrowseSessions, FlrBrowseSessions... YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] INFO c.e.n.c.v.i.VProxyRestClient._vProxyPOST 272 - Got vProxyPOST response. YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] INFO c.e.n.c.v.i.VProxyRestClient.checkResponse 390 - Response Status Code = 409 YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] INFO c.e.n.c.v.i.VProxyRestClient.checkResponse 391 - Response Reason Phrase = Conflict YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] ERROR c.e.n.c.v.i.VProxyRestClient.checkResponse 396 - Could not connect to vproxy. Http Response status code: 409 Conflict YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] ERROR c.e.n.c.v.i.VProxyMount.postBrowseSession 378 - Error browsing com.emc.nw.common.exception.BrowseException: Could not connect to vproxy. Http Response status code: 409 Conflict at com.emc.nw.common.vproxyapi.impl.VProxyRestClient.checkResponse(VProxyRestClient.java:399) at com.emc.nw.common.vproxyapi.impl.VProxyRestClient._vProxyPOST(VProxyRestClient.java:275) at com.emc.nw.common.vproxyapi.impl.VProxyRestClient.vProxyPOST(VProxyRestClient.java:238) at com.emc.nw.common.vproxyapi.impl.VProxyMount.postBrowseSession(VProxyMount.java:363) at com.emc.flr.services.impl.FsObjectServiceImpl.createVProxyBrowse(FsObjectServiceImpl.java:808) at com.emc.flr.services.impl.FsObjectServiceImpl.mountBackupOnTarget(FsObjectServiceImpl.java:1068) at com.emc.flr.services.impl.FsObjectServiceImpl.getFSObjects(FsObjectServiceImpl.java:135) at com.emc.flr.rest.FsObjectsRest.getFSObjects(FsObjectsRest.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:129) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at com.emc.flr.filters.AuthenticationFilter.doFilter(AuthenticationFilter.java:86) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:596) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:750) YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] ERROR c.e.f.s.i.FsObjectServiceImpl.createVProxyBrowse 812 - Browse backup sessions were not created correctly - possibly a bad mount for sessionid: FLR-SESSION-ID YYYY-MM-DD HH:mm:SS [https-jsse-nio-9090-exec-5] ERROR c.e.f.s.i.FsObjectServiceImpl.createVProxyBrowse 813 - mount session error message reads: Mount job failure message: Create vProxy browse requests failed.
Cause
Il DPRC non attende abbastanza a lungo per il completamento dell'operazione di mount. DPRC invia una chiamata API (Application Programming Interface) per chiudere la sessione di mount mentre vProxy sta ancora montando i dischi, causando un conflitto HTTP 409.
Questo problema è stato sollevato alla progettazione di NetWorker.
Resolution
È prevista una correzione del codice in NetWorker 19.13.0.1 (provvisorio 27 agosto 2025)
Additional Information
Questo problema è stato osservato in un'ambiente in cui una macchina virtuale SQL conteneva 10 dischi (VMDK) e molti database. Tutte le operazioni di mount MSVMAPPAGENT hanno avuto esito negativo con questo sintomo, in cui altri SQL Server più piccoli sono stati montati senza problemi.