Emmanuel Bernard
Thu, 29 May 2008 07:56:06 -0700
On May 29, 2008, at 08:59, Sanne Grinovero wrote:
Hi, I'll cut away the questions I don't need to ask more about. 2008/5/29 Emmanuel Bernard <[EMAIL PROTECTED]>:Hi Sanne On May 28, 2008, at 14:01, Sanne Grinovero wrote:[...]1)is it ok in case of a "code revision" to have a commit of >100 files for very trivial changes ( wrong formatting, spelling typos in comments,unused import removals); do I have to warn you before commits of this type? should I leave them all as-is?If you do this massive work, you need to warn people in advance and do it in a day. It essentially means people will have hard time to sync up theircurrent work while you do that. If you cna't then, do it by small batches.Yes I understand that, but no code changes are involved just some comments, imports and "final" changes so I hope not to cause difficult conflicts, if any.How should I proceed? My changes are ready for commit, I just wait for everybody saying it's ok, so I can update first. I've seen Hardy committed this morning; Also if my working this way goes in the way of other developers, I'll just revert them all.
Go ahead
5)static logger: some classes (e.g. org.hibernate.search.engine.QueryLoader) "forget"to declare the Logger as static, if this is intentional I would like toknow more about it. May I fix them all if I find more? Is it because of hot-redeploy? In this case I would need to remove some statics;-)http://www.slf4j.org/faq.html#declared_static But for classes used a lot, I tend to keep the static modifier.Nice I didn't now that; I changed the logger I used for configuration parsing to non-static, looks much better. Also I think DocumentBuilder could benefit from a non-static logger, but it is (also) being used by one static method for a trace; I could a) leave it static b) have the method get it's own logger c) remove the tracing d) convert all using methods from static I would prefer c), or d) but this may create a lot of changes.
You can't do (d) really as one of the static method is used outside, you cannot do (c). We could move static methods to a different class but (a) is easier for now. This is not like it would greatly enhance the software :)
A)defensive copy on public API (FindBugs): FindBugs is complaining about "May expose internal representation by incorporating reference to mutable object" in serveral places. I suppose we can trust our own code, but for example in FullTextQuery setProjection(String... fields) it would be wise to make an own private copy of the data. Too much paranoia? Also it would have some performance cost.What do you want to copy? Projection is essentially a copy already (unless you reference THIS but in this case you want the mutable object). Otherwise,the method parameters are immutable, so this is not a problem.I guess this was not a very good example;) FindBugs is speaking about the Array,a fool user may initialize the arguments as an array, give it to the method, keeping a reference to the array, to later (concurrently?) change the references to other objects or change positions, so having access to Searche's "internal state".My questions is a bit more general, not specifically about this method but aboutus ignoring this FindBugs warning, be aware of it; I suppose it would be too muchparanoia to really change all the dangerous methods, just verifying it isan issue you are aware of; rock solid libraries shouldn't allow it, but it has performance impact.
I am fine with trying to enhance but I will not give up of varargs and provided that a session must not be used in a multithreaded way. I am not sure we should pay the price of copying the array in this case.
Ah sorry I should have looked better, I thought a Lucene Field, not reflection. May I make it final, to enhance readability and to avoid null checks in code?B) there's a STATIC field in SharedReaderProvider: "static Field subReadersField" it is looking quite suspect, is that really meant to be static?Yes it's on purpose, it's a pointer to a Field object, no need to pay thelookup more than once.(initializing it with a static helper method)
Is the load of the SharedReaderProvider class lazy even with the direct reference to it in ReaderProviderFactory? Otherwise that might trigger the exception for no good purpose.
C)Workspace contains many maps to needed objects, all having the same key "DirectoryProvider"; also locks are mantained in an array; Woudn't it be easier to have a single map, returning a container object with all needed stuff; This object could be passed to all other methods instead of the dir.Provider and avoid many more gets on the maps. also some locking code could go "local" in this container class, I've some difficulty in tracking the lock sequences.Go ahead (open a JIRA issue), make sure it does no slow things down - itshouldn't from what I've seen)You mean slow down of development time or Search's performance?
Perf
Sanne
_______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev