text:
Fixing #209

P.S. I am too new to django cms to figure out how to copy plugin in a test

@yunmanger1 nice, thanks for this!

@yunmanger1 tests added in https://github.com/nephila/djangocms-blog/tree/feature/test_copy_relations
Thank you for spotting this nasty issue

@yunmanger1 your fix has been merged. For reference on how to build copy_relations tests see https://github.com/nephila/djangocms-blog/blob/develop/tests/test_plugins.py#L62-L78
￼

source: gharchive/pull-request

repo: nephila/djangocms-blog

license_type: permissive

license_source: bigquery


text:
Pin taggit version for 0.9

Newly released version 0.24 has some breaking changes

Coverage remained the same at 95.753% when pulling df39e0f6481254fe47cf914fa2ca44362f51e324 on hotfix/taggit into 9890e1332d816eeb26992aafe9b4a9572aba74fb on release/0.9.x.

Coverage remained the same at 95.753% when pulling df39e0f6481254fe47cf914fa2ca44362f51e324 on hotfix/taggit into 9890e1332d816eeb26992aafe9b4a9572aba74fb on release/0.9.x.

Coverage remained the same at 95.753% when pulling df39e0f6481254fe47cf914fa2ca44362f51e324 on hotfix/taggit into 9890e1332d816eeb26992aafe9b4a9572aba74fb on release/0.9.x.

Coverage remained the same at 95.753% when pulling df39e0f6481254fe47cf914fa2ca44362f51e324 on hotfix/taggit into 9890e1332d816eeb26992aafe9b4a9572aba74fb on release/0.9.x.

authors: coveralls yakky


text:
nf-deploy-fn

nf-deploy fn generates the NF Deployment for the respective NFTYpe

Looks like this PR is not in use. If so can you please close this. Thanks @henderiw .

authors: gvbalaji henderiw

repo: nephio-project/nephio

license_source: github-api


text:
Feature Request: Support SES metrics

We are using AWS SES (Simple email service) and would like to extra its metrics.
It does not have any additional dimensions as far as I know and does not have tags as well.

Was already merged and released

source: gharchive/issue

authors: idanto thomaspeitz


text:
Change from linklocal to dhcp doesn't trigger lease renewal

Connecting to a rpi0 device via serial and changing the ipv4_address_method from :linklocal to :dhcp requires an additional manual step to trigger the lease renewal through Nerves.Network.Udhcpc.  Also, there are several errors that follow after calling the renew function on Nerves.Network.Udhcpc manually which should be investigated.
Nerves:           0.7.2
Nerves Bootstrap: 0.6.1
Elixir:           1.5.0
Nerves Network:   0.3.3

Steps to reproduce (rpi0 + Mac OSX 10.12.6)

Setup internet sharing in OSX for the CDC Composite Gadget.

Start the rpi0 up with ipv4_address_method set to :linklocal.

iex> Nerves.Network.setup :usb0, ipv4_address_method: :dhcp
iex> :os.cmd('ip addr') |> IO.puts
(truncated)
2: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    inet 169.254.172.97/16 brd 169.254.255.255 scope global usb0
(truncated)

iex> Nerves.Network.Udhcpc.renew(Process.whereis(Nerves.Udhcpc))

00:02:42.695 [debug] DHCPManager.EventHandler(usb0) ifup

00:02:42.882 [debug] IP Address Changed

00:02:42.887 [debug] Reconfiguring mDNS IP: nil

00:02:42.895 [debug] Start Network Manager

00:02:43.053 [debug] DHCPManager(usb0, dhcp) got event :ifup

00:02:43.091 [debug] udhcpc: deconfigure usb0

00:02:43.111 [debug] DHCPManager.EventHandler(usb0) udhcpc :deconfig
** (exit) exited in: GenServer.call(#PID<0.165.0>, :renew, 5000)
    ** (EXIT) an exception was raised:
        ** (FunctionClauseError) no function clause matching in :supervisor.handle_call/3
            (stdlib) supervisor.erl:402: :supervisor.handle_call(:renew, {#PID<0.96.0>, #Reference<0.3115819352.537133057.142767>}, {:state, {:local, Nerves.Udhcpc}, :one_for_one, [{:child, #PID<0.166.0>, Nerves.Udhcpc.PIDPartition0, {Registry.Partition, :start_link, [Nerves.Udhcpc.PIDPartition0, {:duplicate, Nerves.Udhcpc, 0, 1, Nerves.Udhcpc.KeyPartition0, Nerves.Udhcpc.PIDPartition0, []}]}, :permanent, 5000, :worker, [Registry.Partition]}], :undefined, 3, 5, [], 0, Registry.Supervisor, {:duplicate, Nerves.Udhcpc, 1, [], [{-1, {:duplicate, 1, nil, nil, []}}, {-2, {:duplicate, 1, nil}}]}})
            (stdlib) gen_server.erl:636: :gen_server.try_handle_call/4
            (stdlib) gen_server.erl:665: :gen_server.handle_msg/6
            (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
    (elixir) lib/gen_server.ex:774: GenServer.call/3
iex(7)>
00:02:43.237 [error] GenServer Nerves.Udhcpc terminating
** (FunctionClauseError) no function clause matching in :supervisor.handle_call/3
    (stdlib) supervisor.erl:402: :supervisor.handle_call(:renew, {#PID<0.96.0>, #Reference<0.3115819352.537133057.142767>}, {:state, {:local, Nerves.Udhcpc}, :one_for_one, [{:child, #PID<0.166.0>, Nerves.Udhcpc.PIDPartition0, {Registry.Partition, :start_link, [Nerves.Udhcpc.PIDPartition0, {:duplicate, Nerves.Udhcpc, 0, 1, Nerves.Udhcpc.KeyPartition0, Nerves.Udhcpc.PIDPartition0, []}]}, :permanent, 5000, :worker, [Registry.Partition]}], :undefined, 3, 5, [], 0, Registry.Supervisor, {:duplicate, Nerves.Udhcpc, 1, [], [{-1, {:duplicate, 1, nil, nil, []}}, {-2, {:duplicate, 1, nil}}]}})
    (stdlib) gen_server.erl:636: :gen_server.try_handle_call/4
    (stdlib) gen_server.erl:665: :gen_server.handle_msg/6
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message (from #PID<0.96.0>): :renew
State: {:state, {:local, Nerves.Udhcpc}, :one_for_one, [{:child, #PID<0.166.0>, Nerves.Udhcpc.PIDPartition0, {Registry.Partition, :start_link, [Nerves.Udhcpc.PIDPartition0, {:duplicate, Nerves.Udhcpc, 0, 1, Nerves.Udhcpc.KeyPartition0, Nerves.Udhcpc.PIDPartition0, []}]}, :permanent, 5000, :worker, [Registry.Partition]}], :undefined, 3, 5, [], 0, Registry.Supervisor, {:duplicate, Nerves.Udhcpc, 1, [], [{-1, {:duplicate, 1, nil, nil, []}}, {-2, {:duplicate, 1, nil}}]}}
Client #PID<0.96.0> is alive
    (stdlib) gen.erl:169: :gen.do_call/4
    (elixir) lib/gen_server.ex:771: GenServer.call/3
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
    (elixir) src/elixir.erl:237: :elixir.eval_forms/4
    (iex) lib/iex/evaluator.ex:219: IEx.Evaluator.handle_eval/5
    (iex) lib/iex/evaluator.ex:200: IEx.Evaluator.do_eval/3
    (iex) lib/iex/evaluator.ex:178: IEx.Evaluator.eval/3
    (iex) lib/iex/evaluator.ex:77: IEx.Evaluator.loop/1

00:02:44.132 [error] GenServer #PID<0.176.0> terminating
** (FunctionClauseError) no function clause matching in String.split/3
    (elixir) lib/string.ex:366: String.split(nil, ".", [])
    (nerves_init_gadget) lib/nerves_init_zero/network_manager.ex:41: Nerves.InitGadget.NetworkManager.configure_mdns/1
    (nerves_init_gadget) lib/nerves_init_zero/network_manager.ex:26: Nerves.InitGadget.NetworkManager.handle_info/2
    (stdlib) gen_server.erl:616: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:686: :gen_server.handle_msg/6
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: {:system_registry, :global, %{config: %{network_interface: %{:usb0 => [ipv4_address_method: :dhcp], "usb0" => [ipv4_address_method: :linklocal]}}, state: %{"devices" => %{"platform" => %{"alarmtimer" => %{"driver" => "alarmtimer", "modalias" => "platform:alarmtimer", "seqnum" => "472", "subsystem" => "platform"}, "clocks" => %{"clocks:clock@0" => %{"modalias" => "of:NclockT<NULL>Cfixed-clock", "of_compatible_0" => "fixed-clock", "of_compatible_n" => "1", "of_fullname" => "/clocks/clock@0", "of_name" => "clock", "seqnum" => "470", "subsystem" => "platform"}, "clocks:clock@1" => %{"modalias" => "of:NclockT<NULL>Cfixed-clock", "of_compatible_0" => "fixed-clock", "of_compatible_n" => "1", "of_fullname" => "/clocks/clock@1", "of_name" => "clock", "seqnum" => "469", "subsystem" => "platform"}, "clocks:clock@2" => %{"modalias" => "of:NclockT<NULL>Cfixed-clock", "of_compatible_0" => "fixed-clock", "of_compatible_n" => "1", "of_fullname" => "/clocks/clock@2", "of_name" => "clock", "seqnum" => "468", "subsystem" => "platform"}, "clocks:clock@3" => %{"modalias" => "of:NclockT<NULL>Cfixed-clock", "of_compatible_0" => "fixed-clock", "of_compatible_n" => "1", "of_fullname" => "/clocks/clock@3", "of_name" => "clock", "seqnum" => "467", "subsystem" => "platform"}, "clocks:clock@4" => %{"modalias" => "of:NclockT<NULL>Cfixed-clock", "of_compatible_0" => "fixed-clock", "of_compatible_n" => "1", "of_fullname" => "/clocks/clock@4", "of_name" => "clock", "seqnum" => "466", "subsystem" => "platform"}, "clocks:clock@5" => %{"modalias" => "of:NclockT<NULL>Cfixed-factor-clock", "of_compatible_0" => "fixed-factor-clock", "of_compatible_n" => "1", "of_fullname" => "/clocks/clock@5", "of_name" => "clock", "seqnum" => "465", "subsystem" => "platform"}, "clocks:clock@6" => %{"modalias" => "of:NclockT<NULL>Cfixed-clock", "of_compatible_0" => "fixed-clock", "of_compatible_n" => "1", "of_fullname" => "/clocks/clock@6", "of_name" => "clock", "seqnum" => "464", "subsystem" => "platform"}, "modalias" => "of:NclocksT<NULL>Csimple-bus", "of_compatible_0" => "simple-bus", "of_compatible_n" => "1", "of_fullname" => "/clocks", "of_name" => "clocks", "seqnum" => "471", "subsystem" => "platform"}, "regulatory.0" => %{"modalias" => "platform:regulatory", "seqnum" => "463", "subsystem" => "platform"}, "soc" => %{"20003000.timer" => %{"modalias" => "of:NtimerT<NULL>Cbrcm,bcm2835-system-timer", "of_compatible_0" => "brcm,bcm2835-system-timer", "of_compatible_n" => "1", "of_fullname" => "/soc/timer@7e003000", "of_name" => "timer", "seqnum" => "526", "subsystem" => "platform"}, "20007000.dma" => %{"dma" => %{"dma0chan0" => %{"seqnum" => "503", "subsystem" => "dma"}, "dma0chan1" => %{"seqnum" => "502", "subsystem" => "dma"}, "dma0chan2" => %{"seqnum" => "501", "subsystem" => "dma"}, "dma0chan3" => %{"seqnum" => "500", "subsystem" => "dma"}, "dma0chan4" => %{"seqnum" => "499", "subsystem" => "dma"}, "dma0chan5" => %{"seqnum" => "498", "subsystem" => "dma"}, "dma0chan6" => %{"seqnum" => "497", "subsystem" => "dma"}, "dma0chan7" => %{"seqnum" => "496", "subsystem" => "dma"}, "dma0chan8" => %{"seqnum" => "495", "subsystem" => "dma"}, "dma0chan9" => %{"seqnum" => "494", "subsystem" => "dma"}}, "driver" => "bcm2835-dma", "modalias" => "of:NdmaT<NULL>Cbrcm,bcm2835-dma", "of_compatible_0" => "brcm,bcm2835-dma", "of_compatible_n" => "1", "of_fullname" => "/soc/dma@7e007000", "of_name" => "dma", "seqnum" => "493", "subsystem" => "platform"}, "2000b200.interrupt-controller" => %{"modalias" => "of:Ninterrupt-controllerT<NULL>Cbrcm,bcm2835-armctrl-ic", "of_compatible_0" => "brcm,bcm2835-armctrl-ic", "of_compatible_n" => "1", "of_fullname" => "/soc/interrupt-controller@7e00b200", "of_name" => "interrupt-controller", "seqnum" => "508", "subsystem" => "platform"}, "2000b840.vchiq" => %{"driver" => "bcm2835_vchiq", "modalias" => "of:NvchiqT<NULL>Cbrcm,bcm2835-vchiq", "of_compatible_0" => "brcm,bcm2835-vchiq", "of_compatible_n" => "1", "of_fullname" => "/soc/vchiq", "of_name" => "vchiq", "seqnum" => "473", "subsystem" => "platform"}, "2000b880.mailbox" => %{"driver" => "bcm2835-mbox", "modalias" => "of:NmailboxT<NULL>Cbrcm,bcm2835-mbox", "of_compatible_0" => "brcm,bcm2835-mbox", "of_compatible_n" => "1", "of_fullname" => "/soc/mailbox@7e00b800", "of_name" => "mailbox", "seqnum" => "476", "subsystem" => "platform"}, "20100000.watchdog" => %{"misc" => %{"watchdog" => %{"devname" => "watchdog", "major" => "10", "minor" => "130", "seqnum" => "656", "subsystem" => "misc"}}, "modalias" => "of:NwatchdogT<NULL>Cbrcm,bcm2835-pm-wdt", "of_compatible_0" => "brcm,bcm2835-pm-wdt", "of_compatible_n" => "1", "of_fullname" => "/soc/watchdog@7e100000", "of_name" => "watchdog", "seqnum" => "515", "subsystem" => "platform", "watchdog" => %{"watchdog0" => %{"devname" => "watchdog0", "major" => "253", "minor" => "0", "seqnum" => "657", "subsystem" => "watchdog"}}}, "20104000.rng" => %{"driver" => "bcm2835-rng", "modalias" => "of:NrngT<NULL>Cbrcm,bcm2835-rng", "of_compatible_0" => "brcm,bcm2835-rng", "of_compatible_n" => "1", "of_fullname" => "/soc/rng@7e104000", "of_name" => "rng", "seqnum" => "527", "subsystem" => "platform"}, "20200000.gpio" => %{"driver" => "pinctrl-bcm2835", "gpio" => %{"gpiochip0" => %{"seqnum" => "478", "subsystem" => "gpio"}}, "modalias" => "of:NgpioT<NULL>Cbrcm,bcm2835-gpio", "of_compatible_0" => "brcm,bcm2835-gpio", "of_compatible_n" => "1", "of_fullname" => "/soc/gpio@7e200000", "of_name" => "gpio", "seqnum" => "477", "subsystem" => "platform"}, "20200000.gpiomem" => %{"driver" => "gpiomem-bcm2835", "modalias" => "of:NgpiomemT<NULL>Cbrcm,bcm2835-gpiomem", "of_compatible_0" => "brcm,bcm2835-gpiomem", "of_compatible_n" => "1", "of_fullname" => "/soc/gpiomem", "of_name" => "gpiomem", "seqnum" => "482", "subsystem" => "platform"}, "20201000.uart" => %{"amba_id" => "00241011", "driver" => "uart-pl011", "modalias" => "amba:d00241011", "of_alias_0" => "serial0", "of_alias_1" => "uart0", "of_compatible_0" => "arm,pl011", "of_compatible_1" => "arm,primecell", "of_compatible_n" => "2", "of_fullname" => "/soc/uart@7e201000", "of_name" => "uart", "seqnum" => "506", "subsystem" => "amba", "tty" => %{"ttyAMA0" => %{"devname" => "ttyAMA0", "major" => "204", "minor" => "64", "seqnum" => "507", "subsystem" => "tty"}}}, "20202000.sdhost" => %{"driver" => "sdhost-bcm2835", "mmc_host" => %{"mmc0" => %{"mmc0:1234" => %{"block" => %{"mmcblk0" => %{"devname" => "mmcblk0", "devtype" => "disk", "major" => "179", "minor" => "0", "mmcblk0p1" => %{"devname" => "mmcblk0p1", "devtype" => "partition", "major" => "179", "minor" => "1", "seqnum" => "490", "subsystem" => "block"}, "mmcblk0p2" => %{"devname" => "mmcblk0p2", "devtype" => "partition", "major" => "179", "minor" => "2", "seqnum" => "489", "subsystem" => "block"}, "mmcblk0p3" => %{"devname" => "mmcblk0p3", "devtype" => "partition", "major" => "179", "minor" => "3", "seqnum" => "488", "subsystem" => "block"}, "seqnum" => "487", "subsystem" => "block"}}, "driver" => "mmcblk", "mmc_name" => "SA04G", "mmc_type" => "SD", "modalias" => "mmc:block", "seqnum" => "486", "subsystem" => "mmc"}, "seqnum" => "485", "subsystem" => "mmc_host"}}, "modalias" => "of:NsdhostT<NULL>Cbrcm,bcm2835-sdhost", "of_compatible_0" => "brcm,bcm2835-sdhost", "of_compatible_n" => "1", "of_fullname" => "/soc/sdhost@7e202000", "of_name" => "sdhost", "seqnum" => "484", "subsystem" => "platform"}, "20204000.spi" => %{"driver" => "spi-bcm2835", "modalias" => "of:NspiT<NULL>Cbrcm,bcm2835-spi", "of_alias_0" => "spi0", "of_compatible_0 (truncated)

00:02:46.246 [debug] udhcpc: bound usb0: IP=192.168.2.5, dns="192.168.2.1"

00:02:46.247 [debug] DHCPManager.EventHandler(usb0) udhcpc :bound

00:02:46.326 [debug] IP Address Changed

00:02:46.327 [debug] Reconfiguring mDNS IP: "192.168.2.5"

iex(9)> :os.cmd('ip addr') |> IO.puts
(truncated)
2: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether c6:60:6e:32:f0:93 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.5/24 brd 192.168.2.255 scope global usb0
       valid_lft forever preferred_lft forever
    inet6 fe80::c460:6eff:fe32:f093/64 scope link
       valid_lft forever preferred_lft forever
(truncated)

I believe this will have been fixed with #64 checking right now

authors: ConnorRigby electricshaman


text:
Edits after the new analysis repo

Now we have a new repo for the streamlit apps, some things can be got rid of here.

keep process_viz_data.py  and make edits which were originally in a now-closed PR: i,e #169  #168  #174
delete other streamlit app bits

Thanks for contributing to Nesta's Skills Extractor Library 🙏!
If you have suggested changes to code anywhere outside of the ExtractSkills class, please consult the checklist below.
Checklist ✔🐍:

[ ] I have refactored my code out from notebooks/
[ ] I have checked the code runs
[ ] I have tested the code
[ ] I have run pre-commit and addressed any issues not automatically fixed
[ ] I have merged any new changes from dev
[ ] I have documented the code

[ ] Major functions have docstrings
[ ] Appropriate information has been added to READMEs

[ ] I have explained the feature in this PR or (better) in output/reports/
[ ] I have requested a code review

If you have suggested changes to documentation (and/or the ExtractSkills class), please ALSO consult the checklist below.
Documentation Checklist ✔📚:

[ ] I have run make html in docs
[ ] I have manually reviewed the docs/build/*.html files locally to ensure they have formatted correctly
[ ] I have pushed both relevant files AND their corresponding docs/build/*.html files

@lizgzil - I've made the changes to include only top transversal skills but can't tag you as you opened the PR! Let me know if its ok to merge once you've had a look at the changes.

i think it's been successfully migrated @lizgzil !!

authors: india-kerle lizgzil

license: MIT


text:
ServeStaticModule serves non-existing paths

I'm submitting a...
[ ] Regression
[x] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead post your question on Stack Overflow.

Current behavior
When using the @nestjs/serve-static module, the server serves any path and does not return a 404 error even if the requested resource does not exist.
Project folder structure
.
├── client
│   └── index.hml
├── src
│   ├── app.module.ts

Input Code
// src\app.module.ts
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';

imports: [
  ServeStaticModule.forRoot({ rootPath: join(process.cwd(), 'client') })
],

Testing
Request an existing resource
GET / HTTP/1.1
Host: localhost:3000

Response
HTTP/1.1 200 OK

Request a nonexistent resource
GET /foo HTTP/1.1
Host: localhost:3000

Response
HTTP/1.1 200 OK

Expected behavior
Request a nonexistent resource
GET /foo HTTP/1.1
Host: localhost:3000

Response
HTTP/1.1 404 Not Found

Minimal reproduction of the problem with instructions

nest new testcase
npm install --save @nestjs/serve-static
Import ServeStaticModule.forRoot({ rootPath: join(process.cwd(), 'client') }) in app.module.ts
Create folder testcase/client
Create index file index.html under the testcase/client
npm run start
Make request at curl --location --request GET 'localhost:3000/foo'
Got response HTTP/1.1 200 OK but expected HTTP/1.1 404 Not Found

What is the motivation / use case for changing the behavior?
In general, "serve-static" should follow the usual logic while serving files. If requested resource does not exists, an error is returned. Or in documentation should have a place where described this behavior and provided some instruction for handling that situations.
Environment
Nest version: 7.2.0

For Tooling issues:
- Node version: v12.16.3
- Platform: Windows

Others:

We're tracking this here https://github.com/nestjs/docs.nestjs.com/issues/1153

@kamilmysliwiec Since you referenced that issue here, there's been no activity on that issue other than it getting closed 5 months later.

@kamilmysliwiec Since you referenced that issue here, there's been no activity on that issue other than it getting closed 5 months later.

authors: MaximSagan kamilmysliwiec stovberpv

repo: nestjs/serve-static


text:
Docker buildx workers fail when run inside a sysbox container

I was hoping to use the cache-from and cache-to directives to cache docker layer cache between builds in my CI setup, but ran into an error.
To reproduce:
docker run --runtime=sysbox-runc -it --rm --name test-1 --hostname test-1 ghcr.io/nestybox/ubuntu-focal-systemd-docker:latest

docker buildx create --name mybuilder --use
docker buildx inspect mybuilder --bootstrap

...

error: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: write sysctl key net.ipv4.ping_group_range: write /proc/sys/net/ipv4/ping_group_range: invalid argument: unknown

I suspect this relates to the builder setting a network mode of host.

Was hoping this would fix it, but it doesn't:
docker buildx create --name mybuilder --driver docker-container --driver-opt network=bridge --use

Looks like they worked around this in https://github.com/docker/buildx/pull/887, will test.

@lox, thanks for letting us know. I'll need to look at that fix in more detail but I suspect that it won't be applicable to Sysbox.
Btw, we already have an internal fix for this (as well as other related issues) to enable buildkit within Sysbox containers. We are currently testing most of the buildkit features (which are a few) and expect to have all this released within a few weeks.

Is there any workaround, or can we get the internal fix? I would love to use docker buildx, which seems to currently not be possible.

Thanks, next couple of days works for me. Looking forward to it!

@href, @lox, please pull the latest changes (there are a bunch) and give this one a try again. Let me know if any problem.
Thanks.

I built my own release using 3513b747f52ecaf02a4e1b628795eb66d7330b6a and it seems like the error is still present. Hopefully I'm just doing something wrong.
I used the build instructions found here, copied the binaries to my sysbox host, replaced the binaries in /usr/bin/sysbox and restarted sysbox.service.
For good measure I also restarted my GitLab runner and Docker services.
After failing to get this to work in my runners, I tried he example at the top of this issue. The result is the same everywhere:
admin@test-1:~$ docker buildx create --name mybuilder --use
mybuilder
admin@test-1:~$ docker buildx inspect mybuilder --bootstrap
[+] Building 6.9s (1/1) FINISHED
 => ERROR [internal] booting buildkit                                                                                6.9s
 => => pulling image moby/buildkit:buildx-stable-1                                                                                6.3s
 => => creating container buildx_buildkit_mybuilder0                                                                                0.6s
------
 > [internal] booting buildkit:
------
Name:   mybuilder
Driver: docker-container

Nodes:
Name:     mybuilder0
Endpoint: unix:///var/run/docker.sock
Error:    Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: write sysctl key net.ipv4.ping_group_range: write /proc/sys/net/ipv4/ping_group_range: invalid argument: unknown

I'm pretty sure my version is correct, as you can see in the journal output of my sysbox service:
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 systemd[1]: Started Sysbox container runtime.
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2084996]: sysbox-runc
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2084996]:         edition:         Community Edition (CE)
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2084996]:         version:         0.4.1
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2084996]:         commit:         a8c3e99f2d20f0766b2eddf80ff565d7d6edc03f
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2084996]:         built at:         Tue Feb  1 12:15:24 UTC 2022
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2084996]:         built by:
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2084996]:         oci-specs:         1.0.2-dev
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085002]: sysbox-mgr
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085002]:         edition:         Community Edition (CE)
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085002]:         version:         0.4.1
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085002]:         commit:         d1f8dfc060fbd8f832c33ac10d43c87aa718efdb
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085002]:         built at:         Tue Feb  1 12:16:05 UTC 2022
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085002]:         built by:
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085008]: sysbox-fs
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085008]:         edition:         Community Edition (CE)
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085008]:         version:         0.4.1
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085008]:         commit:         0e5acbf5dad57d621efb401019bc8895ac540d0f
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085008]:         built at:         Tue Feb  1 12:15:52 UTC 2022
Feb 02 21:18:14 lab-shared-ci-runner1-rma1 sh[2085008]:         built by:

/proc/sys/net/ipv4/ping_group_range seems to be unchanged:
root@f2d627e16883:/# ls -lrt /proc/sys/net/ipv4/ping_group_range
-rw-r--r-- 1 root root 0 Feb  2 20:33 /proc/sys/net/ipv4/ping_group_range
root@f2d627e16883:/# cat /proc/sys/net/ipv4/ping_group_range
65534	65534

You did everything right @href, it's my fault as I missed to merge two commits with relevant changes into our public sysbox-fs repo. And, unfortunately, our CI didn't catch this either coz this being a brand-new feature, we haven't updated our ci-jobs to execute the new buildx-specific testcases ...
Thanks for letting me know. I'll have this fixed in a couple of hours.

@href, changes are merged now. Please remember to set sysbox as the default runtime in your /etc/docker/daemon.json by typing the instruction below, otherwise the buildkit container will be created with the regular (oci)runc.
$ sudo ./scr/docker-cfg --default-runtime=sysbox-runc

Thanks, I retried it with the latest build and it worked as expected. Thank you! Looking forward to a release 🙂

@lox, I'll go ahead and close this one now. Please re-open it if have any question.

authors: href lox rodnymolina

repo: nestybox/sysbox


text:
Adding .devcontainer and appending relevant commands to the Makefile

Recently I tried creating a plugin template similar to yours: https://github.com/jahknem/netbox-plugin-template
Your project seems a lot more sophisticated. I think it could be useful to have an additional .devcontainer which could create a dev environment with a functioning netbox installation for testing and developing. To this end I would like to create a pull request which would include this function. Does this seem useful?

@jahknem Yes, a PR would be great.  I was looking at adding that in the future and possibly a docker environment as well.  Please as it as an option in cookiecutter.json

authors: arthanson jahknem


text:
Switch to ramda

We rely on immutable for the application state. However, we need a good utility belt library for handling plain JS objects.
We used lodash until now, but perhaps we should swith to ramda as it has a more functional  interface (with curried functions by default as well as parameter omissions).
Should we drop lodash and switch to ramda? Ramda has more functional-style. @andon what say you?

Yes, sure. We anyway don't have many places where we use lodash at the moment.
The question is if we should go with ramda or lodash-fp. I guess any of them would suffice.
Even though you suggest that we should look into utility lib for handling plain JS object, I think it might be better to try to also use the same lib to help with immutables as well. Seems that ramda has more traction in that direction, so we can go with it.
https://medium.com/@drboolean/lenses-with-immutable-js-9bda85674780

Re. Lenses, they are quite useful when drilling down the application state, but they don't allow you to  up the tree like zippers do.  In  any case, ramda seems to offer good support for fp style work.

authors: andon ognen

repo: netceteragroup/girders-elements

license: mit


text:
Fix broken SDKMAN release

The current default version on SDKMAN is set to 0.0.4, yet only 0.0.5-SNAPSHOT was published. This results in broken downloads for people trying to install your tool. Furthermore, the URL pointing to the 0.0.5-SNAPSHOT distribution was a gzipped tarball, not a zip.
This needs to be rectified as soon as possible please, otherwise this candidate will be removed from SDKMAN.

please remove it.

repo: netdava/jbakery


text:
docker-compose up fails with DB error and I can't access web GUI

Provide a general summary of the issue in the Title above
when including netdisco config snippets, whitespace matters since it's a yaml file
for github issues it really helps if you include the relevant config parts in a codeblock (code fencing)
see the "code" subject on https://guides.github.com/features/mastering-markdown/ for that)
this should preserve spaces in the issue tracker and make troubleshooting quicker
-->
Expected Behavior
When i run docker-compose up, the containers should come up and i shoudl be able to access the web interface.
Current Behavior
When I run docker-compose up, I get the following error.   And I cannot acess the website at https://localhost:5000
netdisco-test docker-compose up
[+] Running 3/0
 ✔ Container netdisco-test-netdisco-postgresql-1  Created                                                                                0.0s
 ✔ Container netdisco-test-netdisco-backend-1     Created                                                                                0.0s
 ✔ Container netdisco-test-netdisco-web-1         Created                                                                                0.0s
Attaching to netdisco-backend-1, netdisco-postgresql-1, netdisco-web-1
netdisco-postgresql-1  | chown: /var/lib/postgresql/data: Permission denied
netdisco-postgresql-1 exited with code 1
netdisco-backend-1     | config watcher: watching /home/netdisco/environments for updates.
netdisco-web-1         | config watcher: watching /home/netdisco/environments for updates.
netdisco-web-1         | 2024/09/03-17:45:53 Starman::Server (type Net::Server::PreFork) starting! pid(13)
netdisco-web-1         | Binding to TCP port 5000 on host * with IPv4
netdisco-web-1         | [21] 2024-09-03 17:46:00  warn App::Netdisco 2.078000 web
netdisco-web-1         | [20] 2024-09-03 17:46:00  warn App::Netdisco 2.078000 web
netdisco-web-1         | [16] 2024-09-03 17:46:00  warn App::Netdisco 2.078000 web
netdisco-web-1         | [17] 2024-09-03 17:46:00  warn App::Netdisco 2.078000 web
netdisco-web-1         | [22] 2024-09-03 17:46:00  warn App::Netdisco 2.078000 web
netdisco-web-1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web-1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web-1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web-1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web-1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web-1         | BEGIN failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web-1         | Child process 16 exited with status 22
netdisco-web-1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web-1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web-1         | BEGIN failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-web-fg line 59.

Possible Solution

Steps to Reproduce (for bugs)
I following the steps in: https://hub.docker.com/r/netdisco/netdisco

mkdir netdisco-test
cd netdisco-test
curl -Ls -o docker-compose.yml https://tinyurl.com/nd2-dockercompose\ndocker-compose up\n
mkdir -p netdisco/{logs,config,nd-site-local}
docker-compose up

Context

I cannot test netdisco for our environment.
Your Environment

netdisco container versions:

netdisco-postgresql:
netdisco-backend:
netdisco-web:

docker engine version:  Docker version 26.1.0-rd, build cca8e72
docker-compose version:  Docker Compose version v2.27.1
host operating system:  mac os x:   sonoma 14.5

I am not sure how to check the postgresql and backend versions.  Here is the relevant output from the docker image ls
(t4i-wired-mac-scripts) ➜  switch_mac_config_info git:(IEDV-2461) ✗ docker image ls
REPOSITORY                                          TAG                    IMAGE ID       CREATED         SIZE
netdisco/netdisco                                   latest-backend         e303ceacaffc   7 days ago      837MB
netdisco/netdisco                                   latest-web             4e8cfcff6652   7 days ago      324MB
netdisco/netdisco                                   latest-postgresql      83f0962f18ae   7 days ago      199MB
## Config info (deployment.yml and docker env settings)
<!--- if possible include all options you added to your deployment.yml file and -->
<!--- your docker environment, since some options can change the behaviour in drastic ways -->

Device information

I am using rancher 1.14.2 on my laptop (not docker directly) as we are not allowed to use docker at our company.    Is this issue on netdisco related to:
https://github.com/rancher-sandbox/rancher-desktop/issues/1209

I got the same issue.

@thatlostboy : the root cause is netdisco-postgresql-1  | chown: /var/lib/postgresql/data: Permission denied, please try the sudo chown -R 901:901 netdisco that you seem to have missed from the instructions
@benjofalanga : yours seems to be a different issue, if it persists can you also post the output from the netdisco-postgresql container?
@bergernetch : please also post logs, preferably in a new issues since there's already a lot going on here.
Sorry nobody got around to look at this for multiple months, Netdisco volunteers are spread quite thin.

@thatlostboy : the root cause is netdisco-postgresql-1 | chown: /var/lib/postgresql/data: Permission denied, please try the sudo chown -R 901:901 netdisco that you seem to have missed from the instructions
@benjofalanga : yours seems to be a different issue, if it persists can you also post the output from the netdisco-postgresql container?
@bergernetch : please also post logs, preferably in a new issues since there's already a lot going on here.
Sorry nobody got around to look at this for multiple months, Netdisco volunteers are spread quite thin.

Hey yes here are the logs from the netdisco-postgresql container
docker logs 8b7dbb5826e5
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
sh: locale: not found
2024-12-20 11:30:56.178 UTC [36] WARNING:  no usable system locales were found
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    pg_ctl -D /var/lib/postgresql/data -l logfile start

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
waiting for server to start....2024-12-20 11:30:57.525 UTC [42] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
2024-12-20 11:30:57.531 UTC [42] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-12-20 11:30:57.551 UTC [43] LOG:  database system was shut down at 2024-12-20 11:30:56 UTC
2024-12-20 11:30:57.559 UTC [42] LOG:  database system is ready to accept connections
 done
server started

/usr/local/bin/docker-entrypoint.sh: sourcing /docker-entrypoint-initdb.d/netdisco-initdb.sh
netdisco-db-entrypoint: configuring Netdisco user and db
CREATE ROLE
netdisco-db-entrypoint: restarting pg privately to container
waiting for server to shut down...2024-12-20 11:30:57.946 UTC [42] LOG:  received fast shutdown request
.2024-12-20 11:30:57.952 UTC [42] LOG:  aborting any active transactions
2024-12-20 11:30:57.954 UTC [42] LOG:  background worker "logical replication launcher" (PID 49) exited with exit code 1
2024-12-20 11:30:57.954 UTC [44] LOG:  shutting down
2024-12-20 11:30:57.999 UTC [42] LOG:  database system is shut down
 done
server stopped
waiting for server to start....2024-12-20 11:30:58.170 UTC [60] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
2024-12-20 11:30:58.170 UTC [60] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2024-12-20 11:30:58.170 UTC [60] LOG:  could not bind IPv6 address "::1": Address not available
2024-12-20 11:30:58.170 UTC [60] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2024-12-20 11:30:58.237 UTC [60] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-12-20 11:30:58.269 UTC [61] LOG:  database system was shut down at 2024-12-20 11:30:57 UTC
2024-12-20 11:30:58.281 UTC [60] LOG:  database system is ready to accept connections
 done
server started
netdisco-db-entrypoint: bringing schema up-to-date
netdisco-db-entrypoint: importing OUI
DELETE 0
COPY 47812
netdisco-db-entrypoint: marking schema as up-to-date
netdisco-db-entrypoint: adding admin user if none exists
INSERT 0 1
netdisco-db-entrypoint: adding session key if none exists
INSERT 0 1
netdisco-db-entrypoint: queueing stats job
INSERT 0 1

waiting for server to shut down...2024-12-20 11:31:07.537 UTC [60] LOG:  received fast shutdown request
.2024-12-20 11:31:07.546 UTC [60] LOG:  aborting any active transactions
2024-12-20 11:31:07.548 UTC [60] LOG:  background worker "logical replication launcher" (PID 67) exited with exit code 1
2024-12-20 11:31:07.549 UTC [62] LOG:  shutting down
2024-12-20 11:31:07.795 UTC [60] LOG:  database system is shut down
 done
server stopped

PostgreSQL init process complete; ready for start up.

2024-12-20 11:31:07.865 UTC [1] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
2024-12-20 11:31:07.865 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-12-20 11:31:07.865 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2024-12-20 11:31:07.887 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-12-20 11:31:07.904 UTC [358] LOG:  database system was shut down at 2024-12-20 11:31:07 UTC
2024-12-20 11:31:07.916 UTC [1] LOG:  database system is ready to accept connections

I have the same problem:
netdisco-web-1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web-1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web-1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web-1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web-1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.

and also to me we interface don't come up.
Permission are fine.
From the postgres docker the logs says:
netdisco-db-entrypoint: starting pg privately to container
waiting for server to start....2024-12-23 16:25:54.586 UTC [8] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
2024-12-23 16:25:54.586 UTC [8] LOG:  listening on IPv6 address "::1", port 5432
2024-12-23 16:25:54.586 UTC [8] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2024-12-23 16:25:54.604 UTC [8] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-12-23 16:25:54.646 UTC [9] LOG:  database system was shut down at 2024-12-23 16:25:40 UTC
2024-12-23 16:25:54.669 UTC [8] LOG:  database system is ready to accept connections
 done
server started
netdisco-db-entrypoint: bringing schema up-to-date
netdisco-db-entrypoint: importing OUI
DELETE 47812
COPY 47812
netdisco-db-entrypoint: marking schema as up-to-date
netdisco-db-entrypoint: adding admin user if none exists
netdisco-db-entrypoint: adding session key if none exists
netdisco-db-entrypoint: queueing stats job
INSERT 0 1
waiting for server to shut down....2024-12-23 16:26:05.386 UTC [8] LOG:  received fast shutdown request
netdisco-db-entrypoint: shutting down pg (will restart, listening for clients)
2024-12-23 16:26:05.406 UTC [8] LOG:  aborting any active transactions
2024-12-23 16:26:05.408 UTC [8] LOG:  background worker "logical replication launcher" (PID 15) exited with exit code 1
2024-12-23 16:26:05.408 UTC [10] LOG:  shutting down
2024-12-23 16:26:05.552 UTC [8] LOG:  database system is shut down
 done
server stopped

PostgreSQL Database directory appears to contain a database; Skipping initialization

2024-12-23 16:26:05.676 UTC [1] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
2024-12-23 16:26:05.676 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-12-23 16:26:05.676 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2024-12-23 16:26:05.705 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-12-23 16:26:05.748 UTC [316] LOG:  database system was shut down at 2024-12-23 16:26:05 UTC
2024-12-23 16:26:05.769 UTC [1] LOG:  database system is ready to accept connections

@bergernetch : please also post logs, preferably in a new issues since there's already a lot going on here.

I am unable to provide more logs, got it running somehow but do not remember how..

Sorry nobody got around to look at this for multiple months, Netdisco volunteers are spread quite thin.

That is understandable, thanks for checking it at all!

yes that's a bit the trouble here, everything that people post looks somewhat normal. The postgres container has a bit on startup that launches it without listening to network requests, during which potentially a schema upgrade is performed. This leads to some error messages of the other containers, but eventually it should resolve and the web interface starts accepting requests.
Here is a full example what a normal first start looks like:
Creating network "ndd8_default" with the default driver
Creating ndd8_netdisco-postgresql_1 ... done
Creating ndd8_netdisco-backend_1    ... done
Creating ndd8_netdisco-web_1        ... done
Attaching to ndd8_netdisco-postgresql_1, ndd8_netdisco-web_1, ndd8_netdisco-backend_1
netdisco-postgresql_1  | The files belonging to this database system will be owned by user "postgres".
netdisco-postgresql_1  | This user must also own the server process.
netdisco-postgresql_1  |
netdisco-postgresql_1  | The database cluster will be initialized with locale "en_US.utf8".
netdisco-postgresql_1  | The default database encoding has accordingly been set to "UTF8".
netdisco-postgresql_1  | The default text search configuration will be set to "english".
netdisco-postgresql_1  |
netdisco-postgresql_1  | Data page checksums are disabled.
netdisco-postgresql_1  |
netdisco-postgresql_1  | fixing permissions on existing directory /var/lib/postgresql/data ... ok
netdisco-postgresql_1  | creating subdirectories ... ok
netdisco-postgresql_1  | selecting dynamic shared memory implementation ... posix
netdisco-postgresql_1  | selecting default max_connections ... 100
netdisco-postgresql_1  | selecting default shared_buffers ... 128MB
netdisco-postgresql_1  | selecting default time zone ... UTC
netdisco-postgresql_1  | creating configuration files ... ok
netdisco-postgresql_1  | running bootstrap script ... ok
netdisco-postgresql_1  | performing post-bootstrap initialization ... sh: locale: not found
netdisco-postgresql_1  | 2024-12-23 22:43:29.000 UTC [35] WARNING:  no usable system locales were found
netdisco-backend_1     | config watcher: watching /home/netdisco/environments for updates.
netdisco-web_1         | config watcher: watching /home/netdisco/environments for updates.
netdisco-web_1         | 2024/12/23-22:43:29 Starman::Server (type Net::Server::PreFork) starting! pid(8)
netdisco-web_1         | Binding to TCP port 5000 on host * with IPv4
netdisco-postgresql_1  | ok
netdisco-postgresql_1  | syncing data to disk ... initdb: warning: enabling "trust" authentication for local connections
netdisco-postgresql_1  | You can change this by editing pg_hba.conf or using the option -A, or
netdisco-postgresql_1  | --auth-local and --auth-host, the next time you run initdb.
netdisco-postgresql_1  | ok
netdisco-postgresql_1  |
netdisco-postgresql_1  |
netdisco-postgresql_1  | Success. You can now start the database server using:
netdisco-postgresql_1  |
netdisco-postgresql_1  |     pg_ctl -D /var/lib/postgresql/data -l logfile start
netdisco-postgresql_1  |
netdisco-postgresql_1  | waiting for server to start....2024-12-23 22:43:29.649 UTC [41] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
netdisco-postgresql_1  | 2024-12-23 22:43:29.659 UTC [41] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
netdisco-postgresql_1  | 2024-12-23 22:43:29.666 UTC [42] LOG:  database system was shut down at 2024-12-23 22:43:29 UTC
netdisco-postgresql_1  | 2024-12-23 22:43:29.669 UTC [41] LOG:  database system is ready to accept connections
netdisco-postgresql_1  |  done
netdisco-postgresql_1  | server started
netdisco-postgresql_1  |
netdisco-postgresql_1  | /usr/local/bin/docker-entrypoint.sh: sourcing /docker-entrypoint-initdb.d/netdisco-initdb.sh
netdisco-postgresql_1  | netdisco-db-entrypoint: configuring Netdisco user and db
netdisco-postgresql_1  | CREATE ROLE
netdisco-postgresql_1  | netdisco-db-entrypoint: restarting pg privately to container
netdisco-postgresql_1  | 2024-12-23 22:43:29.851 UTC [41] LOG:  received fast shutdown request
netdisco-postgresql_1  | waiting for server to shut down....2024-12-23 22:43:29.852 UTC [41] LOG:  aborting any active transactions
netdisco-postgresql_1  | 2024-12-23 22:43:29.855 UTC [41] LOG:  background worker "logical replication launcher" (PID 48) exited with exit code 1
netdisco-postgresql_1  | 2024-12-23 22:43:29.855 UTC [43] LOG:  shutting down
netdisco-postgresql_1  | 2024-12-23 22:43:29.866 UTC [41] LOG:  database system is shut down
netdisco-postgresql_1  |  done
netdisco-postgresql_1  | server stopped
netdisco-postgresql_1  | waiting for server to start....2024-12-23 22:43:29.986 UTC [59] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
netdisco-postgresql_1  | 2024-12-23 22:43:29.990 UTC [59] LOG:  listening on IPv4 address "127.0.0.1", port 5432
netdisco-postgresql_1  | 2024-12-23 22:43:29.990 UTC [59] LOG:  could not bind IPv6 address "::1": Address not available
netdisco-postgresql_1  | 2024-12-23 22:43:29.990 UTC [59] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
netdisco-postgresql_1  | 2024-12-23 22:43:29.995 UTC [59] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
netdisco-postgresql_1  | 2024-12-23 22:43:29.998 UTC [60] LOG:  database system was shut down at 2024-12-23 22:43:29 UTC
netdisco-postgresql_1  | 2024-12-23 22:43:30.001 UTC [59] LOG:  database system is ready to accept connections
netdisco-postgresql_1  |  done
netdisco-postgresql_1  | server started
netdisco-postgresql_1  | netdisco-db-entrypoint: bringing schema up-to-date
netdisco-web_1         | [10] 2024-12-23 22:43:30  warn App::Netdisco 2.080003 web
netdisco-web_1         | [13] 2024-12-23 22:43:30  warn App::Netdisco 2.080003 web
netdisco-web_1         | [12] 2024-12-23 22:43:30  warn App::Netdisco 2.080003 web
netdisco-web_1         | [9] 2024-12-23 22:43:30  warn App::Netdisco 2.080003 web
netdisco-web_1         | [11] 2024-12-23 22:43:30  warn App::Netdisco 2.080003 web
netdisco-postgresql_1  | netdisco-db-entrypoint: importing OUI
netdisco-postgresql_1  | DELETE 0
netdisco-web_1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web_1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web_1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | BEGIN failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | Child process 10 exited with status 115
netdisco-web_1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web_1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web_1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web_1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | BEGIN failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web_1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web_1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | BEGIN failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | Child process 12 exited with status 115
netdisco-web_1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web_1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | BEGIN failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | Child process 9 exited with status 115
netdisco-web_1         | Child process 13 exited with status 115
netdisco-web_1         | DBIx::Class::Schema::Versioned::_on_connect(): Your DB is currently unversioned. Please call upgrade on your schema to sync the DB. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121
netdisco-web_1         | Error while loading /home/netdisco/perl5/bin/netdisco-web-fg: The setting session_cookie_key must be defined at /home/netdisco/perl5/lib/perl5/Dancer/Session/Cookie.pm line 38.
netdisco-web_1         | Compilation failed in require at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | BEGIN failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-web-fg line 59.
netdisco-web_1         | Child process 11 exited with status 115
netdisco-postgresql_1  | netdisco-db-entrypoint: marking schema as up-to-date
netdisco-postgresql_1  | COPY 47812
netdisco-postgresql_1  | netdisco-db-entrypoint: adding admin user if none exists
netdisco-postgresql_1  | INSERT 0 1
netdisco-postgresql_1  | netdisco-db-entrypoint: adding session key if none exists
netdisco-postgresql_1  | INSERT 0 1
netdisco-postgresql_1  | netdisco-db-entrypoint: queueing stats job
netdisco-postgresql_1  | INSERT 0 1
netdisco-postgresql_1  |
netdisco-postgresql_1  | 2024-12-23 22:43:36.236 UTC [59] LOG:  received fast shutdown request
netdisco-postgresql_1  | waiting for server to shut down....2024-12-23 22:43:36.238 UTC [59] LOG:  aborting any active transactions
netdisco-postgresql_1  | 2024-12-23 22:43:36.239 UTC [59] LOG:  background worker "logical replication launcher" (PID 66) exited with exit code 1
netdisco-postgresql_1  | 2024-12-23 22:43:36.239 UTC [61] LOG:  shutting down
netdisco-postgresql_1  | 2024-12-23 22:43:36.283 UTC [59] LOG:  database system is shut down
netdisco-postgresql_1  |  done
netdisco-postgresql_1  | server stopped
netdisco-postgresql_1  |
netdisco-postgresql_1  | PostgreSQL init process complete; ready for start up.
netdisco-postgresql_1  |
netdisco-postgresql_1  | 2024-12-23 22:43:36.363 UTC [1] LOG:  starting PostgreSQL 13.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
netdisco-postgresql_1  | 2024-12-23 22:43:36.363 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
netdisco-postgresql_1  | 2024-12-23 22:43:36.363 UTC [1] LOG:  listening on IPv6 address "::", port 5432
netdisco-postgresql_1  | 2024-12-23 22:43:36.366 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
netdisco-postgresql_1  | 2024-12-23 22:43:36.370 UTC [357] LOG:  database system was shut down at 2024-12-23 22:43:36 UTC
netdisco-web_1         | [19] 2024-12-23 22:43:36  warn App::Netdisco 2.080003 web
netdisco-postgresql_1  | 2024-12-23 22:43:36.373 UTC [1] LOG:  database system is ready to accept connections
netdisco-web_1         | [22] 2024-12-23 22:43:36  warn App::Netdisco 2.080003 web
netdisco-web_1         | [21] 2024-12-23 22:43:36  warn App::Netdisco 2.080003 web
netdisco-web_1         | [20] 2024-12-23 22:43:36  warn App::Netdisco 2.080003 web
netdisco-web_1         | [23] 2024-12-23 22:43:36  warn App::Netdisco 2.080003 web

While some of that looks worrying, it really isn't. Also maybe not super self-explanatory, the final
netdisco-web_1         | [20] 2024-12-23 22:43:36  warn App::Netdisco 2.080003 web

mean that the web process has successfully started.
If you have a large database already, the phase between
netdisco-postgresql_1  | netdisco-db-entrypoint: restarting pg privately to container
...
netdisco-postgresql_1  | netdisco-db-entrypoint: importing OUI
...
netdisco-postgresql_1  | PostgreSQL init process complete; ready for start up.

can take quite long.
All that being said, if anybody still doesn't have a running web frontend after a couple minutes, maybe also post a docker-compose ps

Just in case you wonder, a huge problem is when running in podman ( RHEL/OL ), where the internal resolution does not work unless the containers run in a single pod .
I have removed podman packages, installed docker-ce ( on OL ) and it started working as expected.
I have not figured out how to make it work in podman environmnet, sorry.

Just in case you wonder, a huge problem is when running in podman ( RHEL/OL )

Thanks I've put this in a separate issue: #78 - I'll try to give it a spin when I get around to it, I can see how it could not be working with our bind mount instruction, DNS options etc.

repo: netdisco/netdisco-docker


text:
version 0.10

Talking w/ @plorenz he suggested for 0.10 that only ziti-cmd, ziti-go-sdk and ziti-edge need the 0.10 version marking and that ziti-fabric and ziti-foundation can be versioned separately.

Talking w/ @plorenz he suggested for 0.10 that only ziti-cmd, ziti-go-sdk and ziti-edge need the 0.10 version marking and that ziti-fabric and ziti-foundation can be versioned separately.

Managing versions on ziti-fabric and ziti-foundation separately seems fine. Those are internal dependencies for the others. Even eventually when there are external folks with dependencies on those things, versioning them independently of our "distribution version" will be fine.

authors: andrewpmartinez michaelquigley

repo: netfoundry/ziti-sdk-golang


text:
Infrastructure: improve ingress controller configuration

Description
This PR improves the configuration of the ingress controllers (both internal and external), replacing the static manifests with helm value files to simplify upgrading. At the same time, it refactors the custom error pages module to make it more compliant with standard golang practices, optimize performance and avoid the need for externally served resources (the returned page embeds all necessary resources).
@reviewers: sorry for the huge PR, it is mostly due to the size of the original values file of ingress-nginx. I personally prefer to keep also the unmodified entries to simplify future matching in case the Helm chart is modified upstream.
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration.

[x] Applying the configuration in cluster and checking the correct operation.

/merge

repo: netgroup-polito/CrownLabs


text:
Bump minSdk to 21 and change minifyEnabled to false

Task

JIRA

          1 Message

:book:
:link: BM-547

JaCoCO Code Coverage 2.77% :white_check_mark:

Class
Covered
Meta
Status

APK file size

size

22.1MB

Number of method references

Dex file
count

classes2.dex
22521

classes.dex
22536

  Generated by :no_entry_sign: Danger

authors: gabrysgab netguru-hound

repo: netguru/baby-monitor-client-android


text:
Add microCMS

This adds the microCMS.

Looks awesome, thanks for adding!


text:
why step could not be float..?

I have the following error

the problem goes away if I del the line step : 0.01, in the following block
          - {
              label: "overlay_filter",
              name: "overlay_filter",
              widget: "number",
              required: false,
              valueType: float,
              min: 0,
              max: 1,
              step: 0.01,
            }

I wonder why it is not working.  It worked fine before...
here is my full config.yml.
# config.yml
backend:
  name: git-gateway
  branch: master # Branch to update (optional; defaults to master)
media_folder: "assets/images"
publish_mode: editorial_workflow
site_url: "http://erc.cuhk.edu.hk/"
collections:
  - name: "blog"
    label: "Blog"
    folder: "_posts/"
    slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
    preview_path: "/{{slug}}"
    create: true
    editor:
      preview: true
    fields:
      - { label: "Layout", name: "layout", widget: "hidden", default: "single" }
      - { label: "Title", name: "title", widget: "string" }
      - { label: "tagline", name: "tagline", widget: "string", required: false }
      - { label: "excerpt", name: "excerpt", widget: "string", required: false }
      - { label: "Publish Date", name: "date", widget: "datetime" }
      - label: "header"
        name: "header"
        widget: "object"
        required: false
        collapsed: true
        fields:
          - {
              label: "overlay_image",
              name: "overlay_image",
              widget: "image",
              allow_mulitple: false,
              required: false,
            }
          - {
              label: "overlay_filter",
              name: "overlay_filter",
              widget: "number",
              required: false,
              valueType: float,
              min: 0,
              max: 1,
              step: 0.01,
            }
          - {
              label: "caption",
              name: "caption",
              widget: "string",
              required: false,
            }
          - label: "button"
            name: "action"
            widget: "list"
            required: false
            fields:
              - {
                  label: "label",
                  name: "label",
                  widget: "string",
                  allow_mulitple: false,
                  required: false,
                  default: "Read More",
                }
              - {
                  label: "url",
                  name: "url",
                  widget: "string",
                  required: false,
                  default: "#",
                }
      - label: "gallery"
        name: "gallery"
        widget: "list"
        required: false
        collapsed: true
        fields:
          - { label: "title", name: "title", widget: "string", required: false }
          - {
              label: "Image",
              name: "image_path",
              widget: "image",
              required: false,
            }
          - {
              label: "url",
              name: "url",
              widget: "string",
              required: false,
              default: "/assets/images/{filename}",
            }
          - { label: "alt", name: "alt", widget: "string", required: false }

      - { label: "Body", name: "body", widget: "markdown" }
      - {
          label: "tags",
          name: "tags",
          widget: "list",
          required: false,
          default: ["others"],
        }
      - {
          label: "categories",
          name: "categories",
          widget: "list",
          required: false,
          default: ["ASC"],
        }
      - {
          label: "Table of content",
          name: "toc",
          widget: "boolean",
          default: false,
          required: false,
        }
      - {
          label: "TOC title",
          name: "toc_label",
          widget: "string",
          required: false,
        }
      - label: "sidebar"
        name: "sidebar"
        widget: "list"
        required: false
        allow_add: false
        fields:
          - {
              label: "image",
              name: "image",
              widget: "image",
              allow_mulitple: false,
              required: false,
            }
          - {
              label: "image_alt",
              name: "image_alt",
              widget: "string",
              required: false,
            }
          - { label: "title", name: "title", widget: "string", required: false }
          - { label: "text", name: "text", widget: "string", required: false }

Thank you.

Thanks for reporting @fdq09eca, this is the result of a newly added schema validation for widgets and is a bug with the number widget schema.
Fixed here https://github.com/netlify/netlify-cms/pull/3931

repo: netlify/netlify-cms


text:
Allow netlify-cms-proxy-server to programmatically initialized

Is your feature request related to a problem? Please describe.

I'd like to integrate the proxy server into development flows, Eg., in an 11ty plugin. The server currently initializes immediately, making it difficult to use conditionally outside of the CLI.
Describe the solution you'd like

Keep the current behavior via binary, but when required programmatically, provide a method for controlling startup and shutdown of the server.
Describe alternatives you've considered

Dynamic imports, but would rather not rely on that for this.

We export the server functionality as an express middleware, so I believe this is already allowed.
For Gatsby one could use:
const { registerLocalFs } = require('netlify-cms-proxy-server/dist/middlewares');

exports.onCreateDevServer = async ({ app }) => {
  await registerLocalFs(app);
};

For 11ty this should work:
const express = require("express");
const {
  registerLocalFs,
} = require("netlify-cms-proxy-server/dist/middlewares");

const app = express();

module.exports = function (eleventyConfig) {
  registerLocalFs(app);

  eleventyConfig.setBrowserSyncConfig({
    middleware: [app],
  });
};

Note that in both cases you'd probably need to update config.yml to:
Gatsby
local_backend:
  url: http://localhost:8000/api/v1

11ty
local_backend:
  url: http://localhost:8080/api/v1

Closing, please re-open if relevant

authors: erezrokah erquhart


text:
Control editorial workflow status by commenting on bitbucket PRs

We would like to be able to update the editorial workflow status of a post from inside bitbucket by commenting netlify-cms/pending_publish
When you comment netlify-cms/draft on the PR it moves the changes to draft however this does not work for the other 2 statuses
For now we have to review content inside bitbucket then open the cms to change the status of the post

Hi @calebwilson706, can you please follow the issue template, either the bug report or feature request.
That ensures we have enough information to understand it.

Sorry i didn't really have any info at the time, did some digging and created a new issue https://github.com/netlify/netlify-cms/issues/6140


text:
WrappedByteBuf

Using 5.0 alpha version i was extending WrappedByteBuf to add methods that i offten use for write  or read. For example:
    public void writeUUID(UUID uuid) {
        writeLong(uuid.getMostSignificantBits());
        writeLong(uuid.getLeastSignificantBits());
    }

After downgrading to 4.1 this class now private. I would like to not write boilerplate or use static helper. Please make it public.

@ensirius why not just have static helper methods ?

@normanmaurer Because it's much cleaner and understandable.
    @Override
    public void write(PacketBuffer buffer) {
           buffer.writeUUID(player.getPlayerId());
    }

    @Override
    public void write(PacketBuffer buffer) {
           PacketBufferHelper.writeUUID(player.getPlayerId(), buffer);
    }

How about wrapping the buffer instead of extending it?

@johnou This may be a solution, but it's produce a lot of boilerplate :|

I disagree, in fact by extending DefaultByteBufHolder you end up with reference-counting for free
and release resources out-of-the-box!
public class WrappedByteBuf extends DefaultByteBufHolder {

    public WrappedByteBuf(@NotNull ByteBufAllocator allocator) {
        super(allocator.buffer());
    }

    public WrappedByteBuf(@NotNull ByteBuf data) {
        super(data);
    }

    public void writeUUID(UUID uuid) {
        writeLong(uuid.getMostSignificantBits());
        writeLong(uuid.getLeastSignificantBits());
    }
}

@johnou There are no writeLong and etc. method

@ensirius updated code snippet.

@ensirius ok to close the issue?

I found another solution using kotlin

Care to share the solution?

authors: ensirius johnou normanmaurer

repo: netty/netty


text:
Ability to pass along attributes via SslContext

This is related to the #6158 OCSP pull request.
The #6158 PR is demonstrating the most simple way of obtaining and dealing with OCSP stapling but it gets a bit more complicated in practice. In particular when you look at how SniHandler and AsyncMapping work (which we use).

AsyncMapping returns Future<SslContext>
SniHandler uses Future<SslContext> to construct SslEngine + SslHandler

... but how do I pass along the info that is needed to obtain a staple or the OCSP staple itself? I'm currently using the delegate pattern around SslContext but it gets quickly rather messy and error prone in conjunction with reference counting. It'd be great if it was possible to pass along arbitrary attributes via SslContext (e.g. via AttributeMap or simply as a Map<Object, Object>).
A more general way of looking at is the desire to pass configuration parameters from SslContext to "things" that use it. One scenario is described above but other use-cases could be other config parameters for the SslEngine such as setEnabledProtocols() or some custom behavior for the SslHandler etc etc.
Here's some pseudo code to illustrate it. WDYT - happy to PR it.
public class MySniHandler extends SniHandler {

  public static final AttributeKey<OcspKey> OCSP_KEY = AttributeKey.valueOf(OcspKey.class, "OCSP_KEY");

  public static final AttributeKey<String[]> PROTOCOLS_KEY = AttributeKey.valueOf(String[].class, "PROTOCOLS_KEY");

  private final OcspCache<OcspKey, Future<byte[]>> ocspCache;

  public MySniHandler(AsyncMapping<String, SslContext> mapping, OcspCache<OcspKey, Future<byte[]>> ocspCache) {
    super(mapping);
    this.ocspCache = ocspCache;
  }

  @Override
  protected void replaceHandler(ChannelHandlerContext ctx, String hostname, SslContext sslContext) throws Exception {
    SslHandler sslHandler = sslContext.newHandler(ctx.alloc());
    ReferenceCountedOpenSslEngine engine = (ReferenceCountedOpenSslEngine) sslHandler.engine();

    OcspKey ocspKey = sslContext.attr(OCSP_KEY).get();

    // I (the server) may or may not have a staple and I don't want
    // to make the client wait for it.
    Future<byte[]> future = ocspCache.get(ocspKey);
    if (future.isSuccess()) {
      engine.setOcspResponse(future.getNow());
    }

    String[] protocols = sslContext.attr(PROTOCOLS_KEY).get();
    engine.setEnabledProtocols(protocols);

    ctx.pipeline().replace(this, SslHandler.class.getName(), sslHandler);
  }
}

for the SslEngine such as setEnabledProtocols() or some custom behavior for the SslHandler

The SslContext object current maintains a reference to the supported protocols [1]. Does it make sense to do something similar for OCSP? I'm not sure because of its "optional nature", but I'm also not sure if we need to support a generic map structure. How many other items do you envision needing (is it more than just the OCSP_KEY you illustrate above)?
[1] https://github.com/netty/netty/blob/4.1/handler/src/main/java/io/netty/handler/ssl/SslContextBuilder.java#L395

Nice, I see that you added the protocols just recently. :+1:
It doesn't have to be generic map structure. If you're cool with adding an interface we can get away with something like this:
interface Stapler {
  Future<byte[]> get() throws Exception;
}

// only relevant for server contexts!
class OpenSslServerContext {
  volatile Stapler stapler;

  Stapler getStapler() {
    return stapler;
  }

  void setStapler(Stapler stapler) {
    this.stapler = stapler;
  }
}

SslHandler sslHandler = sslContext.newHandler(ctx.alloc());
ReferenceCountedOpenSslEngine engine = (ReferenceCountedOpenSslEngine) sslHandler.engine();

Stapler stapler = sslContext.getStapler();
if (stapler != null) {
  Future<byte[]> future = stapler.get();
  if (future.isSuccess()) {
    engine.setOcspResponse(future.getNow());
  }
}

The important thing and why it's mutable and returns a Future is that there are a few strategies for obtaining staples and more importantly managing them. A push based approach is simpler but possibly not viable because SslContext instances can outlive the validity of a staple (iirc the RFC says max of 10 days). A pull based approach is more involved but IMHO the way to go in a real production environment (at least that's what we do).

Actually, I'm not sure about that snippet either. I think it carries too much biz logic weight and it's possibly awkward API-wise.
It'd be nice if SslContext was an interface (or had one). That way it'd be safe to "bastardize" it and make it do whatever the user likes. It being an abstract class subjects the user to runtime breakage which puts me at unease of using the delegate pattern (hence the ticket).
An another idea could be to break the direct dependence on SslContext and introduce a little indirection. Something like this:
interface SslContextHandle {
  SslContext sslContext();
}

// Default behavior, user may implement their own
class DefaultSslContextHandle implements SslContextHandle {
  private final SslContext sslContext;

  // ctor omitted

  @Override
  public SslContext sslContext() {
    return sslContext;
  }
}

class SniHandler {
  public SniHandler(DomainNameMapping<? extends SslContextHandle> mapping) {
  }
}

Can you elaborate on your concerns with using delegation? Is it primarily a general concern of "what if someone adds a method that I should override in the future, or overrides something they don't today and changes behavior"? It would be good to understand the specific concerns (you also mentioned reference counting was complicating things). Ideally we could avoid adding a new API, but maybe this is the best approach (not sure yet).

Yes that would be my primary concern of using delegation that non-abstract methods get added and the user won't know about it until things start failing at runtime.
The other problem is that... SslContext itself is trivial (easy delegate) but actual implementations such as ReferenceCountedOpenSslContext are a bit more complex and my delegate (that extends SslContext) now needs to be super aware of every interface/special functionality of the target object.
I.e. my delegate becomes this monstrosity of extending, overriding and implementing various interfaces of downstream objects just to cover the special needs of every actual implementation (JDK, OPENSSL, ...).
In that sense I prefer interfaces because it allows a duck typing approach and keeps inheritance low.

Do you have a proposal to introduce a interface(s) that will not break APIs?
Wouldn't you also need to have special interfaces/implementations for the different types because they support different methods?

The name SslContext is unfortunately taken and we can't rename/move the existing class without breaking things for ppl. (including me) who extend the class. But let's assume we extract an interface of SslContext with all its public methods.
interface ISslContext {
  boolean isServer();
  // ...
}

class SslContext implements ISslContext {
}

class SslContextBuilder {
  public ISslContext build() {
  }
}

class SniHandler {
  SniHandler(AsyncMapping<? super String, ? extends ISslContext> mapping) {
  }
}

That should work without breaking the API?!

Just to clarify the issue seems to be two fold.

Not having interfaces leaves a chance for your delegate to miss public methods which should be overridden.
SslContext's type hierarchy is relatively deep and different types support different public methods. In order to effectively wrap you must know the concrete type and use the correct wrapping type.

Having the interfaces solves problem (1) (for public methods). However this doesn't seem to solve (2), right? You would still need different interfaces for each of the concrete types.
An alternative approach to help mitigate (1) would be unit tests & reflection (does your delegate have the same methods as the concrete type). This is hacky and not saying its ideal but maybe a viable alternative to maintaining an new set of interfaces (plus the publicly visible classes). Either way for the next API breaking release we should consider exposing interfaces instead of concrete classes here.

Correct regards 1 and 2. It doesn't solve (2) but it's IMHO more favorable to use interfaces than classes due to Java's lack of multiple inheritance.
Technically speaking, my delegate is currently broken because it's only extending and overriding SslContext and implements the ReferenceCounted interface to accommodate JDK and OPENSSL.
With that said and I'm still +1 on favoring interfaces. I think SniHandler's (using as an example) direct dependence on SslContext is possibly wrong/not-favorable. My first example should address 1 and 2.

I'm not necessarily against Interfaces and if we could break APIs (or starting from scratch) it would be an easier decision. I just wanted to explore alternatives and understand the motivation before supporting a new set of interfaces. My primary hesitations would be additional maintenance overhead (relatively minimal I hope), extra interfaces which may confuse folks given the current concrete classes being exposed and widely used.
Based upon the discussion I think I'm most in favor of the SniHandler supporting the SslContextHandle option (assuming this can be done while preserving existing APIs). That way we don't have to worry about more APIs which share/duplicate roles of existing public classes, and complexity of wrapping different types. SslContextHandle is essentially a Supplier (from JDK8). We already have some suppliers for native types (IntSupplier, `BooleanSupplier), and so we could even add a generic supplier (and clean it up later when we support JDK8). Does this sound like a reasonable approach (until we can break APIs)?

+1, I'm also in favor of the supplier approach and would solve my problems elegantly. I'll take a stab at it and see where it goes.

authors: Scottmitch rkapsi


text:
io.netty.util.IllegalReferenceCountException on random HTTP requests

We crawl a lot of websites and from time to time get the following exception:
io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 (class io.netty.util.IllegalReferenceCountException)
io.netty.util.internal.ReferenceCountUpdater.toLiveRealRefCnt(ReferenceCountUpdater.java:74)
io.netty.util.internal.ReferenceCountUpdater.release(ReferenceCountUpdater.java:138)
io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:100)
io.netty.handler.codec.http.DefaultFullHttpResponse.release(DefaultFullHttpResponse.java:115)
io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:88)
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:90)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:328)
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:302)
io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1475)
io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1224)
io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1271)
io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:505)
io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444)
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:283)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931)
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700)
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635)
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552)
io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514)
io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1044)
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
java.base/java.lang.Thread.run(Thread.java:834)

It happens randomly. That is: The exception may be thrown when crawling some URL, but it will not occur when crawling the URL again.
Expected behavior
References are counted correctly
Actual behavior
References are counted incorrectly, which causes an exception to be thrown.
Steps to reproduce
Difficult. Happens randomly.
Minimal yet complete reproducer code (or URL to code)
Not available.
Netty version
4.1.42.Final
JVM version (e.g. java -version)
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3, mixed mode, sharing)
OS version (e.g. uname -a)
Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-62-generic x86_64)

Seems this issue's solution will help u:
https://github.com/netty/netty/issues/9229
I submitted a pull request to implement this idea:
https://github.com/netty/netty/pull/9892
In the future, IllegalReferenceCountException will be able to record the recent access records like leak detection.. But currently maybe there is no good way to easily find the root cause...

We have the same issue using spring-boot-starter-reactor-netty 2.2.4.RELEASE.
However, it occurs only on large data fetch.
Do you have any idea about next release date of a bug free version ?

We have same issue as @m-zai  on our components. The exception occurs randomly on large data fetch.

I do have the same issue when fetch a large data. I encountered this while upgrading my application from spring-boot 2.1.16-RELEASE to spring-boot 2.3.3-RELEASE which uses io.netty:netty-common:4.1.51.Final. I didn't encounter this issue on the version prior to upgrade.

We  have the same issue under springboot 2.3.3.RELEASE+springCloud gateway+netty-common:4.1.51.Final. Unfortuntely, it happends randomly and it's hard to reappear.

The exception stacks are record as below:
`09-14 13:09:40.300 nacos [reactor-http-epoll-3] INFO  c.y.t.g.f.LoggerRecorderGlobalFilter - >>>>>>>
request url: /product/uni/getCategories
method: POST
header { Host:ta.yebenkj.com,X-Client-IP:36.63.179.178,X-Real-IP:36.63.179.178,X-Forwarded-For:36.63.179.178,X-Forwarded-Port:443,X-Forwarded-Proto:https,Connection:close,Content-Length:42,Sec-Fetch-Mode:cors,Origin:https://b.yebenkj.com,User-Agent:Mozilla/5.0 (Linux; Android 7.1.1; YU FLY F9 Build/NMF26F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045329 Mobile Safari/537.36 MMWEBID/5673 MicroMessenger/7.0.17.1720(0x2700113F) Process/tools WeChat/arm64 NetType/WIFI Language/zh_CN ABI/arm64,token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEyOTU5OM0Mjk1OTkxMDA5MjksImFjdGlvbl574,content-type:application/x-www-form-urlencoded,Accept:/,X-Requested-With:com.tencent.mm,Sec-Fetch-Site:same-site,Referer:https://b.yebenkj.com/v9/pages/category/category,Accept-Encoding:gzip, deflate, br,Accept-Language:zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,}
param {null}
body: applierId=1267302654880251904&actionType=1
09-14 13:09:40.315 nacos [reactor-http-epoll-3] ERROR o.s.b.a.w.r.e.AbstractErrorWebExceptionHandler - [dc237582-2991]  500 Server Error for HTTP POST "/product/uni/getCategories"
io.netty.handler.codec.EncoderException: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:104)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
|_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
|_ checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
|_ checkpoint ⇢ HTTP POST "/product/uni/getCategories" [ExceptionHandlingWebHandler]
Stack trace:
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:104)
at io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
at reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:317)
at reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:419)
at reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:219)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onNext(FluxContextStart.java:96)
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2344)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.request(FluxContextStart.java:125)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162)
at reactor.netty.channel.MonoSendMany$SendManyInner.onSubscribe(MonoSendMany.java:250)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onSubscribe(FluxContextStart.java:90)
at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)
at reactor.core.publisher.Flux.subscribe(Flux.java:8325)
at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153)
at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56)
at reactor.core.publisher.Mono.subscribe(Mono.java:4213)
at reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:331)
at reactor.core.publisher.MonoSource.subscribe(MonoSource.java:65)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
at reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:442)
at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:518)
at reactor.netty.resources.PooledConnectionProvider$DisposableAcquire.onStateChange(PooledConnectionProvider.java:561)
at reactor.netty.resources.PooledConnectionProvider$PooledConnection.onStateChange(PooledConnectionProvider.java:448)
at reactor.netty.channel.ChannelOperationsHandler.channelActive(ChannelOperationsHandler.java:65)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelActive(CombinedChannelDuplexHandler.java:412)
at io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:69)
at io.netty.channel.CombinedChannelDuplexHandler.channelActive(CombinedChannelDuplexHandler.java:211)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)
at io.netty.handler.logging.LoggingHandler.channelActive(LoggingHandler.java:189)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1398)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:895)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.fulfillConnectPromise(AbstractEpollChannel.java:620)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:653)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
Caused by: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
at io.netty.util.internal.ReferenceCountUpdater.toLiveRealRefCnt(ReferenceCountUpdater.java:74)
at io.netty.util.internal.ReferenceCountUpdater.release(ReferenceCountUpdater.java:138)
at io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:100)
at io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:88)
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:91)
at io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
at reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:317)
at reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:419)
at reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:219)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onNext(FluxContextStart.java:96)
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2344)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.request(FluxContextStart.java:125)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162)
at reactor.netty.channel.MonoSendMany$SendManyInner.onSubscribe(MonoSendMany.java:250)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onSubscribe(FluxContextStart.java:90)
at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)
at reactor.core.publisher.Flux.subscribe(Flux.java:8325)
at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153)
at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56)
at reactor.core.publisher.Mono.subscribe(Mono.java:4213)
at reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:331)
at reactor.core.publisher.MonoSource.subscribe(MonoSource.java:65)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
at reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:442)
at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:518)
at reactor.netty.resources.PooledConnectionProvider$DisposableAcquire.onStateChange(PooledConnectionProvider.java:561)
at reactor.netty.resources.PooledConnectionProvider$PooledConnection.onStateChange(PooledConnectionProvider.java:448)
at reactor.netty.channel.ChannelOperationsHandler.channelActive(ChannelOperationsHandler.java:65)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelActive(CombinedChannelDuplexHandler.java:412)
at io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:69)
at io.netty.channel.CombinedChannelDuplexHandler.channelActive(CombinedChannelDuplexHandler.java:211)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)
at io.netty.handler.logging.LoggingHandler.channelActive(LoggingHandler.java:189)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1398)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)
at io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:895)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.fulfillConnectPromise(AbstractEpollChannel.java:620)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:653)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)`

@ahnuljz this looks more like you try to write the same ByteBuf multiple times without retaining it. This may be a spring-boot issue /cc @violetagg

@ahnuljz this looks more like you try to write the same ByteBuf multiple times without retaining it. This may be a spring-boot issue /cc @violetagg

thanks a lot!  I will turn to spring-boot community for help.

@ahnuljz this looks more like you try to write the same ByteBuf multiple times without retaining it. This may be a spring-boot issue /cc @violetagg

thanks a lot! I will turn to spring-boot community for help.

@ahnuljz Yep please do so

@ahnuljz We ran into the similar issue, how did you resolve that ?

@ahnuljz We ran into the similar issue, how did you resolve that ?

@machao23 @ahnuljz   We ran into the similar issue, how did you resolve that ?

authors: ahnuljz balajit123 caoweixiong carryxyh gerdriesselmann jakubkluz machao23 normanmaurer violetagg zairi-mohamed


text:
tiny update in ByteToMessageDecoder#callDecode

Motivation:
after the if case, outSize MUST BE 0,so outSize = 0 seems redundant.
Workaround:
delete outSize =
Modification:
Update ByteToMessageDecoder#callDecode.
Result:
Clearer than before

@NiteshKant can you have a look... not super urgent

@NiteshKant can you have a look... not super urgent

Thank you for your reply,this is the first time I have created pr, Maybe this is the smallest change,Haha

@chenqwwq have you signed netty CLA yet? Also other contributor guidelines can be found here

@chenqwwq have you signed netty CLA yet? Also other contributor guidelines can be found here

I've signed it

Looks fine with me... @chrisvest please double check as well :)

@chenqwwq thanks a lot!

authors: NiteshKant chenqwwq normanmaurer


text:
[#4841] Fix segfault if UnpooledUnsafeHeapByteBuf.getShort(..) is use…

…d and UNALGINED access is not possible.
Motivation:
We missed to take the byte[] into account when try to access the bytes and so produce a segfault.
Modifications:
Correctly pass the byte[] in.
Result:
No more segfault.

Cherry-picked into 4.0 (c161e526b9c426b147ae0c95473781263396ecd2) and 4.1 (19907030d105079fee4fe6db70431f7f6b928149)


text:
Missing inventory set up

The current published exercise:
https://network-automation.github.io/linklight/exercises/networking/1.1-adhoc/
Is missing the initial inventory setup.
https://github.com/network-automation/linklight/tree/master/exercises/ansible_engine/1-adhoc#step-11---define-your-inventory

For the networking workshop this is autogenerated for you and located in lab_inventory/hosts
e.g.->
[student1@ip-172-16-2-165 ~]$ cat ~/networking-workshop/lab_inventory/hosts
can you let me know if this was not auto-generated?  We might need to fix the instructions here and make the students aware of this right from the get go.... right now the 2nd exercise goes into this...
https://network-automation.github.io/linklight/exercises/networking/1.2-backup/
would appreciate thoughts / concerns... I think originally we were trying to avoid teaching lab_inventory until the student had run some quick ad-hoc commands...

@ronaldpetty is this still an issue?

closing because of lack of response

authors: IPvSean ronaldpetty

repo: network-automation/linklight