Time |
S |
Nick |
Message |
00:40 |
|
|
MegaMatt joined ##javaee |
01:12 |
|
|
SoniEx joined ##javaee |
02:06 |
|
* cem_ |
i feel sleepy |
02:13 |
|
cem_ |
This is quite something :) |
02:19 |
|
* pdurbin |
should go to sleep |
02:20 |
|
|
scripty joined ##javaee |
02:24 |
|
cem_ |
working in java feels like you dont need other languages at all |
02:25 |
|
|
tjsnell left ##javaee |
02:33 |
|
scripty |
> |
03:25 |
|
|
jenue joined ##javaee |
03:58 |
|
cem_ |
apple tech support is very bad |
03:58 |
|
cem_ |
not good |
03:58 |
|
cem_ |
worst |
04:00 |
|
cem_ |
ipad sucks! |
04:08 |
|
|
geecat joined ##javaee |
04:09 |
|
cem_ |
cat |
05:22 |
|
|
balo joined ##javaee |
05:38 |
|
|
cem_ joined ##javaee |
05:47 |
|
cem_ |
hi |
05:47 |
|
cem_ |
all |
06:59 |
|
|
sess joined ##javaee |
07:01 |
|
|
Quest joined ##javaee |
07:06 |
|
|
AlexCzar joined ##javaee |
07:08 |
|
Quest |
after watching the sequencial reads on line 61,64,69 that reflect line 1299 and inturn important 1342, how can I make it read a file as it reads an image. (I might be sending objects/variables in this squence = int,int,String,image,file,int) ? |
07:32 |
|
Quest |
http://pastie.org/8442323 ^ |
07:58 |
|
Fubar^ |
I don't understand what you are asking |
08:25 |
|
|
hurk joined ##javaee |
09:19 |
|
|
hurk joined ##javaee |
09:39 |
|
|
hurk joined ##javaee |
09:42 |
|
Quest |
Fubar^ you there? |
09:43 |
|
Quest |
Fubar^ how does the method readString knows that the string ended (and it should stop reading it)? |
09:45 |
|
Quest |
http://stackoverflow.com/questions/19722520/reading-variables-objects-files-in-an-inputstream-sequencially |
09:46 |
|
SoniEx2 |
usually when reading a String java reads an int (short?) first |
09:47 |
|
Quest |
when reading a string, java reads an int first? why would you say that |
09:47 |
|
SoniEx2 |
because that's what DataInputStreams(?) do |
09:48 |
|
SoniEx2 |
afaik |
09:48 |
|
Quest |
can you elaborate? |
09:49 |
|
SoniEx2 |
[str.length()] + [str data] |
09:53 |
|
Quest |
So DataOutPutStream when writes the data, it writes the ints first (the length of string in ints) and then the string it self? . so when DataOutPutStream reads it, it knows how long it is and where to stop? |
09:54 |
|
SoniEx2 |
it's DataInputStream that reads the file |
09:54 |
|
SoniEx2 |
anyway yeah |
09:54 |
|
SoniEx2 |
also it actually uses a short |
09:55 |
|
Quest |
so what I said is almost conceptually true? |
09:56 |
|
Quest |
SoniEx2 is this behaviour same in case of InputStreams as well? |
09:59 |
|
Quest |
SoniEx2 line 1300 uses public String readString(InputStream is |
09:59 |
|
|
tmichel joined ##javaee |
10:01 |
|
SoniEx2 |
I don't know how that one works |
10:01 |
|
SoniEx2 |
don't you have like the source or something? |
10:52 |
|
Quest |
SoniEx2 I got it. the write method says that it writes the ints of length first. then string/file. so the reader would do the same. read lenght in ints. and then only read that lenght for actual data. custom protocol |
10:52 |
|
Quest |
SoniEx2 thanks for the support |
10:56 |
|
SoniEx2 |
you're welcome |
11:13 |
|
|
MegaMatt joined ##javaee |
11:29 |
|
|
Autowired joined ##javaee |
11:29 |
|
Autowired |
Quesd :D |
11:29 |
|
Quest |
:) |
11:32 |
|
Autowired |
what does it mean to have voice here? is it an idiot-marker like in most channels? |
12:07 |
|
pdurbin |
maybe we should have a website for this channel to explain such things. a FAQ or something |
12:08 |
|
Autowired |
lol just because one person has voice? |
12:22 |
|
|
tommmied joined ##javaee |
12:22 |
|
AlexCzar |
AFAIK here it only means someone was bored enough to give this mode to someone |
12:23 |
|
Autowired |
such an important man as Quesd can't be bored |
12:36 |
|
SoniEx2 |
hey question who made javaeebot? |
12:36 |
|
AlexCzar |
well, the other reason is stupidity, which I can't imply because of being a polite young man |
12:39 |
|
AlexCzar |
SoniEx2, for a time I thought it was the same as javabot at ##java, but I'm not so certain now. It's help is different |
12:39 |
|
SoniEx2 |
well just tell me so I can exploit it |
12:40 |
|
SoniEx2 |
(exploiting bots makes me hyper, just so you know...) |
12:42 |
|
AlexCzar |
SoniEx2, http://moritz.faui2k3.org/en/ilbot |
12:44 |
|
SoniEx2 |
? |
12:45 |
|
|
gtkkkk joined ##javaee |
12:45 |
|
AlexCzar |
that's the page for javaeebot |
12:49 |
|
pdurbin |
AlexCzar: I run javaeebot. it's a supybot |
12:49 |
|
|
jieryn joined ##javaee |
12:50 |
|
AlexCzar |
pdurbin, hm... the irclog page says "powered by ilbot" |
12:50 |
|
pdurbin |
AlexCzar: I run that bot too. philbot. an instance of ilbot |
12:50 |
|
AlexCzar |
oh |
12:51 |
|
pdurbin |
if someone starts a web page for this channel we can document the bots :) |
12:52 |
|
|
gtkkkk left ##javaee |
12:53 |
|
SoniEx2 |
pdurbin: is it an unmodified supybot? |
12:53 |
|
AlexCzar |
pdurbin, noone uses the bots here, well ilbot is at least logging, but I've never seen anyone use javaeebot |
12:53 |
|
SoniEx2 |
AlexCzar: I think you do something like... |
12:53 |
|
SoniEx2 |
javaeebot: lucky supybot |
12:53 |
|
javaeebot |
SoniEx2: http://sourceforge.net/projects/supybot/ |
12:54 |
|
AlexCzar |
this was the first time I've seen someone "use" it :D |
12:55 |
|
AlexCzar |
also its website is dead and no official documentation anywhere |
12:56 |
|
SoniEx2 |
bot exploiting doesn't need proper documentation... |
12:57 |
|
AlexCzar |
SoniEx2, i haven't said it in the context of exploiting the bot but in context of its usability |
12:57 |
|
pdurbin |
semiosis says I should upgrade from supybot to limnoria: http://irclog.greptilian.com/javaee/2013-10-21#i_32875 |
12:57 |
|
AlexCzar |
pdurbin, or Gribble |
12:57 |
|
pdurbin |
https://github.com/ProgVal/Limnoria |
12:58 |
|
SoniEx2 |
just use Shocky |
12:58 |
|
SoniEx2 |
https://github.com/clone1018/Shocky |
12:58 |
|
SoniEx2 |
the bot I've been exploiting for quite a long time now... |
12:58 |
|
SoniEx2 |
so easy to crash and disconnect... |
12:58 |
|
SoniEx2 |
:3 |
12:59 |
|
Autowired |
if it is written in java you can't buffer overflow exploit it |
12:59 |
|
SoniEx2 |
no need for buffer overflow |
12:59 |
|
SoniEx2 |
1. it has a bug where empty prints in lua will send a message to the server so doing empty prints can disconnect it for spam |
13:00 |
|
SoniEx2 |
2. you can do some pretty nasty stuff with js... |
13:00 |
|
SoniEx2 |
(I do Packages.pl.shockah.shocky.Shocky.getBotForChannel("<some channel>").disconnect(); and it's awesome) |
13:06 |
|
pdurbin |
AlexCzar: yeah, technically javaeebot is gribble: supybot-gribble-0.83.4.1-8.el6.noarch |
14:44 |
|
|
hurk joined ##javaee |
15:20 |
|
* pdurbin |
posts "Endorsing a different JAXP provider for OpenSAML" - https://java.net/projects/glassfish/lists/dev/archive/2013-11/message/0 |
15:27 |
|
|
kritika joined ##javaee |
15:28 |
|
|
AlexCzar joined ##javaee |
15:31 |
|
kritika |
hi |
15:31 |
|
kritika |
i'm new here |
15:32 |
|
Autowired |
good |
15:32 |
|
Autowired |
this is not serious channel |
15:32 |
|
Autowired |
more like a joke |
15:34 |
|
sfisque |
jeez, who invited mr. doom? |
15:34 |
|
kritika |
that is nice in some channel they dont give respect to girls |
15:34 |
|
Autowired |
are u boy? |
15:35 |
|
sfisque |
we dont care here, ask a question, if someone knows, they'll answer. if not, we try to brainstorm or "thought experiment" through it |
15:35 |
|
Autowired |
she has no question |
15:35 |
|
Autowired |
just idling |
15:36 |
|
pdurbin |
sfisque: no idea |
15:39 |
|
AlexCzar |
kritika, russkaya? |
15:39 |
|
Autowired |
kritika, girl? |
15:39 |
|
kritika |
yes |
15:39 |
|
kritika |
isnt it obvious |
15:40 |
|
kritika |
as sfisque said that doesnt matter here |
15:40 |
|
sfisque |
yah, your sans serif characters are more curly than the other sans serif chars. |
15:40 |
|
sfisque |
JK |
15:40 |
|
sfisque |
:P |
15:41 |
|
AlexCzar |
kritika, it isn't obvious to people who're not Russian speakers :) |
15:41 |
|
Autowired |
but i eventually like to flirt with u |
15:41 |
|
SoniEx2 |
kritika: so what do you want/need help with? |
15:41 |
|
Autowired |
if u good looking |
15:42 |
|
|
Naros joined ##javaee |
15:42 |
|
sfisque |
if you're refering to her nick, that's meaningless. there is nothing that makes a nick match the gender of it's user |
15:42 |
|
SoniEx2 |
^ |
15:42 |
|
AlexCzar |
sfisque, her nick in slavic languages is of female gender |
15:42 |
|
someReallyHotPro |
i know (studied russian) |
15:43 |
|
someReallyHotPro |
but that is no guarantee that the user's gender matches |
15:43 |
|
kritika |
sfisque :D |
15:43 |
|
kritika |
no |
15:44 |
|
|
Naros joined ##javaee |
15:44 |
|
AlexCzar |
of course, "she" could be a hairy 60yo transsexual for what we know, the nick merely suggests probable gender |
15:44 |
|
SoniEx2 |
sfisque: you can't lie about your gender |
15:44 |
|
* sfisque |
waves at soniex2 to shush, now |
15:44 |
|
SoniEx2 |
sfisque: we both know you don't have one... (or do you?) |
15:45 |
|
Autowired |
ok wenn du mich so provizierst geh ich mit kacke spielen |
15:45 |
|
sfisque |
i have many. i wear them like fezzes or boas |
15:45 |
|
SoniEx2 |
pdurbin: does javaeebot have a translate command or something? |
15:46 |
|
kritika |
javaeebot just scrap |
15:46 |
|
javaeebot |
kritika: Error: "just" is not a valid command. |
15:47 |
|
|
oO0Oo joined ##javaee |
15:47 |
|
AlexCzar |
javaeebot translate german english ok wenn du mich so provizierst geh ich mit kacke spielen |
15:47 |
|
javaeebot |
AlexCzar: Error: Google says: Response Status 403: Please use Translate v2. See http://code.google.com/apis/language/translate/overview.html. |
15:47 |
|
SoniEx2 |
oh god someone update javaeebot |
15:47 |
|
sfisque |
javaeebot google update javaeebot howto |
15:47 |
|
javaeebot |
sfisque: Setting up Eclipse for RSBot - YouTube: <http://www.youtube.com/watch?v=ZWUOxN9dmlY>; javabot: <http://www.evanchooly.com/logs/%23%23jsf/today> |
15:47 |
|
pdurbin |
SoniEx2: the config is almost identical to https://github.com/pdurbin/greptilian-vagrant/blob/master/modules/server1/files/home/supybot/crimsonfubot.conf |
15:48 |
|
AlexCzar |
pdurbin is in charge of it, so... |
16:17 |
|
|
kobain joined ##javaee |
16:23 |
|
|
AlexCzar left ##javaee |
16:23 |
|
|
AlexCzar joined ##javaee |
16:24 |
|
kritika |
is it possible to know how may threads can execute a given program ? |
16:26 |
|
AlexCzar |
kritika, rephrase your question, please, I don't understand it |
16:27 |
|
sfisque |
are you asking if it's possible to discover how many threads a rpogram is executing? |
16:27 |
|
sfisque |
if so, yes |
16:27 |
|
kritika |
how sfisque |
16:27 |
|
kritika |
what i must do ? |
16:28 |
|
sfisque |
any profiler will do it. i also believe jvisualvm will introspect the running threads of a process |
16:28 |
|
sfisque |
if the process is java |
16:28 |
|
sfisque |
otherwise you need something like truss |
16:29 |
|
sfisque |
checking jvisualvm now |
16:30 |
|
sfisque |
i know jprofiler does a nice job of exposing threads in a profiled app |
16:31 |
|
kritika |
why that feature was given is there any main reason ? |
16:32 |
|
sfisque |
multi-threading? or the ability to introspect them? |
16:34 |
|
kritika |
wow lot tools are from oracle |
16:36 |
|
sfisque |
by acquisition |
16:37 |
|
SoniEx2 |
I just completely hacked an IRC bot |
16:37 |
|
sfisque |
weblogic == acquisition. java/solaris/sparc == acquisition. many others, same deal |
16:37 |
|
SoniEx2 |
and by that I mean I have gained FILESYSTEM ACCESS to it |
16:37 |
|
sfisque |
did you use a claymore or a battle axe soniex2 |
16:37 |
|
sfisque |
nice |
16:37 |
|
kritika |
that is soo nice they can acquire anything |
16:38 |
|
SoniEx2 |
not gonna post the code tho |
16:38 |
|
SoniEx2 |
never |
16:38 |
|
SoniEx2 |
this is too exploitable |
16:38 |
|
sfisque |
depends on how you look at it kritika. some would say they saved sun. others would say they've strong armed java and solaris. matter of perspective |
16:42 |
|
SoniEx2 |
the good thing about disabling SecurityManagers on bots is that it's just fun |
16:42 |
|
SoniEx2 |
now I really wish I could get money from that... |
16:43 |
|
sfisque |
go work for google |
16:54 |
|
kritika |
you guys work for google ? |
17:00 |
|
kritika |
oh just kidding ;) |
17:27 |
|
AlexCzar |
couple of my friends are working for Google, I turned the invitation down though, more of a startup guy :) |
17:36 |
|
neuro_sys |
http://i.imgur.com/4Fu9Sjw.png |
17:38 |
|
sfisque |
and they don't want you to use bash, sed, and awk? |
17:38 |
|
sfisque |
:P |
17:38 |
|
AlexCzar |
neuro_sys, and which of the listed words is bad (besides C++, obviously)? |
17:39 |
|
sfisque |
ROFL |
17:39 |
|
sfisque |
i like C++, but i do prefer C over C++. cleaner |
17:41 |
|
Naros |
kritika: it's hard to believe Oracle is what it is when it first started out just as a database vendor. |
17:57 |
|
MegaMatt |
I can tell you - from first hand experience... Oracle did not "save Sun" ;) |
17:58 |
|
MegaMatt |
And yes, jvisualvm is a good tool to look at the threads ;) |
17:59 |
|
MegaMatt |
Or you can just kill -3 .. ;) .. and yes, I realize I'm way late to this conversation ;) |
18:00 |
|
whartung |
beats me, I don't even know what the conversation is about |
18:01 |
|
whartung |
BUT I WON'T LET THAT DETAIL STOP ME!!!.... |
18:06 |
|
MegaMatt |
It's about sfisque being a girl |
18:07 |
|
SoniEx2 |
sfisque's not a girl |
18:07 |
|
SoniEx2 |
they're genderless or something... |
18:07 |
|
MegaMatt |
[11:42am] sfisque is now known as someReallyHotPro. |
18:07 |
|
MegaMatt |
[[11:43am] someReallyHotPro is now known as IamAgirl. |
18:07 |
|
MegaMatt |
hehe |
18:07 |
|
MegaMatt |
Haha I know ;) |
18:08 |
|
SoniEx2 |
if you know then... wait are you sfisque's SO or something? :3 |
18:09 |
|
MegaMatt |
BTW, I'm trying to learn Russian too - but damn that language is ochen trudno |
18:09 |
|
|
scripty joined ##javaee |
18:10 |
|
MegaMatt |
The probability of sfisque being my SO is extremely unlikely. |
18:11 |
|
SoniEx2 |
but you do know sfisque eh? |
18:11 |
|
MegaMatt |
Nope. |
18:11 |
|
MegaMatt |
No more than I know you, anyhow |
18:12 |
|
SoniEx2 |
then how... |
18:12 |
|
neuro_sys |
AlexCzar: none of them is bad, except C++ obviously |
18:12 |
|
SoniEx2 |
eh nvm... |
18:12 |
|
AlexCzar |
neuro_sys, that's what I thought... |
18:13 |
|
AlexCzar |
MegaMatt, ochen' trudnyj :) |
18:14 |
|
sfisque |
i studied russian for a year. let's just say, once i reached declensions, i gave up |
18:15 |
|
MegaMatt |
O |
18:15 |
|
MegaMatt |
I'm not even that far along. I know a few words, that's about it. |
18:15 |
|
sfisque |
declensions made my brain hurt |
18:17 |
|
MegaMatt |
Yeah, too many different word endings! ;) |
18:18 |
|
sfisque |
i still remember some verbs, some nouns, and a few grammar rules, like past tense construction. that, and i can still read the actual alphabet (aka, i can sound out words, though i wont know what they are) |
18:18 |
|
AlexCzar |
sfisque, declensions in Russian are easy compared to some other languages :) |
18:20 |
|
sfisque |
i very much preferred french. at least most of the "rules" made sense, thought he sheer amount of "exceptions" and "alternate rules" was a bit dizzying |
18:22 |
|
AlexCzar |
yeah, the biggest problem of russian language is also exceptions/alternate rules... |
18:23 |
|
* AlexCzar |
has to leave—the laptop battery is dying |
18:23 |
|
AlexCzar |
bye, this evening was particularly interesting on ##j channels :) |
18:24 |
|
Naros |
bye |
18:27 |
|
scripty |
Howdy! |
18:28 |
|
* sfisque |
waves to scripty |
18:28 |
|
scripty |
who is Autowired ? |
18:28 |
|
scripty |
New dude |
18:28 |
|
sfisque |
afaict, yes |
18:31 |
|
|
scripty joined ##javaee |
18:31 |
|
scripty |
my xchat is getting restarted over and over again |
18:32 |
|
scripty |
:? |
18:32 |
|
sfisque |
what os scripty? |
18:32 |
|
|
hurk joined ##javaee |
18:33 |
|
scripty |
i use linux |
18:33 |
|
scripty |
trisquel |
18:34 |
|
sfisque |
hrm. never used xchat on linux. it was "stable enough" when i used it on macosx (few years ago). |
18:35 |
|
Naros |
used to use xchat on winders a while back but eventually just consolidated everything IM/chat into trillian |
18:35 |
|
scripty |
most people dont know about irc (in my country) :/ well quite illiterate |
18:38 |
|
|
geecat joined ##javaee |
19:03 |
|
|
geecat_ joined ##javaee |
19:12 |
|
|
hurk joined ##javaee |
19:24 |
|
|
sfisque joined ##javaee |
19:27 |
|
|
tmichel joined ##javaee |
19:34 |
|
pdurbin |
huh, I've been using `openssl asn1parse -in my.crt` for years but I like the output of `keytool -printcert -file my.cert` better |
20:08 |
|
|
neuro_sys joined ##javaee |
20:11 |
|
|
kobain_ joined ##javaee |
20:25 |
|
Naros |
using pure jpa, how can I eagerly fetch two collections on an entity? |
20:26 |
|
sfisque |
Fetch<ParentType, ChildType> |
20:27 |
|
Naros |
did that but got a multi-bag exception |
20:27 |
|
sfisque |
are they declared as Set<X>? |
20:27 |
|
Naros |
they were not, i changed them to set and I get a NPE |
20:28 |
|
Naros |
let me get the trace again, its somewhere i think inside hibernate |
20:28 |
|
sfisque |
that's wierd, you shouldnt get an exception for multi fetching. hibernate? eclipselink? |
20:28 |
|
sfisque |
kk |
20:29 |
|
Naros |
Perhaps it was an issue with redeploy, seems to be ok now |
20:29 |
|
sfisque |
kk |
20:31 |
|
Naros |
I've always define most of my collection mappings as list rather than set. is there a point to using List? |
20:31 |
|
Naros |
i get set doesn't allow dups but in most cases, that doesn't make sense with database records. |
20:32 |
|
tmichel |
lists are ordered, sets are not. |
20:32 |
|
sfisque |
exactly |
20:32 |
|
sfisque |
faster CRUD cycle if you're allowing child editing in a view |
20:33 |
|
sfisque |
or if you have a collection where ordering is "significant" to workflow semantics |
20:33 |
|
Naros |
Right but it seems if you apply any @OrderBy() on the collection, the provider must be using an order-specific Set implementation. |
20:33 |
|
Naros |
I see no difference |
20:34 |
|
sfisque |
not necessarily. it might just interpose a comparator to the accessor method |
20:35 |
|
sfisque |
so the underlying pool can be unordered and only gets ordered upon request of data |
20:35 |
|
sfisque |
i'm guessing it's "up to the impl to decide how to handle it" |
20:36 |
|
Naros |
yah |
20:36 |
|
sfisque |
or it might interpose, as you say, a specific subclass that provides ordering natively (linkedhashset, e.g.)_ |
20:48 |
|
|
LadyCailin joined ##javaee |
20:59 |
|
|
tommmied joined ##javaee |
21:15 |
|
|
eindoofus joined ##javaee |
21:16 |
|
eindoofus |
can anyone please offer input on whether this class is worth taking? I have too choose an elective and there are few available: http://www.cdm.depaul.edu/academics/pages/courseinfo.aspx?Subject=SE&CatalogNbr=554 |
21:18 |
|
whartung |
can't say. does the topic interest you? |
21:23 |
|
whartung |
ever write a transaction listener sfisque ? |
21:23 |
|
whartung |
I basically want to log when the trans starts and commits |
21:25 |
|
sfisque |
i have. i had to put a "preupdate/persist" interceptor in place here to that we could update metadata columns on cascaded objects (because you can't be 100% sure which object is mutating when you're saving from the super-parent (root node) of an object graph) |
21:25 |
|
sfisque |
when you say "log" what are you referring to |
21:25 |
|
whartung |
I want to see it happen. |
21:25 |
|
whartung |
here's what I'm fighting |
21:26 |
|
sfisque |
i mean, log -> java.util.Logger or log -> some table in the rdbms |
21:26 |
|
whartung |
logger |
21:26 |
|
whartung |
http://pastie.org/private/mbxenf3nisuxikothg |
21:27 |
|
sfisque |
ok, trivial. create an object that defines a @lifecycle interceptor method(s) and then just specify the class as an interceptor on the targeted class(es) |
21:27 |
|
whartung |
so you can see the SELECT at 44.521, it returns empty, so a row is inserted at 44.531 |
21:27 |
|
whartung |
but then |
21:28 |
|
whartung |
you see an identical select at 44.557 |
21:28 |
|
whartung |
but it too is returning null, and not seeing the insert |
21:28 |
|
sfisque |
transaction boundary? |
21:28 |
|
sfisque |
remember the xact does not commit until you leave ejb land |
21:28 |
|
whartung |
possibly |
21:28 |
|
sfisque |
unless you're doing BMT |
21:28 |
|
whartung |
yea, I know but here's the deal |
21:29 |
|
sfisque |
if you go EJB->EJB->EJB you dont commit until you leave the top most ejb call |
21:29 |
|
sfisque |
unless you've got some REQUIRES_NEW or BMT going on |
21:30 |
|
whartung |
I have that |
21:30 |
|
whartung |
http://pastie.org/private/zii1rdrsg0pj8eewptjza |
21:30 |
|
whartung |
we have a nice little routing |
21:30 |
|
whartung |
"runInTransaction(Runnable r)" |
21:30 |
|
whartung |
for exactly that |
21:31 |
|
sfisque |
wait. your'e spawning a thread inside of an EJB? |
21:31 |
|
whartung |
but yea I'd like to see the xact commit in this |
21:31 |
|
whartung |
no, it's a runnable, not a trhead |
21:31 |
|
sfisque |
oh, so you're just using the runnable interface without threading? |
21:31 |
|
whartung |
yea |
21:31 |
|
sfisque |
ok |
21:31 |
|
whartung |
"go" |
21:31 |
|
sfisque |
phew |
21:31 |
|
whartung |
"doit" |
21:31 |
|
sfisque |
i was about to vomit |
21:32 |
|
sfisque |
ok. back to the situation |
21:32 |
|
whartung |
MOAR THREADZ! SKALLLLLEEE!!! |
21:32 |
|
* sfisque |
chuckles |
21:32 |
|
whartung |
(reason #426 why Kittens should not code enterprise apps...) |
21:32 |
|
sfisque |
oh |
21:33 |
|
sfisque |
you're using "new" and where is the transaction for that "new'ed" object coming from? |
21:33 |
|
whartung |
which new? |
21:33 |
|
sfisque |
new Runnable() |
21:34 |
|
whartung |
oh, that would be from the original transaction, then we send it over the wall to the REQUIRES_NEW ejb method |
21:34 |
|
sfisque |
unmanged objects don't inherit anything |
21:34 |
|
sfisque |
***unmanaged |
21:35 |
|
whartung |
well in this case it doesn't have to, since it's a model (i.e. a Value Object) |
21:35 |
|
sfisque |
inherit -> obtain any context from the container |
21:36 |
|
sfisque |
i'm still guessing the enclosing xact ends before run() is called, which means run()'s target object has no xact and thus the insert never happens |
21:36 |
|
sfisque |
as in it never commits |
21:36 |
|
sfisque |
as a theory |
21:36 |
|
whartung |
oh I think that's what's happening |
21:36 |
|
whartung |
that's why I want to see the transaction commits |
21:37 |
|
whartung |
just want to see them in the log |
21:37 |
|
whartung |
it's a nasty race I'm hunting down |
21:37 |
|
sfisque |
that's a tough one because the commits are outside your code |
21:37 |
|
whartung |
that's why I was hoping some kind of listener |
21:37 |
|
whartung |
but all I can sense is a SessionSynchronization thing with stateful beans |
21:37 |
|
sfisque |
it shoudl be very easy to find. look for where that run() is actually executed. is it inside of the EJB context that creates it? |
21:38 |
|
whartung |
it's inside the session bean |
21:38 |
|
sfisque |
if it's not, that's your culprit |
21:38 |
|
whartung |
the session bean just executes it within its REQUIRES_NEW transcations |
21:38 |
|
sfisque |
is the bean stateful or stateless? |
21:38 |
|
whartung |
staeless |
21:38 |
|
whartung |
tasteless :) |
21:39 |
|
sfisque |
REQUIRES_NEW is the problem |
21:39 |
|
sfisque |
i had this issue recently. |
21:40 |
|
sfisque |
follow my logic |
21:42 |
|
sfisque |
EJB_A (transaction A) executes method(). inside method(), we call EJB_B (transaction B) anotherMethod(). now the EM inside TxB is holding possibly stale values, because TxA's changes have not committed. so TxB commits based on faulty logic because it's doing work based on uncommitted changes in TxA that are isolated away from TxB. TxA then finall commits because TxB committed first and went out of scope |
21:42 |
|
sfisque |
is that possibly a recipe that could produce the issue you're seeing |
21:42 |
|
sfisque |
? |
21:44 |
|
sfisque |
i had a case where we were saving a parent -> collection, and then the colleciton was getting whacked because TxA had a stale copy of the collection |
21:44 |
|
whartung |
yea, when the data starts here, it's not even JPA data. It's a Model (DTO) from a web service |
21:44 |
|
whartung |
so, it's not even an entity |
21:45 |
|
sfisque |
aye |
21:45 |
|
whartung |
what I think is happening |
21:45 |
|
sfisque |
R_NEW is a tricky beast. many people think it's straight forward, but if you are managing complex object graphs, it can be nasty |
21:46 |
|
whartung |
if you're tossing entities across the boundaries, yea I can see that. |
21:46 |
|
sfisque |
aye, swapping Txs as you navigate a graph is loaded with trolls under the bridge |
21:46 |
|
whartung |
si |
21:47 |
|
whartung |
what I think is happening here tho |
21:47 |
|
whartung |
is the client calls the service, passing in the DTO |
21:48 |
|
whartung |
the service does some house keeping, and then it grabs a global lock based on the content of the DTO (say, the Patient ID as an example for discussion). The goal being to serialize across the same meta entity in the system. |
21:48 |
|
whartung |
while it holds that lock, work is done, then it's unlocked. |
21:48 |
|
whartung |
the problem I think |
21:48 |
|
whartung |
is that between the "unlock" and the "exit the method and commit part", the race is on |
21:49 |
|
whartung |
another thread, sucking on the lock is freed and off it goes BEFORE the first one actually commits |
21:49 |
|
sfisque |
where is the other thread coming from? |
21:49 |
|
whartung |
so we have an SQL Isolation issue where thread B does not see the insert from thread A |
21:49 |
|
whartung |
another request |
21:49 |
|
sfisque |
oh |
21:49 |
|
sfisque |
yikes |
21:49 |
|
whartung |
multople simultaneous requests |
21:49 |
|
whartung |
yea, whee |
21:49 |
|
whartung |
life in the big city |
21:49 |
|
sfisque |
well the DTO is not managed |
21:50 |
|
whartung |
no, it's not even an entity |
21:50 |
|
sfisque |
so you have no isolation until it's converted to an entity |
21:50 |
|
sfisque |
no proxy, no tx, no nothign |
21:50 |
|
whartung |
if the sql isolation was at like, dirty read, it might see the other insert - but hard to say (postgres is kinda weird that way) |
21:51 |
|
sfisque |
i was unaware that the issue isnt manafesting inside the same thread. that changes everything |
21:51 |
|
whartung |
oh, yea, no, it's cross threads…what fun would the other way be :) |
21:52 |
|
sfisque |
you might have to synchronize the inserts. use a queue and a worker |
21:52 |
|
sfisque |
keep it asynch but syncrhonized |
21:52 |
|
whartung |
well but that's why I wanted to see the transaction commit, just to see it "not" working |
21:52 |
|
whartung |
I thin kI have it fixed |
21:52 |
|
whartung |
I moved the lock to outside the runIntransaction |
21:53 |
|
whartung |
so we're locked on the DTO for the entire transaction |
21:53 |
|
sfisque |
that makes more sense |
21:53 |
|
whartung |
what's anoying |
21:53 |
|
whartung |
is I had this fix testerday |
21:53 |
|
whartung |
I wrote the wrapper to call the internal method within the transaction |
21:53 |
|
whartung |
but I forgot to move the lock out |
21:54 |
|
whartung |
so I spent all of yesterday after noon and this morning "why isn't this working" |
21:54 |
|
sfisque |
been there |
21:54 |
|
whartung |
"cuz I fitzed it" |
21:54 |
|
sfisque |
and it's staring you in the face th ewhole time |
21:54 |
|
whartung |
yea |
21:54 |
|
whartung |
still like to see the commit tho :) |
21:54 |
|
sfisque |
one sec |
21:55 |
|
whartung |
should try turning transaction logging on -- see if anything interesting comes out |
21:55 |
|
sfisque |
yah only with SFSBs the issue is because SLSB's are "this-less" intercepting the commit is like grabbing air |
21:55 |
|
Autowired |
your architecture is too enterprisey |
21:55 |
|
sfisque |
lolz |
21:56 |
|
whartung |
"too much enterprise, use more agile" |
21:56 |
|
sfisque |
frAgile! |
21:57 |
|
whartung |
w00t |
21:57 |
|
whartung |
[#|2013-11-01T14:57:12.022-0700|FINE|sun-appserver2.1|javax.enterprise.resource.jta|_ThreadID=56;_ThreadName=httpSSLWorkerThread-8888-0;ClassName=com.sun.enterprise.distributedtx.J2EETransactionManagerImpl;MethodName=commit;_RequestID=7999c0c3-ad9c-402d-a0a3-a6dc11add56e;|TM: commit|#] |
21:57 |
|
sfisque |
how'd you get it? |
21:57 |
|
whartung |
jta and its logging on FINEST |
21:57 |
|
zoot |
thats a fine log whartung! |
21:57 |
|
whartung |
mighty FINE |
21:58 |
|
sfisque |
lolz |
21:58 |
|
whartung |
*JTS |
21:58 |
|
sfisque |
ah |
21:58 |
|
sfisque |
so you didnt intercept it, you're just switched logging granularity |
21:58 |
|
whartung |
yea |
21:58 |
|
sfisque |
i was curious how you interecepted it |
21:58 |
|
whartung |
yea, no :( |
21:58 |
|
sfisque |
i was going to bow to your eeFu |
21:59 |
|
sfisque |
and sit and drink tea at your feet |
21:59 |
|
sfisque |
:P |
22:00 |
|
whartung |
"Take the XA ID from my hand, grasshopper" |
22:00 |
|
sfisque |
>.< |
22:00 |
|
sfisque |
but master, there is no XA ID, it is ephemeral, like the JNDI context.... |
22:01 |
|
whartung |
you are but a child, so you are blind and can not see. |
22:01 |
|
sfisque |
ROFL |
22:02 |
|
sfisque |
kickstarter… for "EeFu, enter the Transaction!" |
22:03 |
|
whartung |
heh |
22:19 |
|
sfisque |
bad news. contract runs out in dec. and they're can't renew ($$) so i'm a free agent again :-/ |
22:19 |
|
|
scripty joined ##javaee |
22:19 |
|
whartung |
:( |
22:23 |
|
whartung |
hmm..missing something. I see them being created but not committed |
22:25 |
|
sfisque |
do you have any try/catch blocks that might be swallowing exceptions? |
22:25 |
|
whartung |
no, this is that (verbose) transaction log |
22:25 |
|
sfisque |
right, but maybe one of the inserts is throwing an exception that's getting swallowed? |
22:26 |
|
whartung |
that's fine, but I should be able to see a simple "create … work … commit" cycle |
22:26 |
|
sfisque |
we had a gift like that from a prev dev that we stumbled across sometime ago |
22:26 |
|
whartung |
trying to get the whole life cycle here |
22:27 |
|
whartung |
got about 80M of log here to make sense of :) |
22:39 |
|
whartung |
so weird |
22:39 |
|
whartung |
can't correlate transaction with threads |
22:40 |
|
whartung |
none of my INSERT or DELETE are wrapped in a begin/commit >.< |
22:43 |
|
sfisque |
i'm wondering if it's the "new object()" that wraps that bean reference. |
22:43 |
|
whartung |
well I think it doesn't actually create a tran until it does something that requires it |
22:44 |
|
whartung |
this is nice in the GF logs |
22:44 |
|
whartung |
_RequestID=3bbde38b-650d-40e9-9b66-4d654ff5e1ef |
22:44 |
|
whartung |
so you can track "everything" for a single request |
22:44 |
|
sfisque |
yah. but i'm wondering if since the call execution is from a non-managed object holding a potentially stale proxy (remember SLSB's have no durable "this") |
22:44 |
|
whartung |
I thin kthat's a red herring |
22:44 |
|
sfisque |
possibly |
22:45 |
|
* sfisque |
is thinking out loud" |
22:45 |
|
|
tmichel left ##javaee |
22:49 |
|
whartung |
nice to get this |
22:49 |
|
whartung |
--Created new J2EETransaction, txId = 225 |
22:50 |
|
whartung |
wish I didn't get this |
22:50 |
|
whartung |
--In J2EETransaction.commit, jtsTx=null nonXAResource=null |
22:50 |
|
whartung |
be nice if that had the txid on it |
22:52 |
|
sfisque |
as an experiment, instead of proxying the execution inside a Runnable, try executing directly. see if that changes anything |
22:52 |
|
whartung |
well, to be honest, I've "fixed it" by using the extra transaction and moving the lock out side |
22:52 |
|
whartung |
that "fixes" the problem |
22:53 |
|
whartung |
but I would like to see the problem manifest |
22:53 |
|
sfisque |
oh, you're trying to replicate it durably? so it was reported, but you havent replicated it in your sandbox? |
22:53 |
|
* sfisque |
is unclear |
22:54 |
|
whartung |
no, I have it replicating consistently here |
22:54 |
|
sfisque |
gotcha |
22:54 |
|
whartung |
I have a fix for it |
22:54 |
|
whartung |
I'm GUESSING as to what's happening |
22:54 |
|
whartung |
I'd like to KNOW |
22:54 |
|
sfisque |
well on that note, i have to pack up and head home. be well and good luck ferreting it out |
22:54 |
|
whartung |
thx |
22:55 |
|
sfisque |
i "know" that feeling :P |
22:55 |
|
whartung |
have a great weekend |
22:55 |
|
sfisque |
code strong! |
23:38 |
|
Autowired |
code fast, code hard, code cool! |
23:39 |
|
Autowired |
und btw, code aweseome |
23:41 |
|
|
sfisque joined ##javaee |
23:42 |
|
|
sfisque1 joined ##javaee |