Passing Curiosity: Posts tagged javahttps://passingcuriosity.com
Wed, 01 Apr 2020 00:00:00 UTUsing jgit in-memory with local file system repositorieshttps://passingcuriosity.com/2020/jgit-in-memory-local-file-system/
I’ve recently worked on a project that used jgit to access configuration files in repositories hosted on a GitHub.  For various reasons we’re using jgit’s in-memory support with code that looks a little bit like CloneRemoteRepositoryIntoMemoryAndReadFile.java from jgit-cookbook:

This works more or less how you would expect when REMOTE_URL is genuinely remote (e.g. https:// or user@host:path or similar) but results in NullPointerExceptions with a local repository (e.g. file://, /path, etc.)  We are using local repositories in our integration tests (so that we don’t need to add yet more fragile, uninteresting network service mocking). 

The problem is that Repository subclasses use an instance of FS to access the local file system when required but InMemoryRepository, for superficially understandable reasons, leaves that field null.  If you want your InMemoryRepository to be able to operate with on-disk remotes, you need to supply that FS instance during construction:

Artur Ejsmont on release management at Yahoo!7

Artur is a Senior Software Engineer at Yahoo!7.  I think he said he’s on the platforms team?  The environment within the team is rather different environment than many others – much more in common with release engineering and system administration than in other roles. 

Everything is released and deployed as packages using a suite of tools and formats developed with the Yahoo!  empire.  Packages include (almost) everything: PHP source code, crontabs, configurations, etc. 

Release descriptions (CMR) include:

package versions and clusters

conf and cron changes

database and process management

Joined Team

When he joined the team, the 5 members were responsible for 180 packages (committing to 1-2 dozen packages in an average sprint). 

There was a lack of visibility in not only the state of various packages (deployed versions, build and test status, etc.)  but even which packages there are (commited to SVN but never made it into the package repository). 

Problem with packages lingering without stable releases.  Wanted to be able to recreate environments, etc.  but dependencies not being promoted to stable can make it a pain in the arse to track down specific versions. 

Uncertainty what has to be released

A great deal of manual work to assemble change management requests for releases.  Two days of work at the end of each sprint, trawling through documentation, trackers, SVN, etc. 

Ten different application clusters with different versions of different packages on each. 

Sergey Guzenkov on the Red Hat Summit

They’ll be releasing a major new version of Red Hat Satellite (their management thing) building on Puppet, Foreman, Katello, Pulp, Candlepin. 

RHEL7 release is delayed.  It’ll be based on Fedora 19 and the beta is due in December 2013.  The 7.0 release is expected early next year.  Replacing MySQL with MariaDB; adding MongoDB, nodejs; upgrading a bunch of programming languages; systemd.  Will include client and server support for pNFS – an extension of NFS to be parallel. 

Shaun Domingo on making knife and support play nice

Support get queries about rails apps, etc.  Ask engineers but they are busy, etc.  Support staff should be able to interrogate things. 

Building on top of knife and knifeblock (manage knife configurations).  Plugin allowing support staff to download application keys (to interact with APIs on their behalf), talk to APIs, generate knifeblock configuration and then help resolve issues.