2017-08-16 1 views
0

ATG - Endeca ARTアプリケーションで次のようなエラーが発生した場合、ベースラインのアップデートが失敗します。しかし部分的な索引付けは成功です。Endeca - ベースラインの更新に失敗しました - レコードストアからの読み取り中にエラーが発生しました

対応するエラーについてもCASログを添付してください。 CASでは

Aug 15, 2017 12:23:37 PM com.endeca.soleng.eac.toolkit.script.Script runBeanShellScript 
SEVERE: Crawl 'ART-last-mile-crawl' failed with error: Problem running full acquisition on data source for ART-last-mile-crawl: Error reading from Record Store ART-data: malformed input around byte 10. 
Occurred while executing line 11 of valid BeanShell script: 
[[ 

8|  Dgidx.cleanDirs(); 
9| 
10|  // run crawl and archive any changes in dvalId mappings 
11|  CAS.runBaselineCasCrawl("ART-last-mile-crawl"); 
12|  CAS.archiveDvalIdMappingsForCrawlIfChanged("ART-last-mile-crawl"); 
13| 
14|  // archive logs and run the indexer 

]] 

Aug 15, 2017 12:23:37 PM com.endeca.soleng.eac.toolkit.Controller execute 
SEVERE: Caught an exception while invoking method 'run' on object 'BaselineUpdate'. Releasing locks. 
java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 

エラーログです:上記のエラーは、次のことを完了した後に解決された

2017-08-15 12:23:36,485 ERROR [ART-data] [cas-ART-last-mile-crawl-worker-1] com.endeca.itl.recordstore.impl.RecordStoreImpl: Error executing method RecordStoreImpl.readRecords() 
com.endeca.itl.recordstore.RecordStoreException: malformed input around byte 10 
     at com.endeca.itl.recordstore.impl.ReadCursor.read(ReadCursor.java:81) 
     at com.endeca.itl.recordstore.impl.RecordStoreImpl.readRecords(RecordStoreImpl.java:480) 
     at sun.reflect.GeneratedMethodAccessor106.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     at com.endeca.itl.service.ServicePublisher$1.invoke(ServicePublisher.java:121) 
     at com.sun.proxy.$Proxy57.readRecords(Unknown Source) 
     at com.endeca.itl.recordstore.RecordStoreReader.fetchNextChunk(RecordStoreReader.java:267) 
     at com.endeca.itl.recordstore.RecordStoreReader.hasNext(RecordStoreReader.java:244) 
     at com.endeca.itl.extension.source.merger.RecordStoreMergerDataSourceRuntime$RecordStoreReadSession.runFull(RecordStoreMergerDataSourceRuntime.java:252) 
     at com.endeca.itl.extension.source.merger.RecordStoreMergerDataSourceRuntime.runFullAcquisition(RecordStoreMergerDataSourceRuntime.java:148) 
     at com.endeca.itl.util.CasExtensionRegistry$ContextClassLoaderDataSourceExtensionRuntime$2.doWork(CasExtensionRegistry.java:220) 
     at com.endeca.itl.util.CasExtensionRegistry$ContextClassLoaderDataSourceExtensionRuntime$2.doWork(CasExtensionRegistry.java:218) 
     at com.endeca.itl.plugin.ThreadContextRunner.run(ThreadContextRunner.java:136) 
     at com.endeca.itl.plugin.ThreadContextRunner.run(ThreadContextRunner.java:89) 
     at com.endeca.itl.util.CasExtensionRegistry$ContextClassLoaderDataSourceExtensionRuntime.runFullAcquisition(CasExtensionRegistry.java:218) 
     at com.endeca.itl.executor.extension.ExtensionDataSourceProcessor.processRecord(ExtensionDataSourceProcessor.java:104) 
     at com.endeca.itl.executor.extension.IncrementalDataSourceProcessor.processRecord(IncrementalDataSourceProcessor.java:106) 
     at com.endeca.itl.executor.TaskManager$2.work(TaskManager.java:166) 
     at com.endeca.itl.executor.WorkExecutor$WorkRunnable.run(WorkExecutor.java:194) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
     at com.endeca.itl.util.LoggingContextAwareThread.run(LoggingContextAwareThread.java:71) 
Caused by: java.io.UTFDataFormatException: malformed input around byte 10 
     at java.io.DataInputStream.readUTF(DataInputStream.java:656) 
     at java.io.DataInputStream.readUTF(DataInputStream.java:564) 
     at com.endeca.itl.recordstore.impl.storage.RecordStorageEntry.load(RecordStorageEntry.java:114) 

さらにトリアージおよびデバッグする方法上の任意の入力は参考になる

+0

は、破損したデータのようであり、UTF-8を使用して変換できません。この環境で作業していたベースラインか、最近になって開始したのですか? –

+0

お返事ありがとうございます@AjayAgrawal。先日までうまくいきました。 ./recordstore-cmd.sh read-baseline -a ART-data -c偶数レコード数は同じエラーを生成します。 "エラーが発生しました。バイト10の間に不正な入力がありました。" –

+0

サービスを初期化し、正常に動作するかどうかを確認することをお勧めします。レコードストアが壊れているようです。 –

答えて

2

ステップ。

  1. ステップ1 - 次の変更を追加した後、CAS設定をエクスポートしてインポートしました。 <ignoreInvalidRecords>true</ignoreInvalidRecords>

    recordstore-cmd.sh get-configuration -a ART-data -f dataConfig.xml 
    recordstore-cmd.sh set-configuration -a ART-data -f dataConfig.xml 
    
  2. ステップ2 - 同じ変更が<CAS_WS>/workspace/state/ART-data

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <recordStoreConfiguration xmlns="http://recordstore.itl.endeca.com/"> 
        <changePropertyNames/> 
        <idPropertyName>record.id</idPropertyName> 
        <ignoreInvalidRecords>true</ignoreInvalidRecords><!-- newly added --> 
        <jdbmSettings/> 
    </recordStoreConfiguration> 
    
  3. ステップ3の下でレコードストア・コンフィギュレーション・ファイルの存在で作られた - (2日過去)のバックアップと交換したcas_outputフォルダ<Endeca_apps>/ART/data/cas_outputそれは利用可能だった。

上記の手順の後で、インデックス作成はバックエンドから(スクリプトを呼び出すことによって)直接開始されました。この索引付けが成功すると、索引付けがダイナモから呼び出され、同様に成功しました。

関連する問題