Over the weekend the Jenkins build started failing. The error leads me to believe that someone didn’t verify their build before committing code, and that the configuration file now has a problem:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl (create-schema) on project incident-service:
   Execution create-schema of goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl failed:
    Could not parse configuration: file:/var/lib/jenkins/jobs/IncidentService/workspace/target/classes/hibernate.cfg.xml

Except, there were no changes to the code; nothing changed in this file, and it’s been working fine for about a month or two. The environment the build server is on changed however. It cannot get to certain parts of the internet:


jenkins@hudson1:~$ wget http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd
--2011-10-10 10:48:06--  http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd
Resolving www.hibernate.org... 209.132.182.21
Connecting to www.hibernate.org|209.132.182.21|:80... failed: Connection timed out.
Retrying.

It’s not actually able to get to the internet to validate the DTD within that hibernate.cfg.xml file. This should not break our build. It was a source of much frustration for about 4 hours of the day. Various hibernate forums were of limited help.

Apparently it should get it from the jar, rather than the internet, if the jar is available on the class path and the DTD matches. First our DTD was incorrect. Rectified that, and yet it still tried to get it off the internet. WTF?

Turns out the hibernate3-maven-plugin doesn’t include any hibernate jars when it executes.

*le sigh*

Solution is to duplicate the necessary hibernate dependencies for the plugin to have the necessary DTD data available:

<dependencies>
  <!--
    Need to include the following hibernate dependencies so that it can find the DTD
    without having to get it off the internet.
  -->
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>${hibernate.version}</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.0.0.GA</version>
    <exclusions>
      <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
  <dependency>
     <groupId>org.hibernate.javax.persistence</groupId>
     <artifactId>hibernate-jpa-2.0-api</artifactId>
     <version>1.0.0.Final</version>
  </dependency>
</dependencies>

So some context: This is to support preventing the hibernate3-maven-plugin from going to the internet to get the DTD every time it parses that hibernate.cfg.xml file. There’s no data in this file, only a shell of a hibernate.cfg.xml; just enough of a placeholder to keep the hbm2ddl Goal from failing, as we’ll eventually have it build DDL for us.

Content:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
        <!-- specify annotated classes here, because the hbm2ddl plugin isn't capable of searching for them :( -->
    </session-factory>

</hibernate-configuration>

Quite an irritating error for something that seems to actually do nothing. Apparently it does. Stupid XML

 

I know it’s not something you have to do. But when it arrives an entire ay early, would it be that difficult to put it on the truck and deliver it?

Instead, it’s simply “not due for delivery,” and so you keep it. I wish I’d checked before I left work, then I could’ve gone and picked it up, because you’re too lazy to get it to my house today.

If you weren’t better than UPS at smashing boxes for me, I’d have shipped it UPS, and they’d have delivered it a day early.

 

Given the “end of IPv4″ I decided I shouldset up IPv6 on my network and see if I can’t start doing things over that instead. Unfortunately, however, it appears that my DNS server internal to my network, maradns, sucks at IPv6 until version 2.0. Fedora has it at 1.3.something. Debian has it at 1.4. WTF Fedora?

I’ve been working on building MaraDNS 2.0 RPMs for Fedora 13 and 14, but I don’t know the RPM SPEC structure very well. The 2.0 version of MaraDNS has separated the authoritative resolver from the recursive resolver, which is wise. But it means I need to build a spec file that produces two RPMs. I suppose I could build a separate spec file for each one, but that doesn’t seem like the right way to do things.

 

At work I’m dealing with this “Semantic Web” concept thingy. “Web 3.0″ it is called. Frankly I don’t see the point in it yet. The goal is to have the internet also contain data to ensure that computers can find relations in the data and such, not just pages with links that people can browse. One of our projects involves taking unstructured data and mining entities and relationships from it. I’ve picked up a book, the only book, on programming software to (ab)use the semantic web. So far, I am unimpressed. The source code in the book does not match the source code that you can download from the books website. And, the two different packages on the books website (one is just Chapter 2′s code, the other is all the code for the whole book) also had different code, and the “all encompassing” one was even missing the right files needed to run the code!

So yeah, unimpressed.

 

San Antonio absolutely sucks for technology.

It is just about impossible to find hard copies of references or tech books.  I know that the internet is a widely available source, but sometimes you just have to have the paper copies of things. Especially when it comes to older languages like C. ANSI C. Not C#. Not Visual C.net. Not C++. Searching the internet for ANSI C tutorials (or help or examples or whatever) doesn’t net very much. (OMG PUN)

So I looked up a couple books based on reccomendations. There’s an 840 page ‘For Dummies’ book that is supposed to be quite good regarding getting into ANSI C especially coming from other languages. And then a C Reference book that would be useful. Especially when getting into the more in-depth usage of C (since there’s no “javadoc” for the C libraries online, at least that I’ve been able to find.) Of course these are only available in one store up in Austin. Even the library doesn’t know anything about these books.

San Antonio only exists for the Spurs, the Alamo, and the Riverwalk. Oh and the Government/Military and the Medical Center. If you’re not employed in one of those things, you might be mowing the grass (and then blowing the trimmings out into the street for someone else to deal with!!! [but that's a rant for another time])

San Antonio Sucks.

© 2011 Shlrm.org Blag Suffusion theme by Sayontan Sinha