Cinnamon 3.6 Server VM and Client

The newest version of the Cinnamon Enterprise CMS is finished: Cinnamon 3.6

New features

  • Microservice-Change-Trigger: You can configure almost all API requests with a pre- or post-trigger which calls a remote web service with all the parameters available to the server at the respective stage. 
    Possible applications:
    • Blocking of API requests. If the remote service sends a non-OK response at the beginning of a request, the Cinnamon API call will not be executed. Use case: validity checks on documents through third party tools (no need to add Grails plugins to Cinnamon, use any language / tool you want to implement custom features).
    • Enhancement / modification of parameters. Example use case: ensure that all documents have a valid copyright header - if one is missing, add it prior to storing the content in the repository.
    • Trigger render server and other tools: if new content is stored or existing content is updated, you can now start a render server process to generate updated renditions of the content (for example, running a DITA to PDF conversion process which also creates thumbnail images [some customization required])
    • Logging of Cinnamon responses to third party tools / services.
  • Summary-flag: Many parts of the API have been enhanced to accept summary information on content. This way you can use the client application to easily searchable meta data which can be displayed without fetching the complete content of a document or data item.
  • Flag to disable change tracking for system accounts: normally all changes to an object are tracked and the modified date field is updated as well as the modifier data. This caused system accounts (for example the render server) to appear as modifiers on documents where they just updated meta data (thumbnails etc). But when looking at a document, most users want to track human interaction with the content, not modifications by system users. Cinnamon 3.6 allows you to enable / disable this.


Incompatible Changes

Cinnamon server now uses one repository per installation. Handling multi-database multi-tenancy on each request was more trouble than it was worth, and it was never really used by customers.


  • Demo Server VM 3.6.1 (4.7 GByte, includes DITA sample data)
    md5sum: f4c4de6d9ac5bfd21639fe3e01873840
    945f55294c3cafd0f8b32241a0967e0d05b0d70ce2cf6ee \
    4e2b8768bb18db9f66055025b6e4df66ad02ed279833e6fd8cb26f876 \

  • Desktop Client (500 KByte)
    md5sum: c01f77e3ee8f15b12b91e41efc6d5fc3
    bfe340e9c4f4609046eba60c2d20e13cb5d9dcde45a95 \
    6ad8cef7f21c50ce0ab15b411dc94c0edc4b8743ed870d4e9611 \
  • Introductory video for the very first steps once you have downloaded both client and server

The source code for the server and its dependencies is available from the Github repositories:

The source code for the client is available via SourceForge.

The Cinnamon homepage can be found at:


Edit: updated link to new version 3.6.1 (bugfixes, more sample data) AccessControlException: Permission denied:

Exception in thread "main" Permission denied: 
user=publisher, access=EXECUTE, inode="/data/foo/configuration.xml":publisher:publisher:-rw-r--r--
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkTraverse(
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkPermission(


Always a nice error message to waste some time upon - your HDFS user seems to have all the required permissions, the file exists, and still you get the a Permission denied.
In this case, the EXECUTE permission seems to be missing, but that's surely bogus, since you only want to read a single file, not execute it.
Turns out, when accessing a file as a folder, HDFS checks the permission and denies further access because the file cannot be used as a folder. In this case, the code was searching for 
/data/foo/configuration.xml/foo/configuration.xml due to a two pieces of code both appending a part of the path to the final filename.

Hadoop 2.x resources

This posts contains links to further Hadoop resources. download area - contains:

  • Hadoop 2.7.1 compiled  for Raspberry Pi 2 B
  • Image of the Hadoop master node for Raspberry.

Learning Hadoop - my Github repository with code examples

Other resources:

Raspberry Pi 2 case: a comparison of 6 models

Testing Raspberry Pi 2 B enclosures - Gehäuse im Test

So I bought a couple of enclosures for my Raspberry Pi 2 B computers...

Note: the links go to, though those are not affiliate links.

Name Price @ Amazon Comment
Orbital Case - Das runde Gehäuse für den Raspberry Pi - 2. Generation (Dark Black)
17,90€ Would not buy again. This is a complete enclosure, so you cannot connect anything except the back ports. Connecting a power supply is difficult, since only the back ports are accessible. You cannot connect a HDMI cable, so it's only use case is as a ... I don't know. What was I thinking? 

Exclusives High Quality Designer Metall Gehäuse Case für Raspberry Pi+ PLUS und Pi 2 Model B (die neueste Version 2015)
14,99€ Solid metal enclosure, very expensive but nice. Easy to assemble. The metal case is held together with 4 additional screws, so it won't snap open if it falls to the ground.
Exclusives Gehäuse Case für Raspberry Pi Model B + (B Plus) Case und Pi 2 Model B (die neueste Version 2015) -- Three Part Kunststoffgehäuse (Black Sl 9,99€ Plastic box from Raspberry meets Rydges®. Like the metal case, the two plastic parts are fixed with four additional screws. Costs 25% of the Raspberry itself, which is still expensive, but overall well done.
Exclusives Gehäuse Case für Raspberry Pi Model B + (B Plus) Case und Pi 2 Model B (die neueste Version 2015) -- Two Part Kunststoffgehäuse (Black Builder Edition) 9,99€ Another plastic box from Raspberry meets Rydges, this one exposes all connectors to the outside which makes it more suitable for hardware wizards but less resistance to dust entering the enclosure. The two plastic parts snap together and only loosely hold to each other (that is, you can open this case with one hand).

Aukru® NEU 3-in-1 kit Enthält - Raspberry Pi 2 Model B Gehäuse/Case transparent + Netzteil 5V 2000mA Micro usb + 2x Kupfer Kühlkörper Für Raspberry Pi
15,99€ Like the Black Builder case, same openings, but transparent and with a power supply and a screw driver as well as two copper cooling blocks. The screw driver was really useful in assembling all the cases :). Even though it looks exactly like the Black Builder one, this somehow seems more flimsy, and putting the screws in place was more difficult as they tend to get stuck in the plastic.
Eleduino Raspberry Pi 2 Model B and Raspberry Pi Model B+ (B Plus) Metal Gehäuse Case with Cooling Fan Black 18,90€ A black metal case with a cooling fan, but without any instructions on how to assemble this. Looks like you first have to afix the fan, otherwise the Raspberry will block access to the lower pair of screws. But I do not really need the fan, and since I do not know how to connect it to the Raspberry, I skipped on installing it. The case is okay, but if you need a metal case, the 14,99€ version seems better.

Assembly of all cases took only a couple of minutes and was nowhere as difficult as some Amazon reviews suggested. The Raspberry Pi 2 B always fit very well (with the exception of the clear plastic case - it fits well, too, but the screws are not as tight as I would like them to be, so the board may move a little up and down in the case if shaken).

Recommendation: For plastic, use the Black Builder edition of Raspberry meets Rydges. For a metal case, the designer metal case is not bad, but somewhat expensive.


  • Errors

    Descriptions of error messages and possible solutions

  • Little Goblin

    Posts about Little Goblin, the Grails based open source browser game engine and its reference implementation.

    The home page of Little Goblin is