close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Last modified 14 years ago

#1207 assigned defect

TolPackage: Update mechanisms sometimes hang TolBase

Reported by: Pedro Gea Owned by: Jorge
Priority: highest Milestone: Mantainance
Component: Kernel Version: head
Severity: blocker Keywords:
Cc:

Description

No estoy muy seguro de saber dar indicaciones para reproducirlo, pero en ocasiones al utilizar los mecanismos de actualización de TOL, TOLBase se queda colgado, necesitándose acudir al administrador de tareas para acabar con el proceso (pues aunque caiga la interfaz el proceso sigue).

Es difícil saber dónde se detiene el proceso porque las trazas además de muchas, son poco claras.

Si intento #Require BysMcmc en el eval con la carpeta .../tol/TolPackage/1.1/Client vacía, el proceso se cuelga después de algunas trazas.

Si examino dicha carpeta se han descargado o creado lo siguiente:

  • BysMcmc.4.4 (carpeta)
  • TolIpopt.2.1 (carpeta)
  • VersSyncInfo.oza

No está aún IpoptCore.3.9

Las trazas mostradas son:

[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=864833991" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.localbayes.es/BayesPrivateTolPackages/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions" ...
Incluyendo C:/Users/pgea/AppData/Roaming/tol/TolPackage/1.1/Client/VersSyncInfo.oza
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=465286727" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=551394680" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions&limit=1&package=BysMcmc" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=122752214" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions&limit=1&package=BysMcmc" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=download&format=base64&package=BysMcmc.4.4" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=512150801" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.localbayes.es/BayesPrivateTolPackages/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions" ...
Incluyendo C:/Users/pgea/AppData/Roaming/tol/TolPackage/1.1/Client/VersSyncInfo.oza
Incluyendo C:/Users/pgea/AppData/Roaming/tol/TolPackage/1.1/Client/VersSyncInfo.oza
Incluyendo C:/Users/pgea/AppData/Roaming/tol/TolPackage/1.1/Client/VersSyncInfo.oza
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=142520181" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=658184943" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions&limit=1&package=TolIpopt" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=800771840" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions&limit=1&package=TolIpopt" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=download&format=base64&package=TolIpopt.2.1" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=387292275" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions" ...
[GetUrlContents.tcl.uri]Downloading from "http://packages.localbayes.es/BayesPrivateTolPackages/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=versions" ...
Incluyendo C:/Users/pgea/AppData/Roaming/tol/TolPackage/1.1/Client/VersSyncInfo.oza
Incluyendo C:/Users/pgea/AppData/Roaming/tol/TolPackage/1.1/Client/VersSyncInfo.oza
Incluyendo C:/Users/pgea/AppData/Roaming/tol/TolPackage/1.1/Client/VersSyncInfo.oza
[GetUrlContents.tcl.uri]Downloading from "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&action=ping&key=300685205" ...

Quizá es porque el paquete IpoptCore es bastante pesado (~4MB), pero pasan minutos y la cosa no parece avanzar. Mientras que si cierro TolBase (con su kill correspondiente) y pruebo de nuevo a hacer el #Require y que se instale lo que queda solo tarda unos segundos.

El problema no sólo ocurre instalando paquetes (vía #Require) sino también al hacer llamadas del tipo: Real TolPackage::Client::RemoteUpdatePackSyncInfo(True) y relacionadas.

Se sugiere mejorar el sistema de trazas de modo que se sepa qué está ocurriendo y a qué se está esperando.

Change History (12)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Status: newaccepted

Yo no puedo reproducir ninguna de las cosas que dices.
Sólo cabe una explicación: que la conexión falle ocasionalmente por el motivo que sea:

  • la VPN se desconecta,
  • la conexión del cliente o del servidor falla
  • o tarda y da timeout, o
  • lo que es peor no lo da y se queda colgado
  • etc.

No tengo ni idea de esas cosas de conexiones, yo sólo sé que uso una cosa de TCL que me puso Jorge en la función GetUrlContents.tcl.uri que da la única traza que sale y que indica qué está intentando bajarse. Lo único que veo que podría ayudar sería sacar un OK o un FAIL tras los puntos suspensivos una vez acaba la descarga. Si no saca nada ya sabemos en dónde se ha quedado colgado.

comment:2 Changed 14 years ago by Pedro Gea

Es lo que dices, es algún tipo de fallo en la conexión con el mecanismo ése que se cuelga, pues he probado a hacer baterías del tipo:

Set For(1, 100, Real (Real i) {
  WriteLn(""<<i);
  Text GetUrlContents.tcl.uri(
    "http://packages.tol-project.org/OfficialTolArchiveNetwork/"
    "repository.php?tol_package_version=1.1&tol_version=v2.0.1%20b.4&"
    "action=ping&key=658184943"
  );
1});

y se acaba colgando en alguna iteración (cada vez en una distinta). Lo he probado varias veces y no he pasado del 59.

comment:3 Changed 14 years ago by Víctor de Buen Remiro

(In [3551]) Refs #1207

comment:4 Changed 14 years ago by Víctor de Buen Remiro

(In [3552]) Refs #1206
Refs #1207

comment:5 Changed 14 years ago by Víctor de Buen Remiro

Owner: changed from Víctor de Buen Remiro to Jorge
Status: acceptedassigned

Como te decía TolPackage no emite ninguna traza directamente: es GetUrlContents.tcl.uri quien lo hace porque es en la descarga donde ocurren los problemas. La información que da es totalmente pertinente pues dice exactamente qué se está descargando. Ahora además escribe OK o FAIL al finalizar según lo haya conseguido o no.

Si no aparece el OK ni el FAIL es que se ha colgado durante la descarga, que es algo que yo no sé cómo pero igual hay forma de recuperar el control desde TCL haciendo que lea del teclado de vez en cuando a ver si hay un ctrl-k. O igual se puede establecer un timeout que por defecto es demasiado largo o no lo hay.

Ya que estamos, ahora se puede habilitar el trazado de TolPackage::Client

  Real TolPackage::Client::trace_max_level := 1;

De momento sólo hay un nivel, o sea, o traza o no. Ya veremos si hay que complicarlo más.

Por mi parte no puedo hacer nada más, así que reasigno el ticket a Jorge a ver si ve alguna forma de abortar la conexión cuando tarda demasiado.

comment:6 Changed 14 years ago by Pedro Gea

El problema como dices es de esta función que se apoya en el paquete uri de Tcl.
Si no me equivoco el problema se resuelve haciendo uso de la opción timeout:

uri::geturl <url> -timeout <miliseconds>

Al utilizar la opción timeout se puede comprobar el status de la respuesta para comprobar si terminó correctamente o no. Por ejemplo:

package require uri
set content [uri::geturl {http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?action=packages&package=NoExiste.1} \
  -timeout 2000]
# -timeout 2000 => espera 2 segundos
set ${content}(status)
# status: timeout => no se completó
# status: ok => se completó

Se sugiere la creación de funciones derivadas de GetUrlContents en las que pueda pasarse como argumento el tiempo timeout y el número de intentos en caso de fracaso.

comment:7 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: assignedclosed

(In [3579]) Fixes #1207
Refs #927

comment:8 Changed 14 years ago by Pedro Gea

Resolution: fixed
Status: closedreopened

No está resuelto:

  • El mecanismo GetUrlContents.tcl.uri sigue colgándose, no sé porqué o en qué cirscunstancias, pero se han ignorado alegremente las sugerencias de controlar la llamada con la opción -timeout.
  • Se ha intentado poner por defecto usar el mecanismo "curl" a través de la configuración UrlDownloader, pero la configuración (como es normal por otro lado) no se actualiza sóla al descargar una nueva versión.
  • Si se cambia la configuración UrlDownloader a mano editando el archivo: ".tolConfig.v2.0.2.tol" se puede comprobar que este mecanismo "curl" falla:
    ERROR: [1] Las comillas que se abrieron en la línea 66 no se han cerrado.
    [Call stack]
      [5] Set StdLib::CurlApi::GetUrl (NameBlock args)
      [4] Text StdLib::GetUrlContents.tcl.curl (Text url_)
      [3] Text StdLib::GetUrlContents (Text url)
      [2] Set StdLib::TolPackage::Client::GetRepositoryInfo (Text url)
      [1] Real StdLib::TolPackage::Client::RemoteUpdatePackSyncInfo (Real showWarnings)
    ...
    

comment:9 Changed 14 years ago by Víctor de Buen Remiro

Status: reopenedassigned

Como son todas cosas de TCL lo que falta se lo paso a Jorge

comment:10 Changed 14 years ago by Víctor de Buen Remiro

(In [3621]) Refs #1207

comment:11 Changed 14 years ago by Jorge

Para reproducirlo,

Text TolConfigManager::Config::ExternalTools::UrlDownloader := "tcl:curl";
Real TolConfigManager::Save(?);

Real StdLib::TolPackage::Client::RemoteUpdatePackSyncInfo(True);

comment:12 Changed 14 years ago by Jorge

(In [3622]) refs #1207, bodyData puede contener expresiones TOL que sera evaluadas con Eval por eso hay que escapar las "

Note: See TracTickets for help on using tickets.