小编Coo*_*hie的帖子

引起:org.apache.solr.common.SolrException:索引已锁定以便为核心写入

我们正在使用solr4.3与主/从设置,今天我得到以下错误和solr停止响应.可能导致这种情况的原因,

 Caused by: org.apache.solr.common.SolrException: Index locked for write for core XXX
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:821)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:618)
    at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:949)
    at org.apache.solr.core.CoreContainer.create(CoreContainer.java:984)
    at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:597)
    at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:592)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    ... 1 more
Caused by: org.apache.lucene.store.LockObtainFailedException: Index locked for write for core XX        at org.apache.solr.core.SolrCore.initIndex(SolrCore.java:484)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:745)
    ... 13 more
Run Code Online (Sandbox Code Playgroud)

solr

21
推荐指数
2
解决办法
4万
查看次数

用户会话在tomcat上混淆了

我们在IIS7.5之后使用Tomcat 6.29,使用spring,hibernate和struts2框架.我们现在开始注意到服务器会话正在混乱,特别是在Ajax请求中.

关于这个问题的更多细节

  • 用户1请求page1,用户2请求page2.但是user1获得了page2,而user2获得了server1.
  • 会话ID也在变化,但在刷新页面时,会提供正确的页面.
  • 当用户数量很多时,问题似乎更频繁地发生.

任何指向问题根源的指针都会有所帮助,代码运行正常,用户数量较少,并且没有报告此类实例.

编辑

web.xml中

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>bm</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/*Context.xml</param-value>
</context-param>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
  <param-name>encoding</param-name>
  <param-value>UTF-8</param-value>
</init-param>
<init-param>
  <param-name>forceEncoding</param-name>
  <param-value>true</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
  <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

在struts.xml

<result-types>
        <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>
        <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
    </result-types> 

    <interceptors>

        <interceptor name="sessionLoggin" class="com.inrev.bm.interceptor.IRLoggingInterceptor" />
        <interceptor name="appAccess" class="appAccessInterceptor" />

        <interceptor-stack name="newStack">
            <interceptor-ref name="exception"/>
            <interceptor-ref name="alias"/>
            <interceptor-ref name="servletConfig"/>
            <interceptor-ref …
Run Code Online (Sandbox Code Playgroud)

java struts2 thread-safety interceptor struts2-interceptors

4
推荐指数
1
解决办法
4211
查看次数

Struts2和Spring集成线程安全

我们正在使用Struts2-Spring集成,我的所有动作类都实现了SessionAware,示例代码到动作类,它们的弹簧定义如下,

public class IRXxxxAction extends ActionSupport implements SessionAware {
  private Map session;

  public String execute()
  {//}

  public void setSession(Map<String, Object> session)
  {
    this.session = session;
  }
} 
Run Code Online (Sandbox Code Playgroud)

弹簧配置

<bean name="userAction" class="com.IRXxxxAction" >
    <property name="adminDAO" ref="adminDAO" />
</bean>
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,每个自动连线属性将是一个单独的,所以如果以上是真的,无论如何,会话映射是否在两个同时请求之间共享?

问候,

AYUSH

spring struts2

2
推荐指数
1
解决办法
1313
查看次数

Lucene Custom Analyzer用于索引和查询

我正在研究lucene 4.7并尝试迁移我们在solr配置中使用的一个分析器.

 <analyzer> 
  <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>  
    <filter class="solr.WordDelimiterFilterFactory" 
            generateWordParts="1" 
            generateNumberParts="1" 
            catenateWords="1"
            catenateNumbers="1"
            catenateAll="0"
            splitOnCaseChange="0"
            splitOnNumerics="0"
            preserveOriginal="1"
    />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
Run Code Online (Sandbox Code Playgroud)

但是,我只是无法弄清楚如何使用HTMLStripCharFilterFactory和WordDelimiterFilterFactory与上面的配置.另外,对于我在solr中的查询我的分析器如下,我怎样才能在lucene中实现相同的功能.

 <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords.txt"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
Run Code Online (Sandbox Code Playgroud)

lucene solr

2
推荐指数
1
解决办法
2619
查看次数