Kathey Marsden wrote:
David W. Van Couvering wrote:


You also avoid strange behavior such as slightly different SQL States
between client and server,


There is absolutely nothing stopping you from using the same source
property files that we have for server for client messages.  They aren't
java files so don't have the same problems of cloning and can  let you
get the  messages localized without all this controversy  I think.

That's actually not true. The server-side messages are *huge* and are currently not available in derbyclient.jar. Adding them would cause major client bloat (on disk if not at runtime), and only a small percentage of them are shareable. This problem isn't solvable by cutting/pasting code. If I don't want client bloat, I'd have cut/paste all shared messages *and* their translations.

It makes much more sense to migrate shared messages to a common location. This requires a shared code infrastructure.


<snip a whole bunch of stuff about future needs>

In terms of your particular issue, I'd like to challenge that it is as
bad as you say it is.

Why would someone want to run at different patch versions of the same
minor version in the same VM


See my response to Rick.  Nobody wants it they just get it.  It is one
totally unrelated appllication affecting another.

I want to make sure I understand. I think you're saying that there can be situations where there is a VM which gets its classes in some untransparent way. For example, Application A puts its classes in one directory and Application B puts its jars in another directory, and then the VM is configured (somehow) to load classes from the union of these directories. I'm sure there are other examples, but this is the one that comes to mind.

The common thread here is there is an application hosting environment where multiple applications are deployed into the same VM, and if the same jar files are deployed into both applications, then you can not guarantee that a particular instance of a class within these duplicated jars will actually be loaded at runtime, unless you carefully manage your classloading order or using separate classloaders.

It seems to me that in such an environment Derby already has this problem. If Application A is running an embedded database and Application B is running an embedded database, and the Derby jar files for A precede B in the classloading order, then a bug fix in the engine code for B will be shadowed by the code in A. The same is true if two applications are running with the network client and have a separate set of Derby jar files.

So what shared code is introducing is an incremental increase in the environments where such problems already exist, where one application is running with the network client driver and another is running the embedded driver.

It would seem to me the situation where there are two applications both running embedded would be more likely than the network/embedded case. Yet none of us seem to have ever heard anyone complaining that they have encountered this shadowing problem (or I'm sure it would have come up in the context of this discussion). My suspicion is that this is because such an environment is extremely rare, if it exists at all. All application hosting environments I know of use classloaders, and this type of shadowing issue is one of the primary reasons for this.

At any rate, my main point is I don't think that shared code is introducing a major regression to the product.


We need, I think, to discourage jar mixing  by changing the
documentation to encourage application developers to use classloaders to
insulate their application and protect others from it, printing warnings
to the log file when jars are mixed or there is more than one copy or
version of derby in the classpath,  providing a way to print sysinfo to
the log when  classes have been loaded with classloaders and possibly
even deprecating the ability to mix jars if the community wills it
because of the impact on development, but it can't happen overnight like
this.  It is an application developer  education issue and even those
that understand the need for classloaders now  need some notice.


I would be happy to write some information to the log so people know they have mixed versions. This would help with the problem that already exists, and will continue to help when we have shared code.

To your point about "not doing this overnight," I suspect what you're saying is "warn people about it in 10.2 and then do it in 10.3". You also seem to indicate that you feel all the needs for shared code are "future needs."

I'm not convinced of that. I think that, particularly as the community continues to grow, there is a timely need for this that really can't wait another year (assuming six month cycles for minor releases) before it sees the light of day. I am sure I am not the only one who is working on a feature where shared code would help or is needed. I know Rick wants to do this, and I suspect there are others.

I'd like to poll other folks on this list for their own views on this (I'll send it on a separate email to make sure it's called out).

Thanks,

David

begin:vcard
fn:David W Van Couvering
n:Van Couvering;David W
org:Sun Microsystems, Inc.;Database Technology Group
email;internet:[EMAIL PROTECTED]
title:Senior Staff Software Engineer
tel;work:510-550-6819
tel;cell:510-684-7281
x-mozilla-html:TRUE
version:2.1
end:vcard

Reply via email to