If l understand the transaction logger, it is persisting the last
globalIdNumber between JBoss sessions. If thats the case l would agree it
will do the job.

You have a NoLogTxLogger in the package. If someone were to use this
TxLogger we could see the MS SQL Server problem.

Your code in JBossXidFactory.startService() sets the globalIdNumber to zero
if there is no TxLogger. If there is no TxLogger we could also see the MS
SQL Server problem.

Are the NoLogTxLogger or null TxLogger senarios likely to happen?

----- Original Message -----
From: "David Jencks" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, January 06, 2003 4:55 AM
Subject: Re: [JBoss-dev] JBossXidFactory and MS SQL Server


> I probably wont be able to look at this in detail for at least several
> days.  Could you please
>
> 1. look at the transaction logging in jboss 4 to see if that looks like a
> better long-term solution: if I understand the problem you are having the
> logging should also solve it.  I __might__ backport this to 3.2 but almost
> certainly not to 3.0.x
>
> 2. indicate which version(s) of jboss your patch is for.
>
> 3. file either a bug report or a patch on sourceforge and assign it to me
> if possible.  Otherwise I am very apt to lose track of this.
>
> Thanks
>
> david jencks
>
>
> On 2003.01.05 14:28:58 -0500 Jamie Burns wrote:
> > David J,
> >
> > back in October we were dialoging about XidFactory and a transaction id
> > problem that could occur if MS SQL Server is not restarted when JBoss is
> > stopped and started. The problem was traced to the XidFactory using the
> > same baseGlobalId and resetting its globalIdNumber to zero each time it
> > is started.
> >
> > Ive made some changes to JBossXidFactory based on our discussion.
> >
> > At the time you asked about looking into a guid that is used in other
> > parts of JBoss as a solution to creating a unique baseGlobalId each time
> > JBoss is started. The org.jboss.util.id package has a GUID class that
> > creates unique ids based on the host address, time stamps and counters.
> > The guid it creates is around 40 characters long and will be unique even
> > for multiple instances of JBoss on the same physical machine.
> >
> > I wasnt sure if you still wanted to keep the hostname in baseGlobalId.
> > Ive kept it in but, its likely it will be truncated alot of the time
> > because of the size of the GUID.
> >
> > The JBossXidFactory sticks to reserving 14 characters for the
> > globalIdNumber. The setter method for baseGlobalId doesnt enforce this.
> > Ive added code to truncate the value passed to the setter if it is too
> > long. Im not sure if this is the best approach though. Truncating the
> > value may remove enough significant characters from the string that it
is
> > no longer unique. Maybe it would be better to throw some exception if
> > the baseGlobalId was set to a string that doesnt leave 14 characters for
> > the globalIdNumber. What is your view on this?
> >
> > In the old XidFactory you had a setter method for the globalIdNumber.
You
> > dont have this in JBossXidFactory so the next comment isnt very
relevant,
> > but l'll make it to be thorough. The globalIdNumber is a long which can
> > be up to 22 digits. My thought with the old XidFactory was that someone
> > could supply a globalIdNumber that was greater than 14 digits. If you
put
> > a setter method for globalIdNumber back into JBossXidFactory or if you
> > get more than 10^14 transactions taking place in the lifetime of a JBoss
> > instance (pretty unlikely l guess) you will have the potential for
> > non-unique transaction ids.
> >
> > One last thing - again to be thorough. The GUID uses the system time a
> > few times to create its unique string. The system time on MS Windows is
> > only accurate to the nearest 10-15 milliseconds. Someone would be pretty
> > unlucky to get two GUIDs that are the same, but it is possible on a
> > Windows machine if they are created within 10-15 ms of each other. If it
> > does happen to someone maybe they will find this posting. I cant see a
> > way to get a 100% guarantee of uniqueness.
> >
> > Ive attached JBossXidFactory with the changes lve made.
> >
> > Let me know if you need anything done.
> >
> > Jamie
> >
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> > <HTML><HEAD>
> > <META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
> > <META content="MSHTML 6.00.2600.0" name=GENERATOR>
> > <STYLE></STYLE>
> > </HEAD>
> > <BODY bgColor=#ffffff>
> > <DIV><FONT face=Arial size=2>David J,</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>back in October we were dialoging about
> > XidFactory
> > and a transaction id problem that could occur if MS SQL Server is not
> > restarted
> > when JBoss is stopped and started. The problem was traced to the
> > XidFactory
> > using the same baseGlobalId and resetting its globalIdNumber to zero
each
> > time
> > it is started.</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>Ive made some changes to JBossXidFactory
> > based on
> > our discussion.</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>At the time you asked about looking into a
> > guid
> > that is used in other parts of JBoss as a solution to creating a unique
> > baseGlobalId each time JBoss is started. The org.jboss.util.id package
> > has a
> > GUID class that creates unique ids based on the host address, time
stamps
> > and
> > counters. The guid it creates is around 40 characters long and will be
> > unique
> > even for multiple instances of JBoss on the same physical
> > machine.</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>I wasnt sure if you still wanted to keep
the
> >
> > hostname in baseGlobalId. Ive kept it in but, its likely it will be
> > truncated
> > alot of the time because of the size of the GUID.</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>The JBossXidFactory sticks to reserving 14
> > characters for the globalIdNumber. The setter method for baseGlobalId
> > doesnt
> > enforce this. Ive added code to truncate the value passed to the setter
> > if it is
> > too long. Im not sure if this is the best approach though. Truncating
the
> > value
> > may remove enough significant characters from the string that it is no
> > longer
> > unique. Maybe it would be better to throw some exception if</FONT></DIV>
> > <DIV><FONT face=Arial size=2>the baseGlobalId was set to a string that
> > doesnt
> > leave 14 characters for the globalIdNumber. </FONT><FONT face=Arial
> > size=2>What
> > is your view on this?</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>In the old XidFactory you had a setter
> > method for
> > the globalIdNumber. You dont have this in JBossXidFactory so the
> > next&nbsp;comment isnt very relevant, but l'll make it to be thorough.
> > The
> > globalIdNumber is a long which can be up to 22 digits. My thought with
> > the old
> > XidFactory was that someone could supply a globalIdNumber that was
> > greater than
> > 14 digits. If you put a setter method for globalIdNumber back into
> > JBossXidFactory or if you get more than 10^14 transactions taking place
> > in the
> > lifetime of a JBoss instance (pretty unlikely l guess) you will have the
> > potential for non-unique transaction ids.</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>One last thing - again to be thorough. The
> > GUID
> > uses the system time a few times to create its unique string. The system
> > time on
> > MS Windows is only accurate to the nearest 10-15 milliseconds. Someone
> > would be
> > pretty unlucky to get two GUIDs that are the same, but it is possible on
> > a
> > Windows machine if they are created within 10-15 ms of each other. If it
> > does
> > happen to someone maybe they will find this posting. I cant see a way to
> > get a
> > 100% guarantee of uniqueness.</FONT></DIV>
> > <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>Ive attached JBossXidFactory with the
> > changes lve
> > made.</FONT></DIV>
> > <DIV>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>Let me know if you need
> > anything&nbsp;done.</FONT></DIV>
> > <DIV>&nbsp;</DIV>
> > <DIV><FONT face=Arial size=2>Jamie</FONT>&nbsp;</DIV></BODY></HTML>
> >
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
>


-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to