NVP vProxy: El montaje de la restauración de la VM de SQL falla "HTTP 409 (conflicto)"
Summary: La solución NetWorker VMware Protection (NVP) está configurada para respaldar máquinas virtuales (VM) de Microsoft SQL mediante MSVMAPPAGENT. Durante una operación de restauración, la operación de montaje de SQL falla con HTTP 409 (conflicto) ...
Symptoms
La restauración de la VM de SQL se realiza desde Data Protection Restore Client (DPRC).
El proceso de montaje falla e informa HTTP 409 (conflicto):
El flr-server.log del servidor NetWorker Server informa el mismo error HTTP:
Linx: /nsr/authc/logs/flr-server.log
Windows (valor predeterminado): 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
DPRC no está esperando el tiempo suficiente para que se complete la operación de montaje. El DPRC envía una llamada a la interfaz de programación de aplicaciones (API) para cerrar la sesión de montaje mientras el vProxy aún está montando discos, lo que provoca un conflicto HTTP 409.
Este problema se planteó al equipo de ingeniería de NetWorker.
Resolution
Se espera una corrección de código en NetWorker 19.13.0.1 (tentativamente: 27 de agosto de 2025)
Additional Information
Este problema se observó en un entorno donde una VM de SQL contenía 10 discos (VMDK) y muchas bases de datos. Todas las operaciones de montaje de MSVMAPPAGENT fallaron con este síntoma, donde otros servidores SQL Server más pequeños se montaron sin problemas.