diff --git a/README.md b/README.md
index dc9036d9db40ef5f498e007bd6b78a8de8248fb4..c9e8b1364c8bd01a9e5025e2513c1dc6fe0fbed5 100644
--- a/README.md
+++ b/README.md
@@ -31,6 +31,7 @@ You will need to have both snakehouse and satella installed.
 * iterating and writing at the same time from multiple threads
     made safe
 * added `TimeSeries.disable_mmap`
+* `Iterator`'s destructor will emit a warning if you forget to close it explicitly.
 
 ## v0.4.2
 
diff --git a/setup.py b/setup.py
index dfae4b4737d3a160069e0b569b03300cc5f89ef2..eb9c3a079264d317c87203b2bf03cc821df7f536 100644
--- a/setup.py
+++ b/setup.py
@@ -25,7 +25,7 @@ if 'CI' in os.environ:
 
 
 setup(name='tempsdb',
-      version='0.4.3_a3',
+      version='0.4.3_a4',
       packages=['tempsdb'],
       install_requires=['satella>=2.14.21', 'ujson'],
       ext_modules=build([Multibuild('tempsdb', find_pyx('tempsdb')), ],
diff --git a/tempsdb/chunks.pyx b/tempsdb/chunks.pyx
index fba7706605e4181834cf7bc2e525e8d51310a9c3..417c75637917f819c92d5ca8f650bc340117c6e1 100644
--- a/tempsdb/chunks.pyx
+++ b/tempsdb/chunks.pyx
@@ -112,7 +112,7 @@ cdef class Chunk:
 
         if use_descriptor_access:
             self.file_lock_object = threading.Lock()
-            self.mmap = AlternativeMMap(self.file)
+            self.mmap = AlternativeMMap(self.file, self.file_lock_object)
         else:
             try:
                 self.mmap = mmap.mmap(self.file.fileno(), 0)
@@ -368,5 +368,5 @@ cpdef Chunk create_chunk(TimeSeries parent, str path, unsigned long long timesta
     footer[-4:] = b'\x01\x00\x00\x00'   # 1 in little endian
     file.write(footer)
     file.close()
-    return Chunk(parent, path, page_size, )
+    return Chunk(parent, path, page_size, use_descriptor_access=descriptor_based_access)
 
diff --git a/tempsdb/iterators.pyx b/tempsdb/iterators.pyx
index fb864069adf13b9ad217de328621b975aa86d968..4b82ba8153e0764fe212dbec0bba531000b92829 100644
--- a/tempsdb/iterators.pyx
+++ b/tempsdb/iterators.pyx
@@ -1,4 +1,6 @@
 import typing as tp
+import warnings
+
 from .chunks cimport Chunk
 from .series cimport TimeSeries
 import collections
@@ -14,12 +16,17 @@ cdef class Iterator:
     >>>     for timestamp, value in it:
     >>>         ...
 
-    It will close itself automatically.
+    It will close itself automatically via destructor, if you forget to call close.
 
     At most basic this implements an iterator interface, iterating over
     tp.Tuple[int, bytes] - timestamp and data
 
     When you're done call :meth:`~tempsdb.iterators.Iterator.close` to release the resources.
+
+    .. versionadded:: 0.4.3
+
+    A warning will be emitted in the case that destructor has to call
+    :meth:`~tempsdb.iterators.Iterator.close`.
     """
 
     def __init__(self, parent: TimeSeries, start: int, stop: int, chunks: tp.List[Chunk]):
@@ -41,7 +48,9 @@ cdef class Iterator:
         self.close()
 
     def __del__(self):
-        self.close()
+        if not self.closed:
+            warnings.warn('You forgot to close an Iterator. Please close them explicitly!')
+            self.close()
 
     cpdef void close(self):
         """