From: NHibernate J. <mik...@us...> - 2006-10-27 09:10:28
|
Creating a proxy instance failed --------------------------------- Key: NH-782 URL: http://jira.nhibernate.org/browse/NH-782 Project: NHibernate Type: Bug Components: Core Versions: 1.2.0.Beta1 Reporter: Pawel Pabich Priority: Blocker .NET farmework 2.0 MS Sql Server 2005 This issues is described on the forum: http://forum.hibernate.org/viewtopic.php?t=952999&postdays=0&postorder=asc&start=15 That's how I create my session factory: static DataStore() { sessionFactory = new Configuration().Configure().BuildSessionFactory(); } That's how I create and use my session object public void UpdateX(X newX,) { using (ISession session = sessionFactory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction(IsolationLevel.RepeatableRead)) { // some statements transaction.Commit(); } } } Now when I call UpdateX using two concurrent threads(they use the same session factory but different sessions) I'm getting this error: NHibernate.HibernateException: Creating a proxy instance failed ---> System.ArgumentException: Duplicate type name within an assembly. at System.Reflection.Emit.AssemblyBuilderData.CheckTypeNameConflict(String strTypeName, TypeBuilder enclosingType) at System.Reflection.Emit.TypeBuilder.Init(String fullname, TypeAttributes attr, Type parent, Type[] interfaces, Module module, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType) at System.Reflection.Emit.ModuleBuilder.DefineTypeNoLock(String name, TypeAttributes attr, Type parent, Type[] interfaces) at System.Reflection.Emit.ModuleBuilder.DefineType(String name, TypeAttributes attr, Type parent, Type[] interfaces) at Castle.DynamicProxy.Builder.CodeBuilder.EasyType..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, Boolean serializable) at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateTypeBuilder(String typeName, Type baseType, Type[] interfaces) at Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces) at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces) at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor) at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) --- End of inner exception stack trace --- at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) at NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation) at NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean isNullable) at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner) at NHibernate.Impl.SessionImpl.InitializeEntity(Object obj) at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session) at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes) at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results) at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria) at NHibernate.Impl.CriteriaImpl.List() at NHibernate.Impl.CriteriaImpl.UniqueResult() at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.GetScheduledMessageByMessageIndexInternal(Int64 messageIndex, Boolean fetchRelatedObjects, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 289 at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.DeleteScheduledMessageByMessageIndexInternal(Int64 messageIndex, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 259 at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.UpdateScheduledMessage(ScheduledMessageEntity newMessage, Int32 timeSpan) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 219 at TestConsoleApplication.Program.Update(Object obj) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\TestConsoleApplication\Program.cs:line 219 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.nhibernate.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: NHibernate J. <mik...@us...> - 2006-10-27 09:17:28
|
[ http://jira.nhibernate.org/browse/NH-782?page=all ] Sergey Koshcheyev updated NH-782: --------------------------------- Priority: Major (was: Blocker) Waiting for a new release of DynamicProxy to fix this. > Creating a proxy instance failed > --------------------------------- > > Key: NH-782 > URL: http://jira.nhibernate.org/browse/NH-782 > Project: NHibernate > Type: Bug > Components: Core > Versions: 1.2.0.Beta1 > Reporter: Pawel Pabich > > .NET farmework 2.0 > MS Sql Server 2005 > This issues is described on the forum: > http://forum.hibernate.org/viewtopic.php?t=952999&postdays=0&postorder=asc&start=15 > That's how I create my session factory: > static DataStore() > { > sessionFactory = new Configuration().Configure().BuildSessionFactory(); > } > That's how I create and use my session object > public void UpdateX(X newX,) > { > using (ISession session = sessionFactory.OpenSession()) > { > using (ITransaction transaction = session.BeginTransaction(IsolationLevel.RepeatableRead)) > { > // some statements > transaction.Commit(); > } > } > } > Now when I call UpdateX using two concurrent threads(they use the same session factory but different sessions) I'm getting this error: > NHibernate.HibernateException: Creating a proxy instance failed ---> System.ArgumentException: Duplicate type name within an assembly. > at System.Reflection.Emit.AssemblyBuilderData.CheckTypeNameConflict(String strTypeName, TypeBuilder enclosingType) > at System.Reflection.Emit.TypeBuilder.Init(String fullname, TypeAttributes attr, Type parent, Type[] interfaces, Module module, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType) > at System.Reflection.Emit.ModuleBuilder.DefineTypeNoLock(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at System.Reflection.Emit.ModuleBuilder.DefineType(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeBuilder.EasyType..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, Boolean serializable) > at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateTypeBuilder(String typeName, Type baseType, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces) > at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces) > at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor) > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > --- End of inner exception stack trace --- > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > at NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) > at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation) > at NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean isNullable) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner) > at NHibernate.Impl.SessionImpl.InitializeEntity(Object obj) > at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session) > at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes) > at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria) > at NHibernate.Impl.CriteriaImpl.List() > at NHibernate.Impl.CriteriaImpl.UniqueResult() > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.GetScheduledMessageByMessageIndexInternal(Int64 messageIndex, Boolean fetchRelatedObjects, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 289 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.DeleteScheduledMessageByMessageIndexInternal(Int64 messageIndex, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 259 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.UpdateScheduledMessage(ScheduledMessageEntity newMessage, Int32 timeSpan) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 219 > at TestConsoleApplication.Program.Update(Object obj) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\TestConsoleApplication\Program.cs:line 219 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.nhibernate.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: NHibernate J. <mik...@us...> - 2006-11-02 13:13:34
|
[ http://jira.nhibernate.org/browse/NH-782?page=all ] Sergey Koshcheyev updated NH-782: --------------------------------- Fix Version: 1.2.0.Beta2 1.0.3 Version: 1.0.2 Summary: Update to latest DynamicProxy to fix race condition (was: Creating a proxy instance failed ) > Update to latest DynamicProxy to fix race condition > --------------------------------------------------- > > Key: NH-782 > URL: http://jira.nhibernate.org/browse/NH-782 > Project: NHibernate > Type: Bug > Components: Core > Versions: 1.0.2, 1.2.0.Beta1 > Reporter: Pawel Pabich > Fix For: 1.2.0.Beta2, 1.0.3 > > .NET farmework 2.0 > MS Sql Server 2005 > This issues is described on the forum: > http://forum.hibernate.org/viewtopic.php?t=952999&postdays=0&postorder=asc&start=15 > That's how I create my session factory: > static DataStore() > { > sessionFactory = new Configuration().Configure().BuildSessionFactory(); > } > That's how I create and use my session object > public void UpdateX(X newX,) > { > using (ISession session = sessionFactory.OpenSession()) > { > using (ITransaction transaction = session.BeginTransaction(IsolationLevel.RepeatableRead)) > { > // some statements > transaction.Commit(); > } > } > } > Now when I call UpdateX using two concurrent threads(they use the same session factory but different sessions) I'm getting this error: > NHibernate.HibernateException: Creating a proxy instance failed ---> System.ArgumentException: Duplicate type name within an assembly. > at System.Reflection.Emit.AssemblyBuilderData.CheckTypeNameConflict(String strTypeName, TypeBuilder enclosingType) > at System.Reflection.Emit.TypeBuilder.Init(String fullname, TypeAttributes attr, Type parent, Type[] interfaces, Module module, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType) > at System.Reflection.Emit.ModuleBuilder.DefineTypeNoLock(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at System.Reflection.Emit.ModuleBuilder.DefineType(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeBuilder.EasyType..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, Boolean serializable) > at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateTypeBuilder(String typeName, Type baseType, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces) > at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces) > at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor) > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > --- End of inner exception stack trace --- > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > at NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) > at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation) > at NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean isNullable) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner) > at NHibernate.Impl.SessionImpl.InitializeEntity(Object obj) > at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session) > at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes) > at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria) > at NHibernate.Impl.CriteriaImpl.List() > at NHibernate.Impl.CriteriaImpl.UniqueResult() > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.GetScheduledMessageByMessageIndexInternal(Int64 messageIndex, Boolean fetchRelatedObjects, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 289 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.DeleteScheduledMessageByMessageIndexInternal(Int64 messageIndex, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 259 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.UpdateScheduledMessage(ScheduledMessageEntity newMessage, Int32 timeSpan) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 219 > at TestConsoleApplication.Program.Update(Object obj) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\TestConsoleApplication\Program.cs:line 219 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.nhibernate.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: NHibernate J. <mik...@us...> - 2006-11-02 13:43:30
|
[ http://jira.nhibernate.org/browse/NH-782?page=all ] Sergey Koshcheyev closed NH-782: -------------------------------- Resolution: Fixed > Update to latest DynamicProxy to fix race condition > --------------------------------------------------- > > Key: NH-782 > URL: http://jira.nhibernate.org/browse/NH-782 > Project: NHibernate > Type: Bug > Components: Core > Versions: 1.0.2, 1.2.0.Beta1 > Reporter: Pawel Pabich > Fix For: 1.2.0.Beta2, 1.0.3 > > .NET farmework 2.0 > MS Sql Server 2005 > This issues is described on the forum: > http://forum.hibernate.org/viewtopic.php?t=952999&postdays=0&postorder=asc&start=15 > That's how I create my session factory: > static DataStore() > { > sessionFactory = new Configuration().Configure().BuildSessionFactory(); > } > That's how I create and use my session object > public void UpdateX(X newX,) > { > using (ISession session = sessionFactory.OpenSession()) > { > using (ITransaction transaction = session.BeginTransaction(IsolationLevel.RepeatableRead)) > { > // some statements > transaction.Commit(); > } > } > } > Now when I call UpdateX using two concurrent threads(they use the same session factory but different sessions) I'm getting this error: > NHibernate.HibernateException: Creating a proxy instance failed ---> System.ArgumentException: Duplicate type name within an assembly. > at System.Reflection.Emit.AssemblyBuilderData.CheckTypeNameConflict(String strTypeName, TypeBuilder enclosingType) > at System.Reflection.Emit.TypeBuilder.Init(String fullname, TypeAttributes attr, Type parent, Type[] interfaces, Module module, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType) > at System.Reflection.Emit.ModuleBuilder.DefineTypeNoLock(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at System.Reflection.Emit.ModuleBuilder.DefineType(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeBuilder.EasyType..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, Boolean serializable) > at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateTypeBuilder(String typeName, Type baseType, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces) > at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces) > at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor) > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > --- End of inner exception stack trace --- > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > at NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) > at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation) > at NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean isNullable) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner) > at NHibernate.Impl.SessionImpl.InitializeEntity(Object obj) > at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session) > at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes) > at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria) > at NHibernate.Impl.CriteriaImpl.List() > at NHibernate.Impl.CriteriaImpl.UniqueResult() > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.GetScheduledMessageByMessageIndexInternal(Int64 messageIndex, Boolean fetchRelatedObjects, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 289 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.DeleteScheduledMessageByMessageIndexInternal(Int64 messageIndex, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 259 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.UpdateScheduledMessage(ScheduledMessageEntity newMessage, Int32 timeSpan) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 219 > at TestConsoleApplication.Program.Update(Object obj) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\TestConsoleApplication\Program.cs:line 219 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.nhibernate.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: NHibernate J. <mik...@us...> - 2006-12-06 07:04:40
|
[ http://jira.nhibernate.org/browse/NH-782?page=comments#action_14540 ] tgoffice commented on NH-782: ----------------------------- We use nh 1.0.3.0 but we still get this error? Is a new version of DynamicProxy required (we use 1.1.5.0)? > Update to latest DynamicProxy to fix race condition > --------------------------------------------------- > > Key: NH-782 > URL: http://jira.nhibernate.org/browse/NH-782 > Project: NHibernate > Type: Bug > Components: Core > Versions: 1.0.2, 1.2.0.Beta1 > Reporter: Pawel Pabich > Fix For: 1.2.0.Beta2, 1.0.3 > > .NET farmework 2.0 > MS Sql Server 2005 > This issues is described on the forum: > http://forum.hibernate.org/viewtopic.php?t=952999&postdays=0&postorder=asc&start=15 > That's how I create my session factory: > static DataStore() > { > sessionFactory = new Configuration().Configure().BuildSessionFactory(); > } > That's how I create and use my session object > public void UpdateX(X newX,) > { > using (ISession session = sessionFactory.OpenSession()) > { > using (ITransaction transaction = session.BeginTransaction(IsolationLevel.RepeatableRead)) > { > // some statements > transaction.Commit(); > } > } > } > Now when I call UpdateX using two concurrent threads(they use the same session factory but different sessions) I'm getting this error: > NHibernate.HibernateException: Creating a proxy instance failed ---> System.ArgumentException: Duplicate type name within an assembly. > at System.Reflection.Emit.AssemblyBuilderData.CheckTypeNameConflict(String strTypeName, TypeBuilder enclosingType) > at System.Reflection.Emit.TypeBuilder.Init(String fullname, TypeAttributes attr, Type parent, Type[] interfaces, Module module, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType) > at System.Reflection.Emit.ModuleBuilder.DefineTypeNoLock(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at System.Reflection.Emit.ModuleBuilder.DefineType(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeBuilder.EasyType..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, Boolean serializable) > at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateTypeBuilder(String typeName, Type baseType, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces) > at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces) > at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor) > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > --- End of inner exception stack trace --- > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > at NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) > at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation) > at NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean isNullable) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner) > at NHibernate.Impl.SessionImpl.InitializeEntity(Object obj) > at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session) > at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes) > at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria) > at NHibernate.Impl.CriteriaImpl.List() > at NHibernate.Impl.CriteriaImpl.UniqueResult() > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.GetScheduledMessageByMessageIndexInternal(Int64 messageIndex, Boolean fetchRelatedObjects, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 289 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.DeleteScheduledMessageByMessageIndexInternal(Int64 messageIndex, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 259 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.UpdateScheduledMessage(ScheduledMessageEntity newMessage, Int32 timeSpan) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 219 > at TestConsoleApplication.Program.Update(Object obj) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\TestConsoleApplication\Program.cs:line 219 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.nhibernate.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: NHibernate J. <mik...@us...> - 2006-12-06 07:17:38
|
[ http://jira.nhibernate.org/browse/NH-782?page=comments#action_14542 ] Sergey Koshcheyev commented on NH-782: -------------------------------------- Yes, you should use the one packaged with NHibernate. Castle guys don't change version numbers on DynamicProxy when updating it so blame them for these problems... > Update to latest DynamicProxy to fix race condition > --------------------------------------------------- > > Key: NH-782 > URL: http://jira.nhibernate.org/browse/NH-782 > Project: NHibernate > Type: Bug > Components: Core > Versions: 1.0.2, 1.2.0.Beta1 > Reporter: Pawel Pabich > Fix For: 1.2.0.Beta2, 1.0.3 > > .NET farmework 2.0 > MS Sql Server 2005 > This issues is described on the forum: > http://forum.hibernate.org/viewtopic.php?t=952999&postdays=0&postorder=asc&start=15 > That's how I create my session factory: > static DataStore() > { > sessionFactory = new Configuration().Configure().BuildSessionFactory(); > } > That's how I create and use my session object > public void UpdateX(X newX,) > { > using (ISession session = sessionFactory.OpenSession()) > { > using (ITransaction transaction = session.BeginTransaction(IsolationLevel.RepeatableRead)) > { > // some statements > transaction.Commit(); > } > } > } > Now when I call UpdateX using two concurrent threads(they use the same session factory but different sessions) I'm getting this error: > NHibernate.HibernateException: Creating a proxy instance failed ---> System.ArgumentException: Duplicate type name within an assembly. > at System.Reflection.Emit.AssemblyBuilderData.CheckTypeNameConflict(String strTypeName, TypeBuilder enclosingType) > at System.Reflection.Emit.TypeBuilder.Init(String fullname, TypeAttributes attr, Type parent, Type[] interfaces, Module module, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType) > at System.Reflection.Emit.ModuleBuilder.DefineTypeNoLock(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at System.Reflection.Emit.ModuleBuilder.DefineType(String name, TypeAttributes attr, Type parent, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeBuilder.EasyType..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, Boolean serializable) > at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateTypeBuilder(String typeName, Type baseType, Type[] interfaces) > at Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces) > at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces) > at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor) > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > --- End of inner exception stack trace --- > at NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) > at NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) > at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation) > at NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean isNullable) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) > at NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner) > at NHibernate.Impl.SessionImpl.InitializeEntity(Object obj) > at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session) > at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) > at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes) > at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results) > at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria) > at NHibernate.Impl.CriteriaImpl.List() > at NHibernate.Impl.CriteriaImpl.UniqueResult() > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.GetScheduledMessageByMessageIndexInternal(Int64 messageIndex, Boolean fetchRelatedObjects, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 289 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.DeleteScheduledMessageByMessageIndexInternal(Int64 messageIndex, ISession session) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 259 > at FullTilt.Tools.Services.ScheduledMessage.FTP.PersistentStorage.DataStore.UpdateScheduledMessage(ScheduledMessageEntity newMessage, Int32 timeSpan) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\PersistentStorage\DataStore.cs:line 219 > at TestConsoleApplication.Program.Update(Object obj) in C:\Work\Code\FullTilt\Tools_TableSpam\Services\ScheduledMessage\ScheduledMessage.FTP\TestConsoleApplication\Program.cs:line 219 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.nhibernate.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |