Index: NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- NHibernate.Test/NHibernate.Test.csproj	(revision 4680)
+++ NHibernate.Test/NHibernate.Test.csproj	(working copy)
@@ -546,6 +546,8 @@
     <Compile Include="NHSpecificTest\NH1899\SampleTest.cs" />
     <Compile Include="NHSpecificTest\NH1907\MyType.cs" />
     <Compile Include="NHSpecificTest\NH1907\Fixture.cs" />
+    <Compile Include="NHSpecificTest\NH1908ThreadSafety\Fixture.cs" />
+    <Compile Include="NHSpecificTest\NH1908ThreadSafety\Model.cs" />
     <Compile Include="NHSpecificTest\NH1908\Fixture.cs" />
     <Compile Include="NHSpecificTest\NH1908\Model.cs" />
     <Compile Include="NHSpecificTest\NH473\Child.cs" />
@@ -1958,6 +1960,7 @@
     <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" />
     <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" />
     <Content Include="DynamicEntity\package.html" />
+    <EmbeddedResource Include="NHSpecificTest\NH1908ThreadSafety\Mappings.hbm.xml" />
     <EmbeddedResource Include="NHSpecificTest\NH1908\Mappings.hbm.xml" />
     <EmbeddedResource Include="FilterTest\WrongFilterDefInClass.hbm.xml" />
     <EmbeddedResource Include="FilterTest\SimpleFiltered.hbm.xml" />

Property changes on: NHibernate.Test\NHSpecificTest\NH1908ThreadSafety
___________________________________________________________________
Added: bugtraq:url
   + http://jira.nhibernate.org/browse/%BUGID%
Added: bugtraq:logregex
   + NH-\d+


Index: NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Fixture.cs
===================================================================
--- NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Fixture.cs	(revision 0)
+++ NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Fixture.cs	(revision 0)
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1908ThreadSafety
+{
+	[TestFixture]
+	public class Fixture : BugTestCase
+	{
+        [Test]
+        public void UsingFiltersIsThreadSafe()
+        {
+            var errors = new List<Exception>();
+            var threads = new List<Thread>();
+            for (int i = 0; i < 50; i++)
+            {
+                var thread = new Thread(() =>
+                {
+                    try
+                    {
+                        ScenarioRunningWithMultiThreading();
+                    }
+                    catch (Exception ex)
+                    {
+                        lock (errors)
+                            errors.Add(ex);
+                    }
+                });
+                thread.Start();
+                threads.Add(thread);
+            }
+
+            foreach (var thread in threads)
+            {
+                thread.Join();
+            }
+
+            Assert.AreEqual(0, errors.Count);
+        }
+
+	    private void ScenarioRunningWithMultiThreading()
+	    {
+            using (var session = sessions.OpenSession())
+            {
+                session
+                    .EnableFilter("CurrentOnly")
+                    .SetParameter("date", DateTime.Now);
+
+                session.CreateQuery(
+                   @"
+                select u
+                from Order u
+                    left join fetch u.ActiveOrderLines
+                where
+                    u.Email = :email
+                ")
+                   .SetString("email", "stupid@bugs.com")
+                   .UniqueResult<Order>();
+            }
+	    }
+	}
+}
Index: NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Mappings.hbm.xml
===================================================================
--- NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Mappings.hbm.xml	(revision 0)
+++ NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Mappings.hbm.xml	(revision 0)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+									 assembly="NHibernate.Test"
+									 namespace="NHibernate.Test.NHSpecificTest.NH1908ThreadSafety">
+
+  <class name="Order" table="Orders">
+    <id name="Id" type="Int64" unsaved-value="none">
+      <generator class="assigned"/>
+    </id>
+    <property name="Email" type="String" not-null="true"/>
+    <bag name="ActiveOrderLines" inverse="true" cascade="none" lazy="true"
+         optimistic-lock="false">
+      <key column="OrderId"/>
+      <one-to-many class="OrderLine"/>
+      <filter name="CurrentOnly"/>
+    </bag>
+  </class>
+
+  <class name="OrderLine" discriminator-value="null">
+    <id name="Id" type="Int64" unsaved-value="none">
+      <generator class="assigned"/>
+    </id>
+    <property name="ValidUntil"/>
+    <filter name="CurrentOnly"/>
+  </class>
+
+  <filter-def name="CurrentOnly" condition="ValidUntil > :date">
+    <filter-param name="date" type="DateTime"/>
+  </filter-def>
+</hibernate-mapping>
Index: NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Model.cs
===================================================================
--- NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Model.cs	(revision 0)
+++ NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Model.cs	(revision 0)
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace NHibernate.Test.NHSpecificTest.NH1908ThreadSafety
+{
+    public class Order
+    {
+        public virtual long Id { get; set; }
+        public virtual IList<OrderLine> ActiveOrderLines { get; set;}
+        public virtual string Email { get; set; }
+	}
+
+    public class OrderLine
+    {
+        public virtual long Id { get; set; }
+        public virtual DateTime ValidUntil { get; set; }
+    }
+}
