Durante lo sviluppo e test di un plugin per Spoon, che ricordo essere l’ambiente dedicato al disegno dei processi ETL di Kettle, potrebbe essere utile avviare delle sessioni di debug utili per l’individuazione di eventuali errori (bug) rilevati. In questo breve articolo vedremo come sia possibile per un plugin Kettle, avviare una sessione di debug dal nostro ambiente di sviluppo, che ipotizziamo, essere Eclipse.
1. Antonio
Musarra's
Blog
The
ideal
solution
for
a
problem
Blog:
http://musarra.wordpress.com
Mail:
antonio.musarra@gmail.com
Configure
Kettle
debug
session
Durante
lo
sviluppo
e
test
di
un
plugin
per
Spoon,
che
ricordo
essere
l’ambiente
dedicato
al
disegno
dei
processi
ETL
di
Kettle,
potrebbe
essere
utile
avviare
delle
sessioni
di
debug1
utili
per
l’individuazione
di
eventuali
errori
(bug)
rilevati.
In
questo
breve
articolo
vedremo
come
sia
possibile
per
un
plugin
Kettle,
avviare
una
sessione
di
debug
dal
nostro
ambiente
di
sviluppo,
che
ipotizziamo,
essere
Eclipse.
Il
plugin
oggetto
di
debug
che
prenderemo
come
esempio
è
quello
distribuito
da
Pentaho
stessa
che
prende
il
nome
di
DummyPlugin
3,
maggiori
dettagli
su
questo
plugin
sono
reperibili
all’indirizzo
http://wiki.pentaho.com/display/EAI/DummyPlugin+3+plugin+page.
Esistono
diversi
modi
per
avviare
Kettle
in
modalità
di
debug,
la
via
più
semplice
è
quella
di
modificare
le
opzioni
di
avvio
della
JVM
indicando
delle
impostazioni
tali
per
cui
il
debugger
di
Eclipse
ma
in
generale
qualunque
tipo
di
debugger
sarà
in
grado
di
connettersi
al
processo.
Le
nuove
opzioni
da
impostare
alla
JVM
sono:
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
Listato
1
Opzioni
di
avvio
della
JVM
Le
opzioni
indicate
nel
Listato
1
avvieranno
Kettle
in
modalità
di
debug
aprendo
una
connessione
TCP/IP
in
listen
sulla
porta
8000
su
tutte
le
interfacce
di
rete
della
propria
workstation.
Le
nuove
istruzioni
per
la
JVM
devono
essere
indicate
sui
seguenti
file
posizionati
sulla
root
d’installazione
di
Kettle:
• spoon.sh
per
gli
ambienti
Unix/Linux
• spoon.bat
per
gli
ambienti
Windows
• Info.plist
per
gli
ambienti
Mac
OS
X.
Questo
file
risiede
in
due
locazioni
diverse:
o Data
Integration
64-‐bit.app/Contents
o Data
Integration
32-‐bit.app/Contents
Nel
Listato
2
e
Listato
3
sono
evidenziate
le
modifiche
apportate
ai
file
spoon.sh
e
Info.plist,
in
modo
analogo
andrà
fatto
con
il
file
spoon.bat.
OPT="$OPT $PENTAHO_DI_JAVA_OPTIONS -Djava.library.path=$LIBPATH -DKETTLE_HOME=$KETTLE_HOME -
DKETTLE_REPOSITORY=$KETTLE_REPOSITORY -DKETTLE_USER=$KETTLE_USER -
DKETTLE_PASSWORD=$KETTLE_PASSWORD -DKETTLE_PLUGIN_PACKAGES=$KETTLE_PLUGIN_PACKAGES -
DKETTLE_LOG_SIZE_LIMIT=$KETTLE_LOG_SIZE_LIMIT -Xdebug -Xnoagent -Djava.compiler=NONE -
Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
Listato
2
Modifica
apportata
al
file
spoon.sh.
<key>VMOptions</key>
<string>-Xmx256m -Xms256m -XX:MaxPermSize=128m -Xdebug -Xnoagent -
Djava.compiler=NONE -
Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000</string>
Listato
3
Modifica
apportata
al
file
Info.plist.
1
Debugging
(o
semplicemente
debug)
è
un'attività
che
consiste
nell’individuazione
della
porzione
di
software
affetta
da
errore
(bug)
rilevati
nei
software
a
seguito
dell'utilizzo
del
programma
(vedi
http://it.wikipedia.org/wiki/Debugging).
30/03/11
1
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
2. Antonio
Musarra's
Blog
The
ideal
solution
for
a
problem
Blog:
http://musarra.wordpress.com
Mail:
antonio.musarra@gmail.com
tcp4 0 0 *.8000 *.* LISTEN
[0x0-0x72072].Data Integration 64-bit[1556]: Listening for transport dt_socket at address: 8000
Log
1
Output
del
comando
netstat
e
syslog
Al
Log
1
è
evidenziata
l’apertura
della
connessione
TCP/IP
dopo
l’avvio
di
Spoon.
Dopo
aver
configurato
l’ambiente
Kettle
in
modalità
di
debug,
non
resta
che
procedere
con
la
configurazione
del
debugger
di
Eclipse.
L’operazione
di
configurazione
è
molto
semplice,
basta
aprire
la
configurazione
del
debugger
dal
menu
Run-‐>Debug
Configurations
e
creare
una
nuova
configurazione
come
Remote
Java
Application,
così
come
indicato
in
Figura
1.
Figura
1
Configurazione
dei
debug
per
il
plugin
DummyPlugin3.
Una
volta
impostate
le
proprietà
di
connessione,
è
possibile
cliccare
sul
pulsante
debug
per
avviare
la
connessione
con
il
server
di
debug
Kettle
in
listen
sulla
porta
TCP/IP
8000.
A
questo
punto,
l’avvio
di
una
sessione
di
debug
diviene
veramente
semplice,
è
necessario
impostare
un
breakpoint,
per
esempio
sul
metodo
setValue()
della
classe
DummyPluginMeta
(vedi
Figura
2)
e
successivamente
provare
a
modificare
i
metadati
del
plugin
dal
designer
Spoon.
Alla
conferma
della
modifica
dei
metadati,
sarà
avviata
la
sessione
di
debug
dentro
Eclipse.
Le
illustrazioni
a
seguire
mostrano
una
sintesi
degli
step
che
consentono
l’avvio
della
sessione
di
debug.
Consiglio
la
lettura
dell’articolo
Developing
a
custom
Kettle
Plugin:
Looking
up
values
in
Voldemort
e
del
blog
dello
stesso
autore
Slawomir
Chodnicki.
30/03/11
2
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
3. Antonio
Musarra's
Blog
The
ideal
solution
for
a
problem
Blog:
http://musarra.wordpress.com
Mail:
antonio.musarra@gmail.com
Figura
2
Debug
breakpoint
sul
metodo
setValue()
della
classe
DummyPluginMeta.
Figura
3
Trasformazione
che
include
il
plugin
DummyPlugin.
Figura
4
Modifica
dei
metadati
del
plugin
DummyPlugin.
Figura
5
Cambio
prospettiva
di
Eclipse.
30/03/11
3
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
4. Antonio
Musarra's
Blog
The
ideal
solution
for
a
problem
Blog:
http://musarra.wordpress.com
Mail:
antonio.musarra@gmail.com
Figura
6
Prospettiva
di
Debug
di
Eclipse
durante
la
sessione
di
debug.
30/03/11
4
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike