Monday, December 10, 2012

HBase NoServerForRegionException

We have met following error:
12/12/10 12:17:57 INFO ipc.HBaseRPC: Server at xxxxx/172.22.245.48:60020 could not be reached after 1 tries, giving up.
12/12/10 12:17:59 INFO ipc.HBaseRPC: Server at xxxxx/172.22.245.48:60020 could not be reached after 1 tries, giving up.
12/12/10 12:18:01 INFO ipc.HBaseRPC: Server at xxxxx/172.22.245.48:60020 could not be reached after 1 tries, giving up.
12/12/10 12:18:03 INFO ipc.HBaseRPC: Server at xxxxx/172.22.245.48:60020 could not be reached after 1 tries, giving up.
12/12/10 12:18:06 INFO ipc.HBaseRPC: Server at xxxxx/172.22.245.48:60020 could not be reached after 1 tries, giving up.
12/12/10 12:18:09 INFO ipc.HBaseRPC: Server at xxxxx/172.22.245.48:60020 could not be reached after 1 tries, giving up.
12/12/10 12:18:14 INFO ipc.HBaseRPC: Server at xxxxx/172.22.245.48:60020 could not be reached after 1 tries, giving up.

ERROR: org.apache.hadoop.hbase.client.NoServerForRegionException: Unable to find region for stats,,99999999999999 after 7 tries.
In other words it means that region server is not reachable. There is closes information about reason why it's not accessible. When you look in HBase master status server should be listed in dead regions server:

Solution is to check connection to region server. When it's correct restart HBase.

Monday, December 3, 2012

Doxia sink Exception

Following exception appears during site generating.
[INFO] Skipped "About" report, file "index.html" already exists for the English version.
[INFO] Generating "Distribution Management" report.
[WARNING] Deprecated API called - not org.apache.maven.doxia.sink.Sink instance and no SinkFactory available. Please update this plugin.
[INFO] Generating "Issue Tracking" report.
[WARNING] Deprecated API called - not org.apache.maven.doxia.sink.Sink instance and no SinkFactory available. Please update this plugin.
[INFO] Generating "Project Team" report.
[WARNING] Deprecated API called - not org.apache.maven.doxia.sink.Sink instance and no SinkFactory available. Please update this plugin.
[INFO] Generating "Dependency Management" report.
[WARNING] Deprecated API called - not org.apache.maven.doxia.sink.Sink instance and no SinkFactory available. Please update this plugin.
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] 1
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.ArrayIndexOutOfBoundsException: 1
 at org.apache.maven.doxia.module.xhtml.XhtmlSink.tableCell(XhtmlSink.java:791)
 at org.apache.maven.doxia.module.xhtml.XhtmlSink.tableHeaderCell(XhtmlSink.java:777)
 at org.apache.maven.reporting.AbstractMavenReportRenderer.tableHeaderCell(AbstractMavenReportRenderer.java:267)
 at org.apache.maven.reporting.AbstractMavenReportRenderer.tableHeader(AbstractMavenReportRenderer.java:356)
 at org.apache.maven.report.projectinfo.dependencies.renderer.DependencyManagementRenderer.renderDependenciesForScope(DependencyManagementRenderer.java:203)
 at org.apache.maven.report.projectinfo.dependencies.renderer.DependencyManagementRenderer.renderDependenciesForAllScopes(DependencyManagementRenderer.java:158)
 at org.apache.maven.report.projectinfo.dependencies.renderer.DependencyManagementRenderer.renderSectionProjectDependencies(DependencyManagementRenderer.java:149)
 at org.apache.maven.report.projectinfo.dependencies.renderer.DependencyManagementRenderer.renderBody(DependencyManagementRenderer.java:135)
 at org.apache.maven.reporting.AbstractMavenReportRenderer.render(AbstractMavenReportRenderer.java:79)
 at org.apache.maven.report.projectinfo.DependencyManagementReport.executeReport(DependencyManagementReport.java:112)
 at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:190)
 at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:144)
 at org.apache.maven.plugins.site.ReportDocumentRenderer.renderDocument(ReportDocumentRenderer.java:139)
 at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.renderModule(DefaultSiteRenderer.java:269)
 at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render(DefaultSiteRenderer.java:101)
 at org.apache.maven.plugins.site.SiteMojo.renderLocale(SiteMojo.java:133)
 at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:100)
 at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
 at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
 at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
 at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
 at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
 at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

Problem is in maven project info plugin version. When version is 2.1 or lover problem disappears.

Plugin could be configured like this:
<project>
  ...
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.1</version>
        ...
      </plugin>
      ...
    </plugins>
  </reporting>
  ...
</project>

Root of the problem is in version of module doxia-sink-api module which is different in both versions of project info plugin version. In version 1.1 is doxia-sink-api-1.0-alpha-11 and in version 2.2 is doxia-sink-api-1.2.

When you have in pom file dependency on javadoc plugin which itself contains dependency on doxia-sink-api-1.0-alpha-11 than in runtime doxia-sink-api version in project-info-plugin is overridden by version of doxia-sink-api from java doc plugin. So another solution is to upgrade java doc plugin or maven site plugin.

Maven - slow generating "Dependencies" report.

sometimes we have encountered very slow generating of maven site at first glance process was slow down by generating dependency report.
[INFO] Skipped "About" report, file "index.html" already exists for the English version.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Dependency Management" report.
[INFO] Generating "Dependencies" report.
[ERROR] Unable to determine if resource cglib:cglib:jar:2.0.2:compile exists in http://repo1.maven.org/maven2
[ERROR] Unable to determine if resource commons-collections:commons-collections:jar:2.1.1:compile exists in http://repo1.maven.org/maven2
[ERROR] Unable to determine if resource commons-logging:commons-logging:jar:1.0.4:compile exists in http://repo1.maven.org/maven2
[ERROR] Unable to determine if resource cz.xxxxx.xxx.xxx:xxx:jar:1.0.0:compile exists in http://repo1.maven.org/maven2
Problem is in maven dependency plugin. Which try to locate in which repository is artefact located. When there is no valid internet connection (e.g. you use firewall) problem could appears.
If it's your problem there is few ways how to fix it:

1. add runtime property

dependency.locations.enabled=false in commando line like this:
mvn -Ddependency.locations.enabled=false site

2. change pom.xml

or in pom.xml in plugin configuration:
<project>
  ...
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <dependencyLocationsEnabled>
            false
          </dependencyLocationsEnabled>
        </configuration>
      </plugin>
      ...
    </plugins>
  </reporting>
  ...
</project>

3. Run site goal in offline mode

Even build site in offline mode like this:
mvn -o site
In that case you'll see following message in logs:
[WARNING] The parameter 'dependencyLocationsEnabled' is ignored in offline mode.