On 29 mar 2012, at 17:11, David Buck wrote:

> Hi!
> 
> >> > If the limit is the same for all platforms, then the fix
> >> > could be improved to check that each line is smaller than the
> >> > limit before to send it to the target JVM, and properly
> >> > report an error if it isn't. Right now, each platform
> >> > throws an IOException with a platform dependent message.
> >> > Instead, detecting lines exceeding the limit and printing
> >> > a clear message like:
> >> >
> >> > "line 84: Line too long"
> >> >
> >> > would improve the user experience.
> >>
> >> That should be doable. Are we OK with hard-coding the current VM limit
> >> into the client side code?
> >
> > I'm not fond of the idea that the client side "knows" the VM limit.
> > Yes, I recognize that would improve the user experience, but it
> > makes the code more fragile. I don't think there is a client-side
> > query for determining the buffer length. Perhaps you should query
> > Alan Bateman for advice since the attach-on-demand stuff was his
> > creating way back when... He might have some advice...
> 
> I talked with Dan over IM about this, and feel that it is not worth pursuing. 
> There is no obvious interface for a client to dynamically query the limit. 
> And when an exception is thrown, there is no obvious way for the client to 
> distinguish between having sent a string that was too large and some other IO 
> error. Hard coding this value into the client is just asking for trouble. 
> Ideally, jcmd should be inter-operable with multiple versions of the JVM.

It may be possible to use the error messages sent from the VM to the client to 
do this. See the ATTACH_ERROR_* constants in attachListener_solaris.cpp for 
example. Similar things exists on linux, but apparently not for windows. 
Anyway, that would be outside the scope of this fix.

Regards,
/Staffan

Reply via email to