[Bug 1652641] Re: crash in indexer.py, AttributeError: 'NoneType' object has no attribute 'unlink'

Carlo Vanini silhusk at gmail.com
Thu Feb 1 10:22:17 UTC 2018


** Description changed:

  [Impact]
  
  When the apt-xapian-index is already up to date, and under certain
  conditions, update-apt-xapian-index throws an exception.
  
  The index /var/lib/apt-xapian-index is up to date
  Exception ignored in: <bound method ServerProgress.__del__ of
  <axi.indexer.ServerProgress object at 0x7f04a5ae4c18>>
  Traceback (most recent call last):
-   File "/usr/lib/python3/dist-packages/axi/indexer.py", line 306, in __del__
+   File "/usr/lib/python3/dist-packages/axi/indexer.py", line 306, in __del__
  AttributeError: 'NoneType' object has no attribute 'unlink'
  
  This happens more frequently when it is run with nice and ionice, which
  is the case in the cron.weekly/apt-xapian-index cron job.
  
  This is not severe, since the exception is thrown on exit, and depends
  on the way python3 cleans up the environment. Anyway, this leaves a
  socket file behind, and creates noise in cron logs (see comment #2).
  
- The patch keeps a reference to the os.unlink function in the
- ServerProgress instance, such that it has the same lifespan.
+ The patch uses a weakref finalizer in order to remove the socket file.
  
  [Test Case]
  
  * `sudo nice -n 19 ionice -c 3 update-apt-xapian-index --quiet`
  * may need to run 4 times or more
  * no exception is thrown
  
  [Regression Potential]
  
- * If the os module is unloaded anyway and self.os_unlink becomes
- unreachable, we get the same exception again.
+ * If the os module is unloaded anyway and os.unlink becomes unreachable, we get the same exception again.
+ * We import the `weakref` module, which was not used before.
  
  [Other Info]
  
- * There is probably a more "pythonic" way to fix this. For instance,
- avoiding __del__. That requires a larger change.
+ * This description was updated to reflect the changes in the behavior of
+ the patch that was released in Zesty. It still needs sponsoring for
+ Xenial.

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1652641

Title:
  crash in indexer.py, AttributeError: 'NoneType' object has no
  attribute 'unlink'

Status in apt-xapian-index package in Ubuntu:
  Fix Released
Status in apt-xapian-index source package in Xenial:
  Triaged
Status in apt-xapian-index source package in Zesty:
  Fix Released

Bug description:
  [Impact]

  When the apt-xapian-index is already up to date, and under certain
  conditions, update-apt-xapian-index throws an exception.

  The index /var/lib/apt-xapian-index is up to date
  Exception ignored in: <bound method ServerProgress.__del__ of
  <axi.indexer.ServerProgress object at 0x7f04a5ae4c18>>
  Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/axi/indexer.py", line 306, in __del__
  AttributeError: 'NoneType' object has no attribute 'unlink'

  This happens more frequently when it is run with nice and ionice,
  which is the case in the cron.weekly/apt-xapian-index cron job.

  This is not severe, since the exception is thrown on exit, and depends
  on the way python3 cleans up the environment. Anyway, this leaves a
  socket file behind, and creates noise in cron logs (see comment #2).

  The patch uses a weakref finalizer in order to remove the socket file.

  [Test Case]

  * `sudo nice -n 19 ionice -c 3 update-apt-xapian-index --quiet`
  * may need to run 4 times or more
  * no exception is thrown

  [Regression Potential]

  * If the os module is unloaded anyway and os.unlink becomes unreachable, we get the same exception again.
  * We import the `weakref` module, which was not used before.

  [Other Info]

  * This description was updated to reflect the changes in the behavior
  of the patch that was released in Zesty. It still needs sponsoring for
  Xenial.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt-xapian-index/+bug/1652641/+subscriptions



More information about the Ubuntu-sponsors mailing list