Using the API, I am adding single mail files, already in the maildir, to the Notmuch database and tagging them. It works, every time, as long as I run it one file at a time. However, if I do it twice, in different processes, at the same time, one file is added and tagged properly, the other is not (totally unfindable by notmuch search). Neither process reports any error, and they both log their actions normally. Actually a third simultaneous process also fails to leave any result in the database. This is in spite of using begin_atomic/end_atomic. I would not have been surprised to get Xapian lock errors, but the database_open returns success, as does the database_begin_atomic. The wrapper around the API for Tcl is very simple, and I can not see any way for that or Tcl itself to cause this sort of problem. Beyond this, I haven't thought of any way to decide if this could be a Notmuch problem or a Xapian problem. The API sequence is: database_open database_begin_atomic database_add_message (next 4 are a for loop) message_get_tags tags_valid tags_move_to_next tags_get message_freeze message_add_tag message_thaw message_maildir_flags_to_tags message_get_filename message_get_message_id database_end_atomic message_destroy database_close database_destroy I didn't realise till it was mostly written, but it is pretty much like add_new() in notmuch-new.c . Eric -- ms fnd in a lbry