| Bug #24957 | MySql.Data.Types.MySqlConversionException is not marked as Serializable. | ||
|---|---|---|---|
| Submitted: | 11 Dec 2006 15:40 | Modified: | 27 Feb 2007 11:24 | 
| Reporter: | John Vanderburg | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / NET | Severity: | S3 (Non-critical) | 
| Version: | 5.0.2 | OS: | Windows (Win XP SP2) | 
| Assigned to: | CPU Architecture: | Any | |
| Tags: | date, exception, remoting, time | ||
   [11 Dec 2006 15:40]
   John Vanderburg        
  
 
   [2 Jan 2007 16:49]
   John Vanderburg        
  Finally had some time to do some testing.  Adding [Serializable] isn't enough.  It also requires a Serialization constructor.  The following works:
using System;
using System.Security.Permissions;
using System.Runtime.Serialization;
namespace MySql.Data.Types
{
	/// <summary>
	/// Summary description for MySqlConversionException.
	/// </summary>
    [Serializable]
	public class MySqlConversionException : ApplicationException
	{
		/// <summary>Ctor</summary>
		public MySqlConversionException(string msg)
			: base(msg)
		{
		}
        [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
        protected MySqlConversionException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }
	}
}
 
   [2 Jan 2007 16:55]
   Tonci Grgin        
  Hi John and thanks for your problem report. For the sake of completeness, please provide following: - NET FW version - Small but complete test case presenting this error - MySQL server version
   [4 Jan 2007 20:19]
   John Vanderburg        
  Tonci: Sorry about that. Here's the version info: MySQL Server version 5.0.27-standard-log via TCP/IP .NET version 2.0.50727 I'll come up with a short program to reproduce the error. I think I can do it using application domains so you won't have to mess with any remoting set issues. I many not be able to get to it until next week, but again the issue isn't critical. Thanks
   [5 Jan 2007 7:46]
   Tonci Grgin        
  OK John, I'm waiting. It is realy hard to tell what's going on without proper test case since, sometimes, one can use choose execution paths/environments not exhibiting error at all.
   [9 Jan 2007 3:59]
   John Vanderburg        
  Programs to recreate issue.
Attachment: bug-24957-example.txt (text/plain), 6.89 KiB.
   [9 Jan 2007 4:07]
   John Vanderburg        
  Tonci:
I've attached a file with programs to recreate the issue.  Follow the instructions in the file on how to split out the two programs and compile them.
The program doesn't do any database access since the issue is with the .NET exception implementation, it just shows what happens when the MySqlConversionException is throw in a remote object.
The issue occurs in following routine of the 2nd (the exe) program.  It should catch the MySqlConversionException that is thrown in the remote application domain, but it doesn't.
Please let me know if you need anything else of have any questions.
Thanks
/// <summary>
/// Call the remote method and tell it to throw MySqlConversionException.
/// We should catch the MySqlConversionException, however, because it doesn't
/// handle serialization, we get a different exception.
/// </summary>
public void BugTest()
{
    Console.WriteLine(_divider);
    Console.WriteLine("     Test using MySqlConversionException");
    Console.WriteLine(_divider);
    try
    {
        // Invoke the method
        _remoteInstance.ThrowIt(false);
        Console.WriteLine("No exception occured in remote method.");
    }
    catch(MySqlConversionException cnvEx)
    {
        Console.WriteLine("MySqlConversionException occured in remote  method.  Message: {0}", cnvEx.Message);
    }
       catch(Exception ex)
       {
          Console.WriteLine("Other occured in remote  method.  Details: {0}", ex);
       }
    }
 
   [15 Jan 2007 6:51]
   Tonci Grgin        
  Thanks John.
   [22 Feb 2007 20:55]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/20421
   [22 Feb 2007 20:56]
   Reggie Burnett        
  Fixed in 5.0.4 and 1.0.10
   [22 Feb 2007 20:57]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/20422
   [27 Feb 2007 11:24]
   MC Brown        
  A note has been added to the 5.0.4 and 1.0.10 changlogs.
   [18 Jul 2016 17:49]
   Martin Sundquist        
  As per John Vanderburg's comment on 2 Jan 2007 it requires a serializable constructor, this was never pushed along with the patch and the problem still remains in the 6.9.9 source code, the new error message gotten from the partial fix is: "The constructor to deserialize an object of type 'MySql.Data.Types.MySqlConversionException' was not found.", could you reopen this bug or should I file a new one ?

