It's could be due to CMS so I'll create a config with SMS, run 10
times and see if it fails.

On Wed, Aug 19, 2009 at 10:59 AM, Koji Sekiguchi<k...@r.email.ne.jp> wrote:
> OK, now the problem is gone.
>
> Koji
>
> Noble Paul നോബിള്‍ नोब्ळ् wrote:
>>
>> I'm looking into it.
>>
>> I guess I goofed up somewhere
>>
>> 2009/8/19 Rafał Kuć <ra...@alud.com.pl>:
>>
>>>
>>> Hello!
>>>
>>>  Same here, assertion fails on our hudson.
>>>
>>>
>>>
>>>
>>>>
>>>> On Wed, Aug 19, 2009 at 10:07 PM, Koji
>>>> Sekiguchi<k...@r.email.ne.jp> wrote:
>>>>
>>>>>
>>>>> Noble,
>>>>>
>>>>> testExpungeDeletes fails:
>>>>>
>>>>
>>>> oh . It passed twice in my box.is any one else noticing this failure?
>>>>
>>>>>
>>>>> <failure message="null" type="junit.framework.AssertionFailedError">
>>>>> junit.framework.AssertionFailedError: null
>>>>>      at
>>>>>
>>>>> org.apache.solr.update.DirectUpdateHandlerTest.testExpungeDeletes(DirectUpdateHandlerTest.java:303)
>>>>> </failure>
>>>>>
>>>>> Koji
>>>>>
>>>>> no...@apache.org wrote:
>>>>>
>>>>>>
>>>>>> Author: noble
>>>>>> Date: Wed Aug 19 12:21:22 2009
>>>>>> New Revision: 805774
>>>>>>
>>>>>> URL: http://svn.apache.org/viewvc?rev=805774&view=rev
>>>>>> Log:
>>>>>> SOLR-1275: Add expungeDeletes to DirectUpdateHandler2
>>>>>>
>>>>>> Modified:
>>>>>>   lucene/solr/trunk/CHANGES.txt
>>>>>>
>>>>>>
>>>>>>  lucene/solr/trunk/src/common/org/apache/solr/common/params/UpdateParams.java
>>>>>>
>>>>>>
>>>>>>  lucene/solr/trunk/src/java/org/apache/solr/handler/RequestHandlerUtils.java
>>>>>>   lucene/solr/trunk/src/java/org/apache/solr/handler/XMLLoader.java
>>>>>>
>>>>>>
>>>>>>  lucene/solr/trunk/src/java/org/apache/solr/update/CommitUpdateCommand.java
>>>>>>
>>>>>>
>>>>>>  lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
>>>>>>
>>>>>>
>>>>>>  lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
>>>>>>
>>>>>>
>>>>>>  lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java
>>>>>>
>>>>>>
>>>>>>  lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
>>>>>>
>>>>>> Modified: lucene/solr/trunk/CHANGES.txt
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> --- lucene/solr/trunk/CHANGES.txt (original)
>>>>>> +++ lucene/solr/trunk/CHANGES.txt Wed Aug 19 12:21:22 2009
>>>>>> @@ -267,7 +267,9 @@
>>>>>>    HTMLStripStandardTokenizerFactory deprecated. To strip HTML tags,
>>>>>> HTMLStripCharFilter can be used
>>>>>>    with an arbitrary Tokenizer. (koji)
>>>>>>  -68. SOLR-1367: Added callback mechanism for converting DocList to
>>>>>> SolrDocumentList in SolrPluginUtils (gsingers)  +68. SOLR-1367: Added
>>>>>> callback mechanism for converting DocList to SolrDocumentList in
>>>>>> SolrPluginUtils (gsingers)
>>>>>> +
>>>>>> +68. SOLR-1275: Add expungeDeletes to DirectUpdateHandler2 (noble)
>>>>>>   Optimizations
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> lucene/solr/trunk/src/common/org/apache/solr/common/params/UpdateParams.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/common/org/apache/solr/common/params/UpdateParams.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>>
>>>>>> lucene/solr/trunk/src/common/org/apache/solr/common/params/UpdateParams.java
>>>>>> (original)
>>>>>> +++
>>>>>>
>>>>>> lucene/solr/trunk/src/common/org/apache/solr/common/params/UpdateParams.java
>>>>>> Wed Aug 19 12:21:22 2009
>>>>>> @@ -49,4 +49,6 @@
>>>>>>   * If optimizing, set the maximum number of segments left in the
>>>>>> index
>>>>>> after optimization.  1 is the default (and is equivalent to calling
>>>>>> IndexWriter.optimize() in Lucene).
>>>>>>   */
>>>>>>  public static final String MAX_OPTIMIZE_SEGMENTS = "maxSegments";
>>>>>> +
>>>>>> +  public static final String EXPUNGE_DELETES = "expungeDeletes";
>>>>>>  }
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/handler/RequestHandlerUtils.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/RequestHandlerUtils.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/handler/RequestHandlerUtils.java
>>>>>> (original)
>>>>>> +++
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/handler/RequestHandlerUtils.java
>>>>>> Wed Aug 19 12:21:22 2009
>>>>>> @@ -68,6 +68,7 @@
>>>>>>      CommitUpdateCommand cmd = new CommitUpdateCommand( optimize );
>>>>>>      cmd.waitFlush    = params.getBool( UpdateParams.WAIT_FLUSH,
>>>>>>  cmd.waitFlush    );
>>>>>>      cmd.waitSearcher = params.getBool( UpdateParams.WAIT_SEARCHER,
>>>>>> cmd.waitSearcher );
>>>>>> +      cmd.expungeDeletes = params.getBool(
>>>>>> UpdateParams.EXPUNGE_DELETES,
>>>>>> cmd.expungeDeletes);
>>>>>>      cmd.maxOptimizeSegments =
>>>>>> params.getInt(UpdateParams.MAX_OPTIMIZE_SEGMENTS,
>>>>>> cmd.maxOptimizeSegments);
>>>>>>      req.getCore().getUpdateHandler().commit( cmd );
>>>>>>      @@ -101,6 +102,7 @@
>>>>>>      CommitUpdateCommand cmd = new CommitUpdateCommand( optimize );
>>>>>>      cmd.waitFlush    = params.getBool( UpdateParams.WAIT_FLUSH,
>>>>>>  cmd.waitFlush    );
>>>>>>      cmd.waitSearcher = params.getBool( UpdateParams.WAIT_SEARCHER,
>>>>>> cmd.waitSearcher );
>>>>>> +      cmd.expungeDeletes = params.getBool(
>>>>>> UpdateParams.EXPUNGE_DELETES,
>>>>>> cmd.expungeDeletes);             cmd.maxOptimizeSegments =
>>>>>> params.getInt(UpdateParams.MAX_OPTIMIZE_SEGMENTS,
>>>>>> cmd.maxOptimizeSegments);
>>>>>>      processor.processCommit( cmd );
>>>>>>      return true;
>>>>>>
>>>>>> Modified:
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/handler/XMLLoader.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/XMLLoader.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> --- lucene/solr/trunk/src/java/org/apache/solr/handler/XMLLoader.java
>>>>>> (original)
>>>>>> +++ lucene/solr/trunk/src/java/org/apache/solr/handler/XMLLoader.java
>>>>>> Wed
>>>>>> Aug 19 12:21:22 2009
>>>>>> @@ -155,6 +155,8 @@
>>>>>>                sawWaitSearcher = true;
>>>>>>              } else if
>>>>>> (UpdateParams.MAX_OPTIMIZE_SEGMENTS.equals(attrName)) {
>>>>>>                cmd.maxOptimizeSegments = Integer.parseInt(attrVal);
>>>>>> +              } else if
>>>>>> (UpdateParams.EXPUNGE_DELETES.equals(attrName)) {
>>>>>> +                cmd.expungeDeletes = StrUtils.parseBoolean(attrVal);
>>>>>>              } else {
>>>>>>                XmlUpdateRequestHandler.log.warn("unexpected attribute
>>>>>> commit/@" + attrName);
>>>>>>              }
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/CommitUpdateCommand.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/CommitUpdateCommand.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/CommitUpdateCommand.java
>>>>>> (original)
>>>>>> +++
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/CommitUpdateCommand.java
>>>>>> Wed Aug 19 12:21:22 2009
>>>>>> @@ -23,6 +23,7 @@
>>>>>>  public boolean optimize;
>>>>>>  public boolean waitFlush;
>>>>>>  public boolean waitSearcher=true;
>>>>>> +  public boolean expungeDeletes = false;
>>>>>>    /**
>>>>>>   * During optimize, optimize down to <= this many segments.  Must be
>>>>>> >=
>>>>>> 1
>>>>>> @@ -39,6 +40,7 @@
>>>>>>    return "commit(optimize="+optimize
>>>>>>            +",waitFlush="+waitFlush
>>>>>>            +",waitSearcher="+waitSearcher
>>>>>> +            +",expungeDeletes="+expungeDeletes
>>>>>>            +')';
>>>>>>  }
>>>>>>  }
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
>>>>>> (original)
>>>>>> +++
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
>>>>>> Wed Aug 19 12:21:22 2009
>>>>>> @@ -241,9 +241,10 @@
>>>>>>    synchronized (this) {
>>>>>>      pset.clear();
>>>>>>      closeSearcher();  // flush any deletes
>>>>>> -      if (cmd.optimize) {
>>>>>> +      if (cmd.optimize || cmd.expungeDeletes) {
>>>>>>        openWriter();  // writer needs to be open to optimize
>>>>>> -        writer.optimize(cmd.maxOptimizeSegments);
>>>>>> +        if(cmd.optimize) writer.optimize(cmd.maxOptimizeSegments);
>>>>>> +        if(cmd.expungeDeletes)
>>>>>> writer.expungeDeletes(cmd.expungeDeletes);
>>>>>>      }
>>>>>>      closeWriter();
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
>>>>>> (original)
>>>>>> +++
>>>>>>
>>>>>> lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
>>>>>> Wed Aug 19 12:21:22 2009
>>>>>> @@ -130,6 +130,7 @@
>>>>>>  AtomicLong deleteByIdCommandsCumulative= new AtomicLong();
>>>>>>  AtomicLong deleteByQueryCommands= new AtomicLong();
>>>>>>  AtomicLong deleteByQueryCommandsCumulative= new AtomicLong();
>>>>>> +  AtomicLong expungeDeleteCommands = new AtomicLong();
>>>>>>  AtomicLong mergeIndexesCommands = new AtomicLong();
>>>>>>  AtomicLong commitCommands= new AtomicLong();
>>>>>>  AtomicLong optimizeCommands= new AtomicLong();
>>>>>> @@ -382,6 +383,8 @@
>>>>>>      if (cmd.optimize) {
>>>>>>      optimizeCommands.incrementAndGet();
>>>>>> +    } else if (cmd.expungeDeletes) {
>>>>>> +      expungeDeleteCommands.incrementAndGet();
>>>>>>    } else {
>>>>>>      commitCommands.incrementAndGet();
>>>>>>    }
>>>>>> @@ -402,6 +405,10 @@
>>>>>>      }
>>>>>>        closeWriter();
>>>>>> +      if (!cmd.optimize && cmd.expungeDeletes) {
>>>>>> +        openWriter();
>>>>>> +        writer.expungeDeletes();
>>>>>> +      }
>>>>>>        callPostCommitCallbacks();
>>>>>>      if (cmd.optimize) {
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>>
>>>>>> lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java
>>>>>> (original)
>>>>>> +++
>>>>>>
>>>>>> lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java
>>>>>> Wed Aug 19 12:21:22 2009
>>>>>> @@ -153,6 +153,12 @@
>>>>>>    return this;
>>>>>>  }
>>>>>>  +  public UpdateRequest setAction(ACTION action, boolean waitFlush,
>>>>>> boolean waitSearcher, int maxSegments , boolean expungeDeletes) {
>>>>>> +    setAction(action, waitFlush, waitSearcher,maxSegments) ;
>>>>>> +    params.set(UpdateParams.EXPUNGE_DELETES,""+expungeDeletes);
>>>>>> +    return this;
>>>>>> +  }
>>>>>> +
>>>>>>  /**
>>>>>>   * @since Solr 1.4
>>>>>>   */
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
>>>>>> URL:
>>>>>>
>>>>>> http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java?rev=805774&r1=805773&r2=805774&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>>
>>>>>> lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
>>>>>> (original)
>>>>>> +++
>>>>>>
>>>>>> lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
>>>>>> Wed Aug 19 12:21:22 2009
>>>>>> @@ -17,20 +17,32 @@
>>>>>>  package org.apache.solr.update;
>>>>>>  +import java.io.IOException;
>>>>>> +import java.util.ArrayList;
>>>>>>  import java.util.HashMap;
>>>>>> +import java.util.HashSet;
>>>>>> +import java.util.List;
>>>>>>  import java.util.Map;
>>>>>> +import java.util.Set;
>>>>>>  import org.apache.lucene.document.Document;
>>>>>>  import org.apache.lucene.document.Field;
>>>>>>  import org.apache.lucene.document.Field.Index;
>>>>>>  import org.apache.lucene.document.Field.Store;
>>>>>> +import org.apache.lucene.index.IndexReader;
>>>>>> +import org.apache.lucene.index.SegmentReader;
>>>>>> +import org.apache.lucene.index.Term;
>>>>>> +import org.apache.lucene.index.TermEnum;
>>>>>>  import org.apache.solr.common.SolrException;
>>>>>>  import org.apache.solr.common.params.CommonParams;
>>>>>>  import org.apache.solr.common.params.MapSolrParams;
>>>>>>  import org.apache.solr.core.SolrCore;
>>>>>>  import org.apache.solr.request.LocalSolrQueryRequest;
>>>>>>  import org.apache.solr.request.SolrQueryRequest;
>>>>>> +import org.apache.solr.search.SolrIndexReader;
>>>>>> +import org.apache.solr.search.SolrIndexSearcher;
>>>>>>  import org.apache.solr.util.AbstractSolrTestCase;
>>>>>> +import org.apache.solr.util.RefCounted;
>>>>>>  /**
>>>>>>  * @@ -247,6 +259,90 @@
>>>>>>            );
>>>>>>  }
>>>>>>  +  public void testExpungeDeletes() throws Exception {
>>>>>> +    for (int x = 0; x < 3000; x++) {
>>>>>> +      addSimpleDoc(x + "");
>>>>>> +    }
>>>>>> +    SolrCore core = h.getCore();
>>>>>> +    UpdateHandler updater = core.getUpdateHandler();
>>>>>> +    CommitUpdateCommand cmtCmd = new CommitUpdateCommand(false);
>>>>>> +    cmtCmd.waitSearcher = true;
>>>>>> +    updater.commit(cmtCmd);
>>>>>> +
>>>>>> +    List<String> todelete = new ArrayList<String>();
>>>>>> +
>>>>>> +    Set<String> segsdel = new HashSet<String>();
>>>>>> +
>>>>>> +    SegmentReader[] sirs = getSegmentReaders(core);
>>>>>> +    assertTrue(sirs.length > 6);
>>>>>> +    todelete.add(getNthIDTerm(2, sirs[0]));
>>>>>> +    segsdel.add(sirs[0].getSegmentName());
>>>>>> +    +    todelete.add(getNthIDTerm(7, sirs[2]));
>>>>>> +    segsdel.add(sirs[2].getSegmentName());
>>>>>> +    +    todelete.add(getNthIDTerm(4, sirs[5]));
>>>>>> +    segsdel.add(sirs[5].getSegmentName());
>>>>>> +    +    for (String id : todelete) {
>>>>>> +      deleteSimpleDoc(id);
>>>>>> +    }
>>>>>> +    // commit the deletes
>>>>>> +    cmtCmd = new CommitUpdateCommand(false);
>>>>>> +    cmtCmd.waitSearcher = true;
>>>>>> +    updater.commit(cmtCmd);
>>>>>> +    +    // expunge deletes
>>>>>> +    cmtCmd = new CommitUpdateCommand(false);
>>>>>> +    cmtCmd.waitSearcher = true;
>>>>>> +    cmtCmd.expungeDeletes = true;
>>>>>> +    updater.commit(cmtCmd);
>>>>>> +    +    // we'll have fewer segments
>>>>>> +    SegmentReader[] sirs2 = getSegmentReaders(core);
>>>>>> +    assertTrue(sirs.length > sirs2.length);
>>>>>> +    // check the actual segment names
>>>>>> +    for (SegmentReader sr : sirs2) {
>>>>>> +      assertTrue(!segsdel.contains(sr.getSegmentName()));
>>>>>> +    }
>>>>>> +  }
>>>>>> +
>>>>>> +  SegmentReader[] getSegmentReaders(SolrCore core) throws IOException
>>>>>> {
>>>>>> +    RefCounted<SolrIndexSearcher> ref = core.getSearcher(true, true,
>>>>>> null);
>>>>>> +    SolrIndexSearcher is = ref.get();
>>>>>> +    SegmentReader[] segmentReaders = null;
>>>>>> +    try {
>>>>>> +      SolrIndexReader reader = is.getReader();
>>>>>> +      IndexReader[] subreaders = reader.getSequentialSubReaders();
>>>>>> +      segmentReaders = new SegmentReader[subreaders.length];
>>>>>> +      for (int x = 0; x < subreaders.length; x++) {
>>>>>> +        assert subreaders[x] instanceof SolrIndexReader;
>>>>>> +        SolrIndexReader sir = (SolrIndexReader) subreaders[x];
>>>>>> +        SegmentReader sr = (SegmentReader) sir.getWrappedReader();
>>>>>> +        segmentReaders[x] = sr;
>>>>>> +      }
>>>>>> +    } finally {
>>>>>> +      ref.decref();
>>>>>> +    }
>>>>>> +    return segmentReaders;
>>>>>> +  }
>>>>>> +
>>>>>> +  private String getNthIDTerm(int n, IndexReader r) throws
>>>>>> IOException {
>>>>>> +    TermEnum te = r.terms(new Term("id", ""));
>>>>>> +    try {
>>>>>> +      int x = 0;
>>>>>> +      do {
>>>>>> +        if (x >= n) {
>>>>>> +          return te.term().text();
>>>>>> +        }
>>>>>> +        x++;
>>>>>> +      } while (te.next());
>>>>>> +    } finally {
>>>>>> +      te.close();
>>>>>> +    }
>>>>>> +    return null;
>>>>>> +  }
>>>>>> +     private void addSimpleDoc(String id) throws Exception {
>>>>>>    SolrCore core = h.getCore();
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>>
>>> --
>>> Regards,
>>>  Rafał Kuć
>>>
>>>
>>>
>>
>>
>>
>>
>
>

Reply via email to