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
Status: | new → accepted |
---|
comment:2 Changed 14 years ago by
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:5 Changed 14 years ago by
Owner: | changed from Víctor de Buen Remiro to Jorge |
---|---|
Status: | accepted → assigned |
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
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
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:8 Changed 14 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
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
Status: | reopened → assigned |
---|
Como son todas cosas de TCL lo que falta se lo paso a Jorge
comment:11 Changed 14 years ago by
Para reproducirlo,
Text TolConfigManager::Config::ExternalTools::UrlDownloader := "tcl:curl"; Real TolConfigManager::Save(?); Real StdLib::TolPackage::Client::RemoteUpdatePackSyncInfo(True);
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:
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.