<< 29-August-2008 : hausbot on #mobicents at codehaus [download] [back] >>
 
 
time nick message

00:00

<alexandre>

bem. depois de aprofundada analise, a solucao passa por relan?ar a excepcao nas accoes de desinstalacao e loggar nas de instalacao

00:00

<alexandre>

por favor votem.

00:00

<alexandre>

:D

00:01

<martins>

isso significa o mesmo comportamento de antes na instalação e o novo na desinstalação, right?

00:01

<martins>

ta testado?

00:01

<alexandre>

sim

00:01

<alexandre>

nao

00:01

<alexandre>

respectivamente :)

00:02

<martins>

tem de ser aprovado pelo google talk bot, a presença e asterisk ra

00:02

<martins>

chegaste a perceber qual era o prob ontem?

00:03

<alexandre>

mais ou menos

00:03

<martins>

lançavas a timer task e o thread do deployer continuava logo ele quase q era certo q dava cabo do ucl antes de tu o guardares

00:03

<alexandre>

a thread do deployer nakela altura ja tinha sumido?

00:04

<martins>

ya pq ao lançares a timer task ele n para

00:04

<alexandre>

pois, exacto

00:04

<alexandre>

e ele fazia o unreg antes de ser guardado pelo outro

00:05

<alexandre>

por isso passaste a cena de guardar e esconder a ucl p onde esta agora. okieee

00:06

<martins>

s, antes de lançares a timertask

00:07

<alexandre>

lol.. pois, n eh bem antes... mas assim tem mais piada, eh mais arriscado lol

00:08

<alexandre>

timer.scheduleAtFixedRate(new UndeploymentTask(di), 0,

00:08

<alexandre>

getWaitTimeBetweenOperations());

00:08

<alexandre>

.// We get here when we have components depending on this...

00:08

<alexandre>

try {

00:08

<alexandre>

.// Let's store the 'old' UCL.

00:08

<alexandre>

dm.addReplacedUCL(du, di.ucl);

00:09

<martins>

ah pois, é pro caso do set do timer falhar

00:09

<martins>

se quiseres podes mudar pra antes, n va alguem por um wait time de 5ms

00:10

<alexandre>

lol... repara no "0" :D

00:10

<alexandre>

isso eh p qd eh p come?ar o timer ;) o wait time eh pras restantes iteracoes lol

00:10

<martins>

hmm, o 0 é pra tentar logo?

00:11

<alexandre>

y

00:11

<martins>

lol, nem vi isso

00:11

<martins>

muda a ordem disso entao

00:11

<martins>

n faz mal a inguem guardar o UCL

00:12

<alexandre>

pois, mesmo q seja deployed uma nova versao, eh sempre utilizada a versao dos jars nessa versao, certo?

00:13

<martins>

axo q n é bem, ele primeiro procura a classe no seu UCL, depois vai ao pai q é o repositorio partilhado

00:15

<alexandre>

exacto, mas procura sempre primeiro no seu... e ai usa sempre a versao mais recente

00:15

<martins>

nesse partilhado é sempre a mais recente, embora só passe pra mais recente quando ja n ha objectos com a anterior

00:16

<martins>

é uma confusao, no outro dia encontrei uma pagina a explicar isso no wiki da jboss

00:16

<martins>

se quiseres podes por cada componente deployed com UCL privado, q penso q será o q vamos ter de fazer no 2.x

00:16

<alexandre>

epa.. o Paulo Gonzo canta bem :P rtp2

00:17

<martins>

e carregar la as classes do slee e dependencias

00:19

<alexandre>

pois, eh melhor.. fica mais isolado

00:19

<alexandre>

porra pro deployer p?! :P

00:20

<alexandre>

ah macambuzio... fizeste aki alteracoes perigosas

00:20

<alexandre>

if(!waitingForUninstallDUs.contains( du ))

00:20

<alexandre>

{

00:20

<alexandre>

.// Add it to the waiting list.

00:20

<alexandre>

waitingForUninstallDUs.add( du );

00:20

<alexandre>

throw new DeploymentException("Unable to UNINSTALL " + du.getDeploymentInfoShortName() + " right now. Waiting for dependents to be removed.");

00:20

<alexandre>

}

00:21

<alexandre>

o if eh so p ele nao imprimir a mensagem a cada iteracao

00:21

<alexandre>

mas a excepcao tem de ser lancada senao eh considerado completo o undeployment, pela task

00:23

<martins>

:)

00:26

<alexandre>

agr estou a pensar

00:26

<alexandre>

pq eh q o deactivateService retorna logo e o activateRaEntity espera.... o outro tb podia esperar!

00:27

<martins>

n sei de q estas a falar

00:27

<alexandre>

exemplo do RA de asterisk

00:28

<martins>

tas a comparar um deactivate e um activate

00:28

<alexandre>

tens o activateentity e o bindlinkname... a invocacao do activateentity prende ate q haja resultados

00:28

<alexandre>

e so dp entao eh feito o bindlinkname

00:29

<alexandre>

pq eh q o deactivate do servi?o tb n prende.. :p

00:29

<martins>

pra n prenderes o thread do timer?

00:29

<martins>

n inventes, resolve so o prob q descobriste :p

00:29

<alexandre>

pra nao acontecer nada disto lol

00:29

<martins>

n tarda começa a presença a falhar

00:29

<alexandre>

lol, just wondering :)

00:30

<alexandre>

oh, mas isso ja se sabe... aquilo tem um random p lan?ar excepcoes... assim garantes sempre o support :D

00:34

<alexandre>

loookin' gooooood

00:38

<alexandre>

martins: patch no teu mail

00:38

<alexandre>

testa la c o sip-presence

00:47

<martins>

ja falhou no shutdown

00:49

<alexandre>

como eh possivel ...

00:49

<alexandre>

classloading?

00:49

<martins>

tiraste os

00:49

<martins>

n tiraste

00:49

<martins>

ya class laoding

00:50

<alexandre>

ai o cara...pau!

00:51

<martins>

vou por a guardar sempre o ucl

00:52

<martins>

eu axo q ontem n falhava com o shutdown mas enfim

00:53

<martins>

assim ja n falha

00:54

<martins>

vamos ao undeploy

00:54

<alexandre>

yah

00:54

<alexandre>

faz sentido :p akele eh o unico local onde eh guardado o UCL

00:55

<martins>

undeploy funcionou, vamos ao gtalk bot

00:59

<alexandre>

dp instala um dos ras .. asterisk, jcc ou smpp

00:59

<martins>

ta bom tb

00:59

<martins>

e de seguida uninstall?

01:00

<alexandre>

nao.. o prob eh so no install

01:00

<alexandre>

qd ele tenta ligar ao server

01:00

<alexandre>

deve dar excepcao no activate mas mm assim de seguida criar o link

01:00

<martins>

ta dificil de dar timeout

01:01

<alexandre>

at org.mobicents.slee.resource.asterisk.AsteriskResourceAdaptor.entityActivated(AsteriskResourceAdaptor.java:126)

01:01

<alexandre>

... 35 more

01:01

<alexandre>

01:34:25,305 INFO [ResourceManagementMBeanImpl] Created Link between RA Entity AsteriskRA and Name AsteriskRA

01:01

<martins>

ok, funcionou

01:01

<alexandre>

demora 1 bocado

01:01

<martins>

o undeploy tb

01:01

<martins>

ta bom, siga

01:01

<martins>

vou fazer commit

01:01

<martins>

e começar a maven release

01:02

<alexandre>

yeah

01:02

<martins>

podes ir

01:11

<alexandre>

:D

01:11

<alexandre>

thanks

01:11

<alexandre>

amnha d manha testo o CR2

01:24

<alexandre>

+ //if (logger.isDebugEnabled()) {

01:24

<alexandre>

+ logger.info("replacedUCLs size is "+replacedUCLs.size()+" after removing DU "+du.getDeploymentInfoShortName());

01:24

<alexandre>

+ //}

01:24

<alexandre>

era suposto deixares a info? :P

01:24

<alexandre>

martins

01:24

<martins>

oops

01:24

<martins>

ya

13:14

<alexandre>

yo barreiro

13:15

<alexandre>

chegou a ser feita a CR2?

13:16

<barreiro>

que eu saiba n

13:17

<barreiro>

... tb estava à espera que houvesse um anuncio qq, para eu testar.

13:18

<alexandre>

pois

13:34

<alexandre>

e vpn, ja alguem te ligou?

13:38

<barreiro>

nopes :( ... e a ti ???

13:38

<alexandre>

tb nao

13:38

<alexandre>

helpdesk da tanga

13:38

<barreiro>

damn brazucas :P

13:42

<alexandre>

bem.. sendo assim, vou jogar no euromilhoes :P

13:42

<alexandre>

keres pagar? :D

13:43

<barreiro>

vi logo que ias pedir :P

13:43

<barreiro>

pode ser ;) ... qd é que se deve ???

13:43

<alexandre>

diz q sao 20? :P

13:50

<barreiro>

já recebeste o IRS ???

14:02

<barreiro>

alexandre, tás 30 aérios mais rico.

14:02

<alexandre>

barreiro: ja recebi a carta p pagar o IRS :P

14:03

<barreiro>

são desagradaveis, os gajos :)

14:04

<alexandre>

pois

14:04

<alexandre>

tu ainda recebeste neh?

14:04

<barreiro>

recebi ontem ... tb ainda n paguei :P

14:06

<alexandre>

mas tb tens de pagar???

14:06

<barreiro>

ah pois ... tenho 1 recibo no ano passado :O

14:08

<alexandre>

yah, mas o resto q descontaste td o ano, devia compensar :P

14:09

<barreiro>

concordo ... devia compensar !!! ... mas n compensa :S

14:55

<alexandre>

tao martins

14:55

<alexandre>

deixaste-nos orfaos de CR2

15:03

<martins>

orfaos pq

15:04

<martins>

tive de fazer a release do maven praí 50x pq o raio do svn rebentava sempre nos commit

15:04

<martins>

%&%$/ de google

15:05

<alexandre>

tao mas do hudson so sai as 5 da manha

15:06

<martins>

hum?

15:06

<martins>

n percebi

15:08

<alexandre>

tao, queres q fa?amos a CR2 localmente e testemos? :P

15:08

<alexandre>

eu tenho algumas alteracoes

15:09

<martins>

alterações, a CR2 ja esta nos repositorios maven, o zip esta feito e testado, vou agora tratar do upload pro SF

15:10

<martins>

mandaram-me um mail pra ir fazer uma palestra à univ do minho

15:11

<martins>

tou a pensar mas dia de 10 setembro, o timining n é bom

15:11

<martins>

timing

15:11

<barreiro>

há lá um prof do dpt de informática que é meu conhecido da orientação :P

15:14

<martins>

quase de certeza q vou declinar o convite

15:15

<martins>

tb convidam 12 dias antes

15:15

<barreiro>

mas é algum assunto em especial ???

15:16

<martins>

j2ee e jslee, jboss e mobicents

15:16

<martins>

sistemas confiaveis de larga escala

15:16

<martins>

parece um titulo de projecto do pch

15:16

<martins>

http://www.di.uminho.pt/jornadas/join/

15:16

<barreiro>

lol

15:34

<martins>

só recebo é queixas do rorobocop no opuce, agora tenho o chefe do projecto à perna

16:02

<rg>

hi ...is anyone there ?

16:05

<alexandre>

hi

16:05

<barreiro>

hello rg

16:06

<martins>

cada vez q faço upload para a SF atraves de webdav fico sem IMs e IRC

16:10

<alexandre>

pensei q fosse cada x q te pe?o guita :D

16:11

<rg>

hi

16:12

<rg>

I am facing an issue in the RA that I am working on

16:13

<rg>

when one of my sbb's tries to get an activity context interface for an activity, I get the TransactionRequiredLocalException

16:13

<rg>

I know that this exception occurs when a mandatory transaction method is invoked without a valid transaction context.

16:17

<martins>

hi

16:17

<martins>

which method

16:20

<martins>

ra: wake up:)

16:20

<martins>

rg: wake up

16:23

<martins>

oh damn, I forgot to commit one patch for CR2

16:24

<martins>

oh, I did commit it

16:24

<barreiro>

ufff

16:24

<martins>

haha

16:25

<martins>

for a few seconds I simagined another 6h to do another CR2 release

16:31

<rg>

alright...sorry guys ....stepped out

16:31

<rg>

http://groups.google.com/group/mobicents-public/.../25faaf6ddac6529c#

16:31

<rg>

posted the issue at the above URL

16:35

<martins>

it's the factory that is throwing the exception?

16:35

<rg>

Yes

16:36

<martins>

what is the code of the RA to create the activity

16:37

<martins>

the one that interacts with SleeEndpoint

16:38

<rg>

getSleeEndpoint().activityStarted(activity.getHandle());

16:39

<martins>

do you have any TransactionManager code there

16:39

<rg>

and this.sleeEndpoint = bootstrapContext.getSleeEndpoint();

16:39

<rg>

I don't

16:39

<rg>

well....hold on....let me checck

16:43

<rg>

there is some transaction manager code

16:48

<martins>

show me

16:52

<rg>

TransactionManagerImpl txm = (TransactionManagerImpl) SleeContainer .lookupFromJndi().getTransactionManager();

16:52

<rg>

try {

16:52

<rg>

if (txm.getTransaction() == null) {

16:52

<rg>

txm.begin();

16:52

<rg>

started = true;

16:53

<martins>

remove that code, the RAs don't have to deal with TrnasactionManager

16:53

<rg>

and in the finally block, transaction is committed in started boolean flag is true

16:54

<martins>

remove all regarding the tx manager and the tx itself

16:57

<martins>

btw, do you have a method in the RA such as getActivityHandle(Object activity)?

16:59

<rg>

yes, but it returns null always

17:01

<martins>

it should be something as

17:01

<martins>

you have activities in a activityhandle -> whatever map right?

17:02

<rg>

yes

17:03

<martins>

this is not related to your exception, but regarding a bad implementation of the factory that you posted

17:04

<martins>

change the getActivityHandle method to similar than this one:

17:04

<martins>

public ActivityHandle getActivityHandle(Object arg0) {

17:04

<martins>

if (logger.isDebugEnabled()) {

17:04

<martins>

logger.debug("getActivityHandle");

17:04

<martins>

}

17:04

<martins>

ActivityHandle activityHandle = ((CstaMonitoringActivityImpl)arg0).getHandle();

17:04

<martins>

if (activities.containsKey(activityHandle)) {

17:04

<martins>

return activityHandle;

17:04

<martins>

}

17:04

<martins>

else {

17:04

<martins>

return null;

17:04

<martins>

}

17:04

<martins>

}

17:07

<martins>

then the factory method should be something like:

17:07

<martins>

public ActivityContextInterface getActivityContextInterface(CstaMonitoringActivity activity) throws NullPointerException,

17:07

<martins>

UnrecognizedActivityException, FactoryException {

17:07

<martins>

17:07

<martins>

// if parameter is null throw exception

17:07

<martins>

if (activity == null) {

17:07

<martins>

throw new NullPointerException();

17:07

<martins>

}

17:07

<martins>

17:07

<martins>

// get handle

17:08

<martins>

ActivityHandle handle = raEntity.getResourceAdaptor().getActivityHandle(activity);

17:08

<martins>

if (handle == null) {

17:08

<martins>

throw new UnrecognizedActivityException(activity);

17:08

<martins>

}

17:08

<martins>

else {

17:08

<martins>

return new ActivityContextInterfaceImpl(this.sleeContainer,

17:08

<martins>

this.activityContextFactory.getActivityContext(new SleeActivityHandle(raEntityName, handle, sleeContainer)).getActivityContextId());

17:08

<martins>

}

17:08

<martins>

17:08

<martins>

}

17:09

<martins>

explaining this particular issue, you don't verify if the activity really exists, and making it worse, you ask for an activity context of that activity, if it doesn't exist it gets created, big chance of leaks

17:10

<martins>

anyway, like I said, this has nothing to do with your exception

17:10

<rg>

ok

17:10

<martins>

regarding your exception something is commiting/rolling back the transaction

17:11

<martins>

the RA doesn't need to know about the tx, so remove all code on that matter, if it doesn't solve it means you either:

17:12

<martins>

1) change executing thread, which looses the tx

17:12

<martins>

2) some api also uses java tx and is getting on the way

17:13

<martins>

I would offer to have a look at the whole RA and SBB code but I will go on vacation tomorrow and I don't want a laptop near by :-)

17:16

<rg>

that's understandable

17:16

<rg>

this code was written by another developer

17:17

<rg>

so, I will have to see what it does really...end to end

17:20

<martins>

you always debug and monitor an expression such as SleeContainer .lookupFromJndi().getTransactionManager().getTransaction()

17:20

<martins>

you can

17:21

<martins>

once you loose the tx that's it, but beware the tx has a timeout

17:25

<rg>

ok

20:33

<alexandre>

hey y'all!

Drone v1.4 © 2002-2005 Uwyn RIFE powered