No issue on this from my side it'd be a nice simplification
Fifo has been stale for quite a while now. I would like to get it up and running on current erlang/smartos/ect. In the past 4 years things have changed some and I think Fifo could be simplified. In the beginning Fifo was designed for cloud providers, but with no providers using Fifo anymore there are several parts that could be removed/simplified that in turn could make maintenance easier. Some of these would clearly break compatibility with current versions, but AFAIK I am the only production user so unless somebody else speaks up... I would like to use this issue as a public forum for discussion on if/why the listed items should not be removed/simplified.
Chunter
Howl
Sniffle
Snarl
ZLogin/Docker
Cerberus
FreeBSD
Fifo Python Client
Configuration: SmartOS build: 20200603T203505Z, FIFO v.0.9.3p4 & Chunter v.0.9.3p20
Issue: It seems that each time a new KVM VM is created, Chunter (or rather vmadm) makes a snapshot with name <dataset_image_UUID>@ undefined. This snapshot has a related clone which is actually the root disk of the created VM. Second time when a new VM is created from same dataset image, the snapshot creation fails due to already existing with same name.
Chunter's logs (with debugging enabled) shows:
2020-08-12 09:40:34.540 [debug] <0.2102.0>@vmadm:wait_for_text:206 [vmadm] Command failed: cannot create snapshot 'zones/b8a4ba09-ef63-4ee0-adaf-72cc677d863d@undefined': dataset already exists
My work around is to manually rename the existing snapshot <dataset_image_UUID>@ undefined to <dataset_image_UUID>@vm_name, but that's not an elegant fix at all.
Depends on patches in wiggle: wiggle!2
This fixes the build for Erlang 22. Still needs testing in operation.
Depends on this PR to cowboy_oauth: Project-FiFo/cowboy_oauth!1
This gets things building again
linking this pr Project-FiFo/forks/bcrypt!1 if you want to merge that in to the fork so we don't have to use the github copy
Newer SmartOS versions require the 'xnet' library to be explicitly declared to the linker. While this might not be needed on plain Solaris this is good form non the less (since bcrypt uses symbols from the net library).
@kevinmeziere patched up again and rebased it off of master instead of dev-0.9.4
I think you may have it on your smartos too, but you only would trigger it/the linker when building the full package with gmake smartos. Just doing a plain rebar3 compile will build ok with the unpatched bcrypt. The person who made the PR for the bcrypt library was also using smartos so I don't think it matters. I am using gcc9 for what it's worth but it looks like this was a gcc7 issue from the branch name.
Where there issues with this on omini? On smartos this did not need to be updated.
1.3.1 seems to work ok.
{erlware_commons, "~>1.3.1"},should have a branch
{fifo_lager, ".*", {git, "https://gitlab.com/Project-FiFo/FiFo/fifo_lager.git"}, {branch, "master"}},This brings the build in order for Erlang 22. There are some upstream third party dependencies (bcrypt, bitcask) which have not been released, which we may want to merge into the Fifo forks first so we have copies of them saved.
We could do something like this using CMake: https://gitlab.com/Project-FiFo/forks/erlang-rocksdb/-/blob/master/deps/rocksdb/CMakeLists.txt#L254 to check for thread_local support. I'm concerned about diverging much or any of the rocksdb source code from upstream though. How does the rocksdb code here get maintained, it seems like a good place to use a gitsubmodule here instead of what looks like the rocksdb code is copied over from time to time.
It would be much better if this checked for a flag or version or something but I could not find any documentation on when it was introduced. Right not this is not backwards compatible with datasets before late 2019.
@kevinmeziere here I am trying to get Fifo to build from source and finding your trail of bread crumbs everywhere lol... thanks for these patches. I started working on getting it running on OmniOS a week ago and the only way forward was to build from source. I plan to use OmniOS as my "bootstrapping" / control server(s) so I can install one OmniOS the "normal" way and have all the SmartOS slaves also netboot off of that.
Kevin Meziere (9813b706) at 01 May 06:50
fix up deps
Kevin Meziere (a084ecc2) at 01 May 06:34
update for erl 22