One fix for Quickbooks' enormous QBSearchIndexerError.txt file


This is for Google; it’s apparently a common problem, with no results as far as I can see.




The issue: Quickbooks 2014 (and possibly other editions) generates an enormous file, %TEMP%QBSearchIndexerError.txt, containing reason after reason why something didn’t go write building a search index, and this file can easily grow to fill the hard drive (mine today was almost 100GB).




This is lousy error handling by Intuit, which comes as a surprise to exactly nobody.




In my case, the error said:



Exception raised in IndexData
--Exception Data START--
Time: 11/17/2014 4:53:46 PM
Lucene.Net
checksum mismatch in segments file
   at Lucene.Net.Index.SegmentInfos.Read(Directory directory, String segmentFileName)
   at Lucene.Net.Index.IndexFileDeleter..ctor(Directory directory, IndexDeletionPolicy policy, SegmentInfos segmentInfos, StreamWri
ter infoStream, DocumentsWriter docWriter, HashSet`1 synced)
   at Lucene.Net.Index.IndexWriter.Init(Directory d, Analyzer a, Boolean create, IndexDeletionPolicy deletionPolicy, Int32 maxField
Length, IndexingChain indexingChain, IndexCommit commit)
   at Lucene.Net.Index.IndexWriter..ctor(Directory d, Analyzer a, Boolean create, MaxFieldLength mfl)
   at QBSearchIndexer.SearchDataIndexer.get_Writer()
   at QBSearchIndexer.SearchDataIndexer.WriteDocument(String searchIndexData, String searchStoreData)
   at QBSearchIndexer.SearchDataIndexer.AddDocumentToLuceneDataStore()
   at QBSearchIndexer.SearchDataIndexer.IndexData(Object obj)
--Exception Data END--



… a few bazillion times while it ran through my 100M Quickbooks db file, and since this process normally refreshes every 30 minutes, it doesn’t take long for this to fill the drive. Ugh.




Running a file verify on the .QBW file didn’t make any difference, nor did a rebuild of that same file. Ugh.

For this particular error, the fix was straightforward:




  • Close Quickbooks

  • Delete the %TEMP%QBSearchIndexerError.txt file. If the file is in use, look in Task Manager for dbextclr11 and kill it.


  • In the directory holding your .QBW file and look for the associated SearchIndex folder (such as STEVE.QBW.SearchIndex); delete all the files found there.


  • Launch Quickbooks and nav to Edit:Preferences, then Search → Company Preferences, then click [Update Now]. This ought to rebuild the indexes without error, though it might take a few minutes.


  • Verify that the QBSearchIndexerError.txt file isn’t out of control.




This worked for me, but there are lots of other kinds of errors that may not have the same easy fix. It may be that turning off indexing may be the only real way to address this, save for running the gauntlet with Qiickbooks support



My environment:




  • Quickbooks Pro 2014

  • Windows 7 Professional, 64-bit

  • Running as a non-admin user (no auto-elevate)

  • Single-user QB with the data file on my workstation


  • Source: Unix

Dynamic DNS with EasyDNS and the Fortigate firewall


These instructions are for how to configure Dynamic DNS with the EasyDNS service on the Fortigate 20C firewall (and likely applicable to other models in the line). Though the Fortigate’s web interface supports dynamic DNS, it’s really limited and doesn’t appear to allow what we want.




Instead, we’ll use Secure Shell to connect to the unit and do this from the command line (“FW” in the prompt is the hostname of the firewall):



FW# config system ddns
FW (ddns) # edit 1
FW (1) set ddns-server easydns.com
FW (1) set ddns-domain "mymachine.example.com"
FW (1) set ddns-username "Steve"
FW (1) set ddns-password "YOUR_DDNS_TOKEN"
FW (1) set monitor-interface "wan"


This done, the unit will register IP changes on the monitored interface with EasyDNS.



Note: the intent of this post is only to discuss the Fortigate-specific parts of dynamic DNS, not to provide a comprehensive tutorial. This all assumes that:



  • Your DNS zone is hosted with EasyDNS.com
  • Your zone has dynamic DNS enabled
  • You have enabled dynamic updates for the hostname in question
  • You have generated a valid dynamic DNS token (used instead of a password)


EasyDNS support (via email) has been pretty responsive if their online references aren’t clear, and I was delighted to find that this configuration worked the first time I tried it.



References:




Source: Unix
“The Net interprets censorship as damage and routes around it.” — John Gilmore “The Net interprets bad licenses as damage and forks around it.” — me.