Institutionen för datavetenskap Umeå Universitet

Tips och Trix

På denna sida kommer vi att lista svaren på vanliga problem. Sidan kommer att uppdateras under kursens gång.

Installation- och konfigurations-problem

Jag får word too long när jag försöker sourca $GLOBUS_LOCATION/etc/globus-devel-env.csh
Detta beror på att en buffer i tcsh är för snålt tilltagen. Använd bash i stället för tcsh och sourca globus-devel-env.sh så funkar det bättre.

grid-proxy-init misslyckas: "Proxy verify failed: Unable to load CA certificates"
Felet kan bero på en namnkonflikt mellan din egen globus-installation och institutionens globus-installation. Din egen globus-installation innehåller nämligen också ett grid-proxy-init script som dock inte är konfigurerat med rätt uppsättning CA-certifikat. Beroende på hur du satt upp din PATH kan det vara grid-proxy-init från din egen installation som körs. Således gäller det att köra grid-proxy-init från institutionens installation vilket enklast görs genom att ange full sökväg: /pkg/gt4/4.0.1/bin/grid-proxy-init

Programmering

Min container får OutOfMemoryError!
Öka mängden minne i globus-containern genom att sätta följande flaggor innan ni startar containern:
export GLOBUS_OPTIONS="-Xms512m -Xmx1024m"

Mitt program tappar sina exekveringsrättigheter när jag överför det med GridFTP!
FTP-protokollet specifierar att filrättigheter ej bevaras vid överföring. Ett sätt att lösa detta är att skicka in ett Grid-jobb som kör chmod +x my_program innan man skickar in Grid-jobbet som kör my_program. Ett snabbare, men inte lika standardiserat sätt är använda sig av CHMOD kommandot som en del FTP-servrar (inklusive Globus GridFTP) stöder. Om man skickar kommandot "SITE CHMOD 755 /path/to/my_program" på kontrollkanalen (se klassen GridFTPControlChannel), chmoddas filen om.

Jag kan inte kompilera mitt testprogram för GRAM!
När kompilatorn klagar på cannot find symbol och inte hittar vissa klasser för GRAM beror det på att er classpath är felsatt. För att ordna detta, sourca in $GLOBUS_LOCATION/etc/globus-devel-env.{csh,sh}, där GLOBUS_LOCATION pekar på "stora" containern, /opt/globus/4.0.1 på svampbob-maskinerna respektive /pkg/gt4/4.0.1 i labsalarna.

Om ni senare vill använda en viss .jar-fil, exempelvis gram-utils.jar som en del i er service (som kör i er "lilla" container), kopiera denna .jar-fil till ./lib-katalogen under katalogen där koden till er service finns, så kommer build.xml att se till att den deployas i er container.

I vilken .jar-fil finns klassen XYZ?
Följande lilla skript kan användas för att söka igenom .jar-filerna efter en viss klass.

Hur konverterar jag en ResourceProperty till dess rätta typ?
Designidén är att en ResourceProperty skall kunna lagra vad som helst (vi kan definiera godtycklig typ som ResourceProperty i den wsdl-fil som beskriver vår service). Implementationsmässigt innebär detta att när getResourceProperty(...) anropas, serialiserar globus-containern ResourcePropertyn till en array av MessageElements som returneras till klienten i ett GetResourcePropertyResponse-objekt. För att omvandla dessa till den typ som vi har definierat (MyRPClass) kan följande kod användas på klient-sidan:

 
GetResourcePropertyResponse rpResponse = myService.getResourceProperty(MY_RP_QNAME);  
MessageElement elements[] = rpResponse.get_any(); 
Object properties[] = ObjectDeserializer.toObject(elements, MyRPClass.class);  
MyRPClass props[] = new MyRPClass[properties.length]; 
for(int i = 0; i < props.length; i++) { 
    props[i] = (MyRPClass) properties[i]; 
}


http://www.cs.umu.se/kurser/TDBD20/VT07/lab/faq.html
Ansvarig för sidan: Erik Elmroth, P-O Östberg, Johan Tordsson
Senast ändrad 2007-02-20