vServer se detiene


([N1] aztecmexico) #1

Buen día,

Les comento esto como experiencia para que en un futuro no les pase, y si les llega a pasar pues sepan qué hacer.

Resulta que (no se si sea buena o mala practica) en ocasiones despues de hacer algunas pruebas, detengo el vServer de mi equipo de desarrollo, borro algunas tablas, y reinicio el vServer, las tablas borradas se vuelven a crear vacias y todos contentos.

Bueno, pues hoy tuve un “pequeño” incidente, detuve el vServer, seleccioné las tablas a borrar, presioné la tecla suprimir y me cambie de ventana a hacer otras cosas.
Pasados unos momentos reinicie el servicio de mi vServer, arrancó normal, entré con el vDevelop, hice algunos cambios, ejecuté el vClient, revisé la información, todo bien.

Al estar navegando de nuevo entre ventanas del SO me doy cuenta que está activa la ventana de confirmación de eliminación de archivos que envia el sistema operativo al intentar enviar a la papelera de reciclaje, no recuerdo si le di SI o CANCELAR, en fín, total que la cerré, y el vclient seguía trabajando normal.

En un momento determinado intento grabar cambios en el vDevelop, me marca error de conexion con servidor, reviso los servicios y está detenido el VATP. Lo reinicio y se detiene de inmediato, y así un buen rato, no podía arrancarlo, y ni idea de por donde iban los tiros ya que sin vServer en operación pues ni como rastrear.

Por ahí de un buen rato y susto, Dios se apiadó de mí y me envío un poquitín de lucidez, la suficiente como para recordar el “incidente” del borrado previo de archivos, vuelvo al directorio, vuelvo a borrar los mismos archivos, ahora si me espero a la confirmación de windows, reinicio el vServer y ahora sí todo como debería ser, ya sin problemas, ni sustos, ni nada por el estilo.

La cuestión es que creo que de alguna manera los archivos quedaron bloqueados por el sistema operativo y por eso ni el mismisimo vServer podia entrar a ellos y eso ocasionara que rompiera el servicio.

De aquí me surge una duda, y que conste que pregunto porque no lo he investigado, ¿Para los casos de semejantes burradas, existe algún log del vServer, que grabe este tipo de incidentes y de pistas de porqué no puede arrancar?.

Saludos.

Martin Ibarra.


([N4] innovadb) #2

jajaja que suerte tuviste con tu momento de lucidez.

No existe el log que pides, pero hay una forma de saber si la culpa es de las tablas. Lo mismo pasa si eliminas tablas con el vserver arrancado.

Ordena tu listado de archivos (dat, idx, etc…) por tamaño, y los que tengan tamaño CERO, son los culpables.

Si eliminas una tabla con el vserver arrancado, el sistema lo va a generar de nuevo al reiniciar, pero será de tamaño cero y estará bloqueado, así que paras el vserver, eliminas y arrancas de nuevo, y ya vuelve a funcionar.

Supongo que en tu caso fue algo similar.

Un saludo


([N3] pacosatu) #3

Hola Martín.

Esto te pasa por tocar donde no debes.

Yo creía qua parando una Instancia de Datos se podían borrar tablas y al reiniciar de nuevo se creaban vacías. También podríamos parar una Instancia para, por ejemplo, sustituir un maestro con los Códigos Postales.

Entonces ¿para qué deminios sirve parar una Instancia de Datos sino es para hacer mantenimeinto de las tablas?
¿Hay que parar siempre el servidor con lo que ello implica en Producción?
¿Sólo se pueden actualizar tablas de maestros por código?
¿Por qué me permite el vAdmin borrar tablas de la Instancia si realmente no las borra y lo más sorprendente, ¡¡ silencio administrativo !! ?

Una sorpresa desagradable con el vServer.
Y gracias innovadb por la aclaración.

Saludos
Paco Satué


([N4] innovadb) #4

De nada Paco

Solo una aclaración. No se si parando una instancia pasa lo mismo por que nunca usamos esa opción.

Un saludo


([N1] percyleoncio) #5

Gracias por el concejo también hago lo mismo para eliminar datos cuando hago las pruebas, a menudo me sucede en local que estando arrancados el vClient y/o vDevelop e inverno mi máquina cuando vuelvo a encederlo en otro momento me sale el mensaje que no tiene conección con el vServer teniendo que cerrar y si tenía modificaciones pendientes de grabar pues lo pierdo teniendo que aplicar “deshacer desprotección del proyecto” para poder continuar.


([N4] innovadb) #6

En ese caso creo que puedes seguir trabajando y guardar tus cambios si vuelves a conectar vDevelop con vServer sin cerrarlo.

Un saludo


([N3] pacosatu) #7

Hola innovadb, Martin.

La documentación de Velneo es tan mala que nunca la miro, pero esta vez le he dado una oportunidad y en el manual de vAdmin pone:

Si detenemos una instancia de datos, los fichero de datos, índices, etc. de la instancia detenida serán desbloqueados por Velneo vServer V7, por lo que esta sería la opción idónea a utilizar en el caso de que queramos sobreescribir ficheros de datos o índices de la misma.

Pues os juro por Arturo que yo he detenido una Instancia de Datos e intentado borrar alguna tabla desde el vAdmin (opción Disco) y no es posible.

Como soy un programador crédulo he pensado que borrando las tablas desde el explorador de Windows la cosa funcionaría. !!! PUES NI SE OS OCURRA HACERLO ¡¡¡ o entraréis en la pesadilla de Martín y felizmente aclarada por innovadb.

Así que conclusión, o arreglan la chapuza inservible de Parar una Instancia (el lunes a Soporte) o no hay más remedio que parar el Servicio VATP para hacer mantenimiento de tablas, algo implanteable en producción.

Saludos
Paco Satué


([N4] innovadb) #8

jajaja había oído jurar por snoopy, mafalda y unos cuantos más, pero nunca por Arturo.

Gracias Paco por hacer las pruebas y comentar el resultado.

Un saludo


([N1] aztecmexico) #9

Hola a todos,

percyleoncio, como te indica innovadb, si estas trabajando en el vDevelop y por cualquier razón pierdes la conexión al servidor, no lo cierres pues entonces si perderas los cambios o avances de tus proyectos, simplemente vuelve a conectarte al vServer y ya puedes grabar tus cambios, yo constantemente hago eso, toda vez que en pruebas si tengo que reiniciar el vServer de mi equipo local.

Y coincido con Paco, habrá que arreglar a la de yá de ser posible este fallo de que no sirve de nada detener una instancia de datos, toda vez que en producción e independientemente del modelo o arquitectura que hayamos decidido utilizar para nuestras aplicaciones y de nuestros clientes, resulta impensable estár deteniendo el servidor para hacer mantenimiento o sustitución de tablas.

Saludos a todos y pues la intención es que tengamos conocimientos de estos detalles de nuestra plataforma para que planifiquemos mejor.

Saludos

Martin Ibarra.


([N4] ns) #10

+1


([N3] pacosatu) #11

Hola.

Interesante el tema que se ha planteado con la parada de Instancias de Datos. Hoy lo he consultado a Soporte y aunque estoy a la espera de contestación he realizado algunas pruebas y he podido sacar algunas conclusiones prácticas:

  • Parece ser que el vServer mantiene un Registro de ficheros utilizados en las Instancias de datos.
  • Este registro es el que NO nos permite eliminar un fichero que le pertenezca.
  • Cuando paramos una Instancia el fichero se desbloquea, pero NO podemos eliminarlo porque sigue perteneciendo al Registro de ficheros de Instancias.
  • Hasta que no borramos todas las Instancias de Datos no desaparecen los ficheros de las tablas de ese Registro, y solo en ese caso es posible borrarlos desde la opción Disco.
  • Entonces he probado a sobreescribir los ficheros desde el sistema operativo y ¡HA FUNCIONADO!, es posible sobrescribir las tablas porque no están bloqueadas.

Una utilidad inmediata de esto es disponer siempre de una Instancia de Datos tipo PLANTILLA con las tablas vacías y/o rellenadas con datos maestros. Cuando en Producción necesitamos actualizar alguna tabla hacemos lo siguiente:

  • Paramos la Instancia de Datos en Producción. Tendremos que esperar a que todos los Usuarios se desconecten o les obligamos de alguna manera.
  • Paramos la Instancia de Datos Plantilla. Esta instancia puede estar en otro servidor, por ejemplo en nuestras oficinas.
  • Ya podemos sobrescribir los ficheros de tablas que queramos, respetando siempre las agrupaciones datos/índices. Por supuesto no podemos hacerlo de forma arbitraria o nos cargamos la Integridad Referencial de la Base de Datos.
  • Volvemos a poner en marcha la Instancia de Datos en Producción y lo ¡¡MÁS IMPORTANTE!!, lo primero antes de nada, Reconstrucción de Datos y de Índices mediante el vDataClient u otra utilidad.

Esto son pruebas que he realizado bajo mi propia responsabilidad y no están documentadas por Velneo. Así que antes de nada y como siempre haced copia de Seguridad.

Es urgente YA disponer de comandos en línea para administrar vServer sin necesidad del interface gráfico de vAdmin. Así podríamos crear rutinas de mantenimiento de Instancias de Datos de forma desasistida.

Saludos
Paco Satué