syscall/js: "goroutines are asleep" error only in Node.js

What version of Go are you using (go version)?

$ go version
go version go1.12.4 linux/amd64

Does this issue reproduce with the latest release?
Yes
What did you do?
package main

import (
	"fmt"
	"syscall/js"
)

func main() {
	var cb js.Func
	cb = js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		fmt.Println("cb called")
		return nil
	})
	js.Global().Set("callme", cb)
	done := make(chan struct{})
	fmt.Println("waiting for callback")
	<-done
}

I ran this in both browser and Node.js.
What did you expect to see?
I expect in both cases, for the program to wait indefinitely.
What did you see instead?
In works fine in browser:
$#go_js_wasm_exec is set to wasmbrowsertest
$GOOS=js GOARCH=wasm go run foo.go
waiting for callback
^Csignal: interrupt

But fails in Node.js
$PATH=/usr/local/go/misc/wasm:$PATH GOOS=js GOARCH=wasm go run foo.go
waiting for callback
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
main.main()
	/home/agniva/play/go/src/foo.go:24 +0xb
exit status 2

Is this expected ?
My node version is 10.2.1
/cc @neelance
I haven't tried with 1.11 because the function semantics have changed since.

Thinking out loud, but presumably this incompatibility is lurking somewhere in wasm_exec.js? If it's working in the browser, I assume that means the generated WASM is fine, and that it's the translation layer that's doing something wrong.

This is expected. The following code is only used by Node.js:
https://github.com/golang/go/blob/5f4aa5d79fba270d6a14f2a55999b5b6ccec2326/misc/wasm/wasm_exec.js#L525-L531
The reasoning is that if all goroutines are asleep AND there is no Node.js event handler pending, then the program can never continue, which is a "deadlock" situation. In fact, the default behavior of Node.js is to just quit with exit code 0, because there is no code to run any more 😒. I opted for throwing the error instead.

I see. Then does this mean in Node.js, we can never attach a global callback without hooking into the event loop somehow ?

The issue is not the callback, but that there is no code at all running any more, thus the application would hang forever. Explicitly saying "this is a deadlock" is a feature, not a bug.
What are you trying to do?

I was trying to debug this - https://github.com/golang/go/issues/26277. Then realized that the code gives this deadlock error, which obviously did not give at that time. Reduced it to this test case.
Hence, I was trying to get to the root of it.
Full code here

package main
import (
"fmt"
"syscall/js"
)
var headers js.Value
func init() {
headers := js.Global().Get("Object").New()
headers.Set("Content-Type", "text/plain")
}
func main() {
require := js.Global().Get("require")
http := require.Invoke("http")
app := http.Get("Server").New()
app.Call("on", "request", js.FuncOf(request))
app.Call("listen", 3000, js.FuncOf(listen))
wait()
}
func request(this js.Value, args []js.Value) interface{} {
res := args[1]
res.Call("writeHead", 200, headers)
res.Call("write", "Hello World")
res.Call("end", "\n")
return nil
}
func listen(this js.Value, args []js.Value) interface{} {
fmt.Println("listening on port 3000")
return nil
}
func wait() {
done := make(chan bool)
js.Global().Get("process").Call("on", "SIGTERM", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
done <- true
return nil
}))
<-done
}

The problem with this code is that you are doing a blocking operation (fmt.Println) in a callback (listen). This causes listen to never return, thus the HTTP server never starts. This means that there is no event that can ever cause the program to continue, which is a deadlock.
If you replace fmt.Println with go fmt.Println or println, then it works as expected.
However, the stack of the hanging listen function does not show up when printing the deadlock. This is bad, I'll look into it.

Aha ! Missed that one. Sorry I went down a different rabbit hole. Thanks for looking into it.

This is resolved. Closing.


Apple GPU support & float32 dtype

Hi,
Just getting started with MACE but am really digging it! I was excited to see that you support Apple GPUs, but is that only for training? When I try to use a mace_off() or mace_mp() ASE calculator and specify both the dtype and the device, I get an error:
Using MACE-OFF23 MODEL for MACECalculator with /Users/tomasusi/.cache/mace/MACE-OFF23_medium.model
Using float32 for MACECalculator, which is faster but less accurate. Recommended for MD. Use float64 for geometry optimization.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[95], line 13
---> 13 calc = mace_off(device='mps', default_dtype='float32')

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/foundations_models.py:206](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/foundations_models.py#line=205), in mace_off(model, device, default_dtype, return_raw_model, **kwargs)
    202 if default_dtype == "float32":
    203     print(
    204         "Using float32 for MACECalculator, which is faster but less accurate. Recommended for MD. Use float64 for geometry optimization."
    205     )
--> 206 mace_calc = MACECalculator(
    207     model_paths=model, device=device, default_dtype=default_dtype, **kwargs
    208 )
    209 return mace_calc

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/mace.py:127](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/mace.py#line=126), in MACECalculator.__init__(self, model_paths, device, energy_units_to_eV, length_units_to_A, default_dtype, charges_key, model_type, compile_mode, fullgraph, **kwargs)
    125     self.use_compile = True
    126 else:
--> 127     self.models = [
    128         torch.load(f=model_path, map_location=device)
    129         for model_path in model_paths
    130     ]
    131     self.use_compile = False
    132 for model in self.models:

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/mace.py:128](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/mace.py#line=127), in <listcomp>(.0)
    125     self.use_compile = True
    126 else:
    127     self.models = [
--> 128         torch.load(f=model_path, map_location=device)
    129         for model_path in model_paths
    130     ]
    131     self.use_compile = False
    132 for model in self.models:

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py:1097](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py#line=1096), in load(f, map_location, pickle_module, weights_only, mmap, **pickle_load_args)
   1095             except RuntimeError as e:
   1096                 raise pickle.UnpicklingError(_get_wo_message(str(e))) from None
-> 1097         return _load(
   1098             opened_zipfile,
   1099             map_location,
   1100             pickle_module,
   1101             overall_storage=overall_storage,
   1102             **pickle_load_args,
   1103         )
   1104 if mmap:
   1105     f_name = "" if not isinstance(f, str) else f"{f}, "

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py:1525](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py#line=1524), in _load(zip_file, map_location, pickle_module, pickle_file, overall_storage, **pickle_load_args)
   1522 # Needed for tensors where storage device and rebuild tensor device are
   1523 # not connected (wrapper subclasses and tensors rebuilt using numpy)
   1524 torch._utils._thread_local_state.map_location = map_location
-> 1525 result = unpickler.load()
   1526 del torch._utils._thread_local_state.map_location
   1528 torch._utils._validate_loaded_sparse_tensors()

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/_utils.py:200](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/_utils.py#line=199), in _rebuild_tensor_v2(storage, storage_offset, size, stride, requires_grad, backward_hooks, metadata)
    197 def _rebuild_tensor_v2(
    198     storage, storage_offset, size, stride, requires_grad, backward_hooks, metadata=None
    199 ):
--> 200     tensor = _rebuild_tensor(storage, storage_offset, size, stride)
    201     tensor.requires_grad = requires_grad
    202     if metadata:

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/_utils.py:178](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/_utils.py#line=177), in _rebuild_tensor(storage, storage_offset, size, stride)
    176 def _rebuild_tensor(storage, storage_offset, size, stride):
    177     # first construct a tensor with the correct dtype[/device](http://localhost:8889/device)
--> 178     t = torch.empty((0,), dtype=storage.dtype, device=storage._untyped_storage.device)
    179     return t.set_(storage._untyped_storage, storage_offset, size, stride)

TypeError: Cannot convert a MPS Tensor to float64 dtype as the MPS framework doesn't support float64. Please use float32 instead.

Or maybe this is just a simple bug..? I am running PyTorch 2.4.1.

Hey  @TomaSusi,
The models were trained with float64 and because MPS does not support float64, it is a bit of a pain to deliver the model on MPS.
The short term hack for you is the following:

Download the models here for MP: https://github.com/ACEsuit/mace-mp/releases/tag/mace_mp_0 or mace-off: https://github.com/ACEsuit/mace-off
Load the model on CPU:

model = torch.load(model_path, device="cpu")
model = model.float()
torch.save(model, new_model_path)

Create the calculator on MPS using the new model path:

calc = MACECalculator(new_model_path, device="mps")

Thanks for the quick reply!
Loading the model with the given syntax doesn't work on the latest pytorch:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[334], line 7
      4 model_path_off = 'mace-off[/MACE-OFF23_medium.model](http://localhost:8889/MACE-OFF23_medium.model)'
      5 new_model_path_off = 'mace-off[/MACE-OFF23_medium_mps.model](http://localhost:8889/MACE-OFF23_medium_mps.model)'
----> 7 model_off = torch.load(model_path_off, device="cpu")
      8 model_off = model_off.float()
      9 torch.save(model_off, new_model_path_off)

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py:1114](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py#line=1113), in load(f, map_location, pickle_module, weights_only, mmap, **pickle_load_args)
   1112     except RuntimeError as e:
   1113         raise pickle.UnpicklingError(_get_wo_message(str(e))) from None
-> 1114 return _legacy_load(
   1115     opened_file, map_location, pickle_module, **pickle_load_args
   1116 )

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py:1338](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/serialization.py#line=1337), in _legacy_load(f, map_location, pickle_module, **pickle_load_args)
   1332 if not hasattr(f, 'readinto') and (3, 8, 0) <= sys.version_info < (3, 8, 2):
   1333     raise RuntimeError(
   1334         "torch.load does not work with file-like objects that do not implement readinto on Python 3.8.0 and 3.8.1. "
   1335         f'Received object of type "{type(f)}". Please update to Python 3.8.2 or newer to restore this '
   1336         "functionality.")
-> 1338 magic_number = pickle_module.load(f, **pickle_load_args)
   1339 if magic_number != MAGIC_NUMBER:
   1340     raise RuntimeError("Invalid magic number; corrupt file?")

TypeError: 'device' is an invalid keyword argument for load()

If I update this to map_location='cpu' (or remove the keyword), the model is loaded.
However, this results in another error:
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[358], line 9
      7 prim.calc = calc_off
      8 print("forces on primitive:")
----> 9 print(prim.get_forces())

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/ase/atoms.py:812](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/ase/atoms.py#line=811), in Atoms.get_forces(self, apply_constraint, md)
    810 if self._calc is None:
    811     raise RuntimeError('Atoms object has no calculator.')
--> 812 forces = self._calc.get_forces(self)
    814 if apply_constraint:
    815     # We need a special md flag here because for MD we want
    816     # to skip real constraints but include special "constraints"
    817     # Like Hookean.
    818     for constraint in self.constraints:

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/ase/calculators/abc.py:30](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/ase/calculators/abc.py#line=29), in GetPropertiesMixin.get_forces(self, atoms)
     29 def get_forces(self, atoms=None):
---> 30     return self.get_property('forces', atoms)

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/ase/calculators/calculator.py:538](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/ase/calculators/calculator.py#line=537), in BaseCalculator.get_property(self, name, atoms, allow_calculation)
    535     if self.use_cache:
    536         self.atoms = atoms.copy()
--> 538     self.calculate(atoms, [name], system_changes)
    540 if name not in self.results:
    541     # For some reason the calculator was not able to do what we want,
    542     # and that is OK.
    543     raise PropertyNotImplementedError(
    544         '{} not present in this ' 'calculation'.format(name)
    545     )

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/mace.py:244](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/calculators/mace.py#line=243), in MACECalculator.calculate(self, atoms, properties, system_changes)
    242 for i, model in enumerate(self.models):
    243     batch = self._clone_batch(batch_base)
--> 244     out = model(
    245         batch.to_dict(),
    246         compute_stress=compute_stress,
    247         training=self.use_compile,
    248     )
    249     if self.model_type in ["MACE", "EnergyDipoleMACE"]:
    250         ret_tensors["energies"][i] = out["energy"].detach()

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/nn/modules/module.py:1553](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/nn/modules/module.py#line=1552), in Module._wrapped_call_impl(self, *args, **kwargs)
   1551     return self._compiled_call_impl(*args, **kwargs)  # type: ignore[misc]
   1552 else:
-> 1553     return self._call_impl(*args, **kwargs)

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/nn/modules/module.py:1562](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/torch/nn/modules/module.py#line=1561), in Module._call_impl(self, *args, **kwargs)
   1557 # If we don't have any hooks, we want to skip the rest of the logic in
   1558 # this function, and just call forward.
   1559 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
   1560         or _global_backward_pre_hooks or _global_backward_hooks
   1561         or _global_forward_hooks or _global_forward_pre_hooks):
-> 1562     return forward_call(*args, **kwargs)
   1564 try:
   1565     result = None

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/modules/models.py:395](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/modules/models.py#line=394), in ScaleShiftMACE.forward(self, data, training, compute_force, compute_virials, compute_stress, compute_displacement, compute_hessian)
    393 total_energy = e0 + inter_e
    394 node_energy = node_e0 + node_inter_es
--> 395 forces, virials, stress, hessian = get_outputs(
    396     energy=inter_e,
    397     positions=data["positions"],
    398     displacement=displacement,
    399     cell=data["cell"],
    400     training=training,
    401     compute_force=compute_force,
    402     compute_virials=compute_virials,
    403     compute_stress=compute_stress,
    404     compute_hessian=compute_hessian,
    405 )
    406 output = {
    407     "energy": total_energy,
    408     "node_energy": node_energy,
   (...)
    415     "node_feats": node_feats_out,
    416 }
    418 return output

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/modules/utils.py:185](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/modules/utils.py#line=184), in get_outputs(energy, positions, displacement, cell, training, compute_force, compute_virials, compute_stress, compute_hessian)
    167 def get_outputs(
    168     energy: torch.Tensor,
    169     positions: torch.Tensor,
   (...)
    181     Optional[torch.Tensor],
    182 ]:
    183     if (compute_virials or compute_stress) and displacement is not None:
    184         # forces come for free
--> 185         forces, virials, stress = compute_forces_virials(
    186             energy=energy,
    187             positions=positions,
    188             displacement=displacement,
    189             cell=cell,
    190             compute_stress=compute_stress,
    191             training=(training or compute_hessian),
    192         )
    193     elif compute_force:
    194         forces, virials, stress = (
    195             compute_forces(
    196                 energy=energy,
   (...)
    201             None,
    202         )

File [~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/modules/utils.py:62](http://localhost:8889/lab/tree/~/miniforge3/envs/mlphonons/lib/python3.11/site-packages/mace/modules/utils.py#line=61), in compute_forces_virials(energy, positions, displacement, cell, training, compute_stress)
     60 if compute_stress and virials is not None:
     61     cell = cell.view(-1, 3, 3)
---> 62     volume = torch.linalg.det(cell).abs().unsqueeze(-1)
     63     stress = virials [/](http://localhost:8889/) volume.view(-1, 1, 1)
     64     stress = torch.where(torch.abs(stress) < 1e10, stress, torch.zeros_like(stress))

NotImplementedError: The operator 'aten::_linalg_det.result' is not currently implemented for the MPS device. If you want this op to be added in priority during the prototype phase of this feature, please comment on https://github.com/pytorch/pytorch/issues/77764. As a temporary fix, you can set the environment variable `PYTORCH_ENABLE_MPS_FALLBACK=1` to use the CPU as a fallback for this op. WARNING: this will be slower than running natively on MPS.

Setting this environment variable does not seem to help (I tried both %env within the notebook and !export, and editing my .zprofile file. I posted into the suggested issue (https://github.com/pytorch/pytorch/issues/77764#issuecomment-2403721666).


feature: Expose API for LSP progress statusline components

Did you check the docs?

[X] I have read all the noice.nvim docs

Is your feature request related to a problem? Please describe.
There's no problem per se, I just find the amount of LSP progress mini notifications a bit overwhelming sometimes. I don't want to disable them entirely though, instead I would like to display them in my lualine as a single message.
Describe the solution you'd like
An LSP statusline component that I could easily access to configure my lualine.
Describe alternatives you've considered
I apologize in advance if I'm missing something 🙈
Here are the things I've tried:

Use an existing component. However, after reading the docs it seems like there's no statusline component for LSP progress (the message component is for event=msg_show and I'm interested in event=lsp), and the other ones are clearly non-applicable here.
Configure a new statusline component. I looked at these for inspiration, but there's no LSP event in M.events, so I got lost there.
Use another plugin for this like https://github.com/linrongbin16/lsp-progress.nvim, but I don't really want to add another plugin for something Noice is already handling.

Additional context
No response

I'm pretty sure it can be done already with the status line component, but I'll have to look into the code to check how that works again :)
Will look into it tomorrow.

So it's indeed already possible.
In your noice config, add a new statusline component:
    opts.status = { lsp_progress = { event = "lsp", kind = "progress" } }

Skip all lsp progress messages, so they won't be displayed with the default view:
    table.insert(opts.routes, {
      filter = {
        event = "lsp",
        kind = "progress",
      },
      opts = { skip = true },
    })

Then add the following to lualine:
  {
    function()
      return require("noice").api.status.lsp_progress.get_hl()
    end,
    cond = function()
      return package.loaded["noice"] and require("noice").api.status.lsp_progress.has()
    end,
  },

Result should look lke this:

To properly update lualine on progress, you can also add the autocmd below:
    autocmd LspProgress * redrawstatus

Not required, but will update the statusline component as soon as new lsp progress was received

Be aware that only the most recent lsp progress message wil be displayed this way. so if there's two or more, only the most recent one will be shown.

Thank you sooo much!
Just a quick follow-up: When I was trying this earlier, I disabled opts.lsp.progress. It sounds like I shouldn't do that but instead skip all messages with the filter right?

Yes, don't disable that or lsp progress messages would not be generated. You still want to process those, just not routed to the default view

Awesome. Thanks again for looking into it! ❤

To properly update lualine on progress, you can also add the autocmd below:
    autocmd LspProgress * redrawstatus

Not required, but will update the statusline component as soon as new lsp progress was received

Where should the autocmd go?

anywhere were it gets loaded


Jasmine support

Is there anything that would cause this not to be able to support Jasmine at some point down the road?

No not at all. What do you think, would it make sense and is this a common thing to support two frameworks (Mocha and Jasmine)?

I just saw the generic gulp-webdriver and was curious if Jasmine was going to be considered. It can be two different packages though, similar to what you did with grunt-webdriver, and grunt-webdriver-jasmine (now that I see those). Which at this point I'd assume is what would happen if jasmine was going to be supported.

@travisperson yes I agree. A different project called gulp-webdriver-jasmine would make sense. Feel free to create that project. Closing the issue for now as this project only targets mocha users.


Bug: I see a glitch, when i click, hover on the taskbar

It is happening for a second, but it is visible while recording.
I have 4k monitor, i always increase my resolution to show the text clearer. Even in that, i see this problem arises.

Hi: this is because when you do that, Windows automatically shows everything again. The program monitors this action and hides it as soon as it cans, but it could be shown for a split of a second.
Take into account that the program uses some "hacks" to hide the elements, since the operating system has no support for it, and it's not 100% perfect.
Disable notifications while recording, as I suggest in the readme file of the repo.
HTH.

Mm can understand, while i do minimize my taskbar and enabled, hover on show. while hovering the taskbar, it is visible. 🥲
Thank you for your wonderful software. It is wonderful.

Ah, OK, I see. If you have your taskbar automatically hidden (you should have told me that from the beginning!) the program can see it and it can't automatically hide the zones again until it's completely shown 🤔
I don't know if I could do anything with that, but I'll investigate it further. Thanks!

Ah, OK, I see. If you have your taskbar automatically hidden (you should have told me that from the beginning!)

No. even if i enable taskbar at all times, while clicking on taskbar, it changes. but i can understand the technical difficulties you are facing. Hope, we will have an workaround to fix it. Thanks.

HI again:
That's really strange. There's no reason for it to be shown if you hover the mouse or click over the taskbar or notification area.
You must take into account that Windows shows everything again (date/time and notification icons) if there's any change in that area. Therefore if you have any notification icon that is changing all the time, a new notification arrives, etc... everything will be shown again and my app will try to hide it as soon as possible but still there's a chance to be seen for a small twitch.
Do you have any program that changes an icon on the notification area? it must be something like that. I'm sure is something relates to your own computer and the software you are using...


workflow-telemetry-action: Error: EACCES: permission denied

Hi there, thanks for the awesome action!
I'm currently using it as part of the rworkfows action and one of my users reported an error.

https://github.com/neurogenomics/rworkflows/issues/128

Any insights you might be able to provide would be greatly appreciated! @rwxdash @suleymanbarman
1. Bug description
An error arises during the telemetry step in the rworkflows action.
Console output
https://github.com/tempbioc/parody/actions/runs/7700556648/job/20984649706
Run runforesight/workflow-telemetry-action@v1
  with:
    github_token: ***
    comment_on_pr: false
    metric_frequency: 5
    proc_trace_min_duration: -1
    proc_trace_sys_enable: false
    proc_trace_chart_show: true
    proc_trace_chart_max_count: 100
    proc_trace_table_show: false
    job_summary: true
    theme: light
/usr/bin/docker exec  6c2e97cc4a283c72fe7bf139a67a7da38acadf3432c0c132475639d0cd[27](https://github.com/tempbioc/parody/actions/runs/7700556648/job/20984649706#step:4:28)aae2 sh -c "cat /etc/*release | grep ^ID"
[Workflow Telemetry] Initializing ...
[Workflow Telemetry] Starting step tracer ...
[Workflow Telemetry] Started step tracer
[Workflow Telemetry] Starting stat collector ...
[Workflow Telemetry] Started stat collector
[Workflow Telemetry] Starting process tracer ...
[Workflow Telemetry] Using proc_tracer_ubuntu-22
Error: [Workflow Telemetry] Unable to start process tracer
Error: [Workflow Telemetry] Error
Error: Error: EACCES: permission denied, open '/__w/_temp/_runner_file_commands/save_state_ac4bd7c5-921e-48b3-b0[29](https://github.com/tempbioc/parody/actions/runs/7700556648/job/20984649706#step:4:30)-d0cb99c12220'
[Workflow Telemetry] Initialization completed
Run echo "RGL_USE_NULL=TRUE" >> $GITHUB_ENV
/__w/_temp/06874ccf-cdc5-4e06-aed4-f0e66a4aa052.sh: line 1: /__w/_temp/_runner_file_commands/set_env_1542[31](https://github.com/tempbioc/parody/actions/runs/7700556648/job/20984649706#step:4:32)dd-e084-4f24-9ded-f0a82f647c04: Permission denied
/__w/_temp/06874ccf-cdc5-4e06-aed4-f0e66a4aa052.sh: line 2: /__w/_temp/_runner_file_commands/set_env_15[42](https://github.com/tempbioc/parody/actions/runs/7700556648/job/20984649706#step:4:44)31dd-e084-4f24-9ded-f0a82f647c04: Permission denied
/__w/_temp/06874ccf-cdc5-4e06-aed4-f0e66a4aa052.sh: line 3: /__w/_temp/_runner_file_commands/set_env_154231dd-e084-4f24-9ded-f0a82f647c04: Permission denied
/__w/_temp/06874ccf-cdc5-4e06-aed4-f0e66a4aa052.sh: line 4: /__w/_temp/_runner_file_commands/set_env_154231dd-e084-4f24-9ded-f0a82f647c04: Permission denied
/__w/_temp/06874ccf-cdc5-4e06-aed4-f0e66a4aa052.sh: line 5: /__w/_temp/_runner_file_commands/set_env_154231dd-e084-4f24-9ded-f0a82f647c04: Permission denied
Error: Process completed with exit code 1.

Expected behaviour
Telemetry actions runs all the way through and produces reports.
2. Reproducible example
https://github.com/tempbioc/parody/actions/runs/7700556648/workflow
Potentially related issues

https://github.com/catchpoint/workflow-telemetry-action/issues/44

Hey @bschilder, thank you for raising an issue.
At a glance, the workflow with the problem seems to be using a container to run the job. Since the workflow-telemetry-action uses an eBPF program (called proc_tracer_ubuntu-22 in this case) and it would have to be run with sudo, it would need security privileges to run in a container.
As you pointed out (#44), the solution would be to run the container with privileged: true and mount the debugfs syscalls, since it probably won't be available within a container by default.
It does look like GitHub Action allows these to be set in the jobs.<job_id>.container.options. See: https://docs.github.com/en/actions/using-jobs/running-jobs-in-a-container#setting-container-resource-options
Hope this clarifies some things and helps you resolve the issue.
Bests.

Thanks so much for the rapid and helpful reply! I'll try this out and let you know how it goes!

Hi @bschilder,
Had you a chance to try solution suggested by @rwxdash?


typo in structure of eukaryotes

"they slso have something"

I submitted a pull request to fix this typo. See #4


Allow Character to AFK and Auto-Logout (Optional)

Closes #75 .
Additions/modifications proposed in this pull request:

Allow players to enter AFK once a certain time period has passed while being idle
Optionally, allow players to enter auto logout period once another time period has passed while being idle
Force the player to logout if they didn't do anything during the auto-logout 'grace period' (which is defaulted to 30 secs)

TODO:

Complete MapServerData::read_settings() to allow MapServerData to read from settings.cfg to put the time thresholds based on a server admin's settings, and whether auto logout is used or not. (Should be this a SegsAdmin addition instead?)
Display a message to player that they will be auto logged out in 2 mins (configurable) after that m_time_to_logout_msg threshold is passed and the server uses auto-logouts
Force client to logout in 30 seconds (configurable?) if player is on auto logout period and that they didn't do anything during the 'grace period'
If the server uses auto logout - Once 18 minutes have passed, give the message to player that they will be logged out in 2 minutes, if no action is done within that time period. And should the player not do anything, then logout the player in 30 secs in which the player cannot reverse the logout.

And obviously when testing, we'd need to slash the time thresholds unless you want to wait the whole 20 mins to see if it works, haha.

Will wait for further progress prior to testing.
Thank you for tackling this @eos428 !

Sure np.
I think I'll need to ask nem on how we should structure this...  but here's what I did and encountered so far.

To get all player characters, we'd use getActiveSessions() as we did on Sync Service and then increase m_idle_time based on deltaTime.
The game should send a message to the player that they are AFK'ed and etc. We'd need the session instead of the entity - so we can't do everything in World::update (which also updates NPC entities, and there was a reason I updated the Sync Service)
Is there any way for the server to force the client to logout in 30 seconds in which the client cannot reverse the logout decision? (Using opcode?)

Adding this to v0.7.0 but we'll gladly merge it in if ready sooner.
Thanks for all your hard work @eos428!!

This looks good to me. Just need someone to test.
Otherwise I'll test early next week.
Great work eoS

Hi eoS, when you have time can you please resolve merge conflicts? Thank you!

One issue I found with this.
Manually setting afk /afk Test Message has stopped working. Looks like you're flagging it off somewhere.
And just a reminder to set the timers to their normal values prior to merge.

Auto AFK: If there is no keyboard activity in 5 minutes, your character will automatically be set to AFK (“Away From Keyboard”).
Auto Logout: In order to improve lag and framerate for our players, we have instituted an Auto Logout feature for players who are not actively playing the game. After 18 minutes of inactivity you will hear a chime and receive a message that you will be auto logged out in 2 minutes. If you have not given any inputs to your character in those 2 minutes, you will hear a klaxon and the 30 second logout timer will begin. If you resume activity during those 20 minutes then the Auto Logout will be reset.

Can you elaborate this one? Are you supposed to never go AFK when on a team, or this PR makes it impossible to AFK while on a team?

This PR makes it impossible to go afk while on a team.
Players should still be able to afk while teaming.

/afk does not work anymore since typing is considered an input... The actual toggle works, but then on_afk_update sets it off again, since it detected an input.

The fix should be easy (in fact this is incidental behaviour) but i thought there was a discussion in discord in which we should not allow afk while targeting?

I must have missed that one, or forgot about it. But it's true that selecting a new target should disable AFK, but simply having a target (previously selected) should have no effect on afk status.

AFKing in regards to targeting (remove AFK when selecting/switching target, do AFK if doing nothing with a target selected) should work as you want now


Include Entity in Optimization candidate view

Hopefully this commit fixes #20

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks @StephenGoodall, looks good!
Also apologies for getting around to this one late as well.

:tada: This PR is included in version 1.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Add Network Policy IPBlock support

K8s network policy supports both ingress and egress policy when
peer is from a IPBlock CIDR. The traffic from IPBlock except will
be denied. This patch adds support for this feature.
Signed-off-by: Tong Liu<EMAIL_ADDRESS>

@shettyg It gets ugly to consolidate into one func so that I separate the ACL func for IPBlock. Fixed the issue in latest ps.


Add signalfx metrics receiver to the otel-agent template

splunk-otel-java now exports metrics in the signalfx format, the otel agent should be able to pick them up out of the box. This change adds the signalfx receiver to the default agent metrics pipeline.

@mateuszrzeszutek please upgrade your helm client to 3.5.4 to make the pre-commit happy.
Also please update otelAgent.ports in values.yaml

please upgrade your helm client to 3.5.4 to make the pre-commit happy.

Thanks! I was wondering why it generates different output on my machine...

Also please update otelAgent.ports in values.yaml

Done 👍

@mateuszrzeszutek sorry, please rebase, the files were moved around 😬

@mateuszrzeszutek sorry, please rebase, the files were moved around 😬

No problem -- done.


Dropdown menu not closing after menu button click

(Not sure if this is a bug or it's intended, in which case I need a feature request.)
Describe the issue
When you have a dropdown menu of buttons (e.g., in a nav see docs here), once you click an option, the dropdown menu isn't closing.
Current Behavior
Currently the dropdown menu of buttons remains open and you have to click away from it to close.
Expected Behavior
I assumed the dropdown menu would close when one of it's options are clicked.

@yhavin, are you using details or select for your dropdown?


Feature request: shared ALB across multiple Ingress objects

I want to highlight that this is not 'cross-namespace ingress', which is contentious in the core ( kubernetes/kubernetes#17088 )  but rather the ability to use a single ALB, with vhosts, to satisfy multiple independent ingress objects, which may safely be spread over multiple namespaces.
The key difference is that rather than having one ingress which is able to send traffic in ways unexpected to services, each team or service or whatever defines an ingress, and the vhost(s) they want, exactly as normal- its just an optimisation for the controller to reuse an ALB rather than making new ones.
Why? Two big reasons.

security group limitations. With many ELBs (we were exceeding 120ish at one point), the number of security groups becomes a limitation, but actually they are all very boring, almost identical. Having a fixed sg works, until someone needs a different port, and then the whole self-service proposition breaks and an admin has to fix things. ugh.

For test cluster deployment we've found DNS propogation issues (ELB provisioned but NXDOMAIN on a lookup too it if you are too fast (and then short negative caching and argggh)., and AWS ELB provisioning times (not all the time, but often enough to find assumptions in code rather to often to be good) to be ongoing stability and performance problems, and we're expecting that to translate to ALB's too; if someone from AWS can categorically state that thats not the case, then yippee, otherwise ... :)

The basic top level sketch is just to accept additional ingress documents that use different virtual hosts, and have the same ALB configuration, and then bundle them onto the same ALB.
Other ingress controllers like nginx have done exactly this: (https://github.com/ProProgrammer/cross-namespace-nginx-ingress-kubernetes).
Seems to me that it could be made a controller cmdline option to enable, making it opt-in, and thus mitigating any reliability / stability issues by not exposing every user to them.
Possible issues:

what if an existing ingress adds a vhost already served by a second ingress?
what of it: its broken, but its broken whether or not the ALB is shared.
what if previously compatible ALB definitions are changed?
ignore the change until all ingresses that are sharing the same ALB agree on the new setting (whatever it is), then action it (and in the mean time complain via events).

How about adding an annotation like alb.k8s.io/ingress.group: myGroup1
Ingresses belongs to same group will be aggregated into same ALB.
This allows a bit of benefits:

users can freely choose how many ALB they want to use.
users can/should ensure all rules for ingresses of same group don't conflict.
isolate changes in cluster. The current codebase reconcile every ingresses in the cluster when event changes. which can cause problems when ingress count increases. With ingressGroup, changes can be isolated inside the same group of ingresses.
we can add permission controller to limiting certain users creating ingresses to join ingressGroup when initializer and admission controller are generally available 😸

If the group works in all others as I sketched then I think its no different from a security perspective, but it does have the downside of requiring explicit coordination between different teams. I think conflicts have to be dealt with by the controller - refuse to update an ALB where rules currently conflict, and log errors to the relevant ingresses - not hard to do.
Use the group idea could make it reasonable to not just use different hostnames but also permit routes within one or more common hostnames, because namespaces are opting into this - but that seems harder to reason about than just 'unique hostnames apply' :) - OTOH, some folk may need that!
I think I see the group concept as largely a separate feature building on the sharing capability; I have no objections to having it exist and even be a mandatory thing to enable sharing - for our use case it would be fine.
w.r.t. performance, I don't understand the problem:

assuming the controller has a cache of the state of all relevant ingress objects (which except for the special case of controller restart, it should)
changes to any one ingress object would require at most updating one ALB configuration, which is the same overhead as today
more k8s objects may need to be consulted; but the cache gives a low constant factor on the lookup time, and there are no NP or NPC problems involved: finding compatible ALB configurations is a nlogn problem (hash the relevant fields in canonical form to get a key, insert all ingress objects into a map under their key, et voila). Resolving conflicts is similarly nlogn - build a unified route table from all the objects, and if a key already exists, its an error.

If the problem with many ingresses today is due to the ALB interactions and AWS ratelimits, then that would be made better simply by the act of grouping; if the problem is k8s interactions - I'd need more detail to model and help - but happy to do so...

I like the group idea and with regards to conflict resolution, we could log errors on the ingress that created the conflict, leveraging the last modified timestamps. It might look fairly similar in a debugging situation as we have now.
I'm also a bit of a fan of having the group be an opt-in feature via an annotation either on the ingress or at a namespace level.
From a performance perspective, its worth mentioning that ALBs do not scale instantaneously and when you start to share an ALB across ingresses, you are susceptible to noisy neighbors. The scaling rate is also something along the lines of 2x every N minutes if I remember correctly. That is slow but it will be increasingly slow if multiple services on the ALB receive a burst of traffic simultaneously, which is very common in SOA. All the more reason where from my perspective for Ticketmasters use case, its an opt-in cost optimization.

:D if we have such groups, we can add a optional controller option like defaultIngressGroup, which can applies to all ingress without explicit group annotation, which fulfills @rbtcollins use case 😄.
For the performance issue, it mainly came from AWS side. the k8s side is already relies on cache.

Cool; so to summarise:

valid use case
design seems sound
controlled via a 'group' concept
opt-in capability to have a default group
whether it makes sense for a given use case depends on workload + ALB specifics (e.g. SOA noise + ALB scale responsiveness), so we offer both shared and non-shared as a result.

I think conflict handling on things that are either a) already grouped or b) requested to group should be to:

notify all ingresses that will have their ingress request not work via events

don't apply conflicting requests at all

since precedence may not be establishable, a safe default is to cease updating the ALB altogether until the ingresses converge on a non-conflicting specification

but in some cases it may be possible to still honour ALB updates for some ingresses. I think that should be a second stage development.

not all differing annotations will conflict - for instance, target-type can be different per ingress object with no issues (that I can see)

Example of the special cases I'm thinking of:
Ingress A: host X, /
Ingress B: host X, /
Ingress C: host Y. /
While we can't canonically say which of A or B should get host X:/, Y:/ is unconflicted, and we could in principle merge that into the existing ALB config without altering any existing rules for X. Then only A and B ingresses need error events registered.

Is any activity around ALB sharing stuff? Maybe some help needed?

@dshmatov
Hi, the sharing stuff should be delivered in Dec. I want to add cognito support before that 😄

Related: #228, #298, #724

Please consider updating the priority on this one.
We're having about 30-40 Services per Stage  (x3 Stages) , each beeing deployed with an independent Ingress definition.
The cost of about 100 ALBs is a real showstopper for this tool right now.

If the sharing ALB is needed immediately, you should use ingress-merge.
https://github.com/jakubkulhan/ingress-merge
So far, It works well.

Look forward to this feature!

Is there any ETA on this feature? It seemed as one of the very much wanted.

Looks like there's an alpha version here: https://github.com/kubernetes-sigs/aws-alb-ingress-controller/issues/914

@M00nF1sh  Great work with this. is there any estimate on the  feature testing/release?

Commenting to hopefully remove the stale label because this would be very useful to my team.

/remove-lifecycle stale

/remove-lifecycle stale

Hi what is the status of this feature?

Will you look at how Microsoft AKS solved this?
https://docs.microsoft.com/en-us/azure/application-gateway/ingress-controller-multiple-namespace-support
https://github.com/Azure/application-gateway-kubernetes-ingress/blob/master/docs/features/multiple-namespaces.md
helm for their LB
  ###########################################################################
    # Specify which kubernetes namespace the ingress controller will watch
    # Default value is "default"
    # Leaving this variable out or setting it to blank or empty string would
    # result in Ingress Controller observing all acessible namespaces.
    #
    # kubernetes:
    #   watchNamespace: <namespace>

Ingress per namespaces

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: websocket-ingress
  namespace: staging
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
    - host: www.contoso.com
      http:
        paths:
          - backend:
              serviceName: web-service
              servicePort: 80

Ingress per namespaces
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: websocket-ingress
  namespace: production
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
    - host: www.contoso.com
      http:
        paths:
          - backend:
              serviceName: web-service
              servicePort: 80

I like the "Group" idea even better than the AKS solution. This way we can have a centralized ALB or multiple ALBs per application depending on our requirements, without having to deploy multiple times the ALB Ingress.
I also liked the way AKS solve the rule conflicts, basically first in->first served.

It's been 2 years since.
Is anyone still working on this?

this would be very useful to us.

I have two services with one ALB each one with different hostnames and ACM certificates. Now joining two ALB in one
I don't know how to handle the annotations for ACM certificates. Each ingress should declare it's own ACM exclusively. I should use the same ACM list for each ingress?

Bump. This would be a really useful feature to have.

+1

@M00nF1sh any update on this request?

/remove-lifecycle stale

no update? :(

This is a desperately needed feature for my organization as we already have hundreds of load balancers created by various departments for lots of legacy apps. My department is transitioning one set of environments over to EKS which would further explode that number if we can't share ALBs created by the controller.

I was came across the same kind of requirement.
Have to deploy 20+ services in kubernetes in AWS Fargate profile. Since the fargate is not support NLB as of now the only option is ALB. But each deployment created new Alb. This needs 20+ public ips and also more cost on alb.
I achieved the solution with two ingress controller, alb ingress and nginx ingress.
Nginx will be the target for alb with port 80. And application services running in cluster with different port and namespaces will communicate nginx.
I have documented my solution. I think it will help your requirement.
https://github.com/rajeshwrn/alb-nginx-controller

Alternative solution: https://github.com/zalando-incubator/kube-ingress-aws-controller

use CloudFormation for deploy ALB (guarantee resources cleanup / transparency)
automatically group ingresses

Alternative solution with two ingress controller, alb ingress and nginx ingress.
Nginx will be the target for alb with port 80. And application services running in cluster with different port and namespaces will communicate nginx.
I have documented my solution. I think it will help your requirement.
https://github.com/rajeshwrn/alb-nginx-controller

@rajeshwrn Yes, I read it before. There is no cotradiction between solution. We also use alb + ingress controller, but few days ago I found zalando ingress controller, and it handles cases with multiple domains better, from my humble point of view

@excavador  Sure, I will try this out. But do you have any idea whether it will work on EKS Fargate.

@rajeshwrn Yes, I read it before. There is no cotradiction between solution. We also use alb + ingress controller, but few days ago I found zalando ingress controller, and it handles cases with multiple domains better, from my humble point of view

@excavador Sure, I will try this out. But do you have any idea whether it will work on EKS Fargate.

Hi guys, just share my 2 cents. Complete solutions might need AWS ACM (HTTPS) and AWS route53 (DNS) to work together. Most of you miss this part and start a new way of doing things.
Stacked load balancer can be hard to troubleshoot. So think twice first. For example timeout and headers.. you will know what I mean when you start using it.
ALB isn't always the best beacuse of the pre-warm behavior, meaning hard to be zero downtime. You may consider NLB. Another reason is because ALB is HTTP only. But I still like it because of target group binding.
To have 2 ACM, you just need to put a comma in between the ARN.
Also like to provide AWS provided way of NLB to do the same thing.
https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/
Cheers and wish you have fun.

@teochenglim ALB + ACM works perfectly fine, as well as SNI (multi-domain) solution.
The only problem on kubernetes side: more useful to have separate small ingress than single ingress to all domains terminated to nginx-ingress-controller to route traffic between namespaces.
If alb-ingress-controller would be able to group separate small ingresses to single ALB me personally would be happy completely

If alb-ingress-controller would be able to group separate small ingresses to single ALB me personally would be happy completely
@excavador That's what everybody hope for.

https://github.com/zalando-incubator/kube-ingress-aws-controller looks very very nice. Would you consider helm Charts it?

Would you consider helm Charts it?

@teochenglim I am not an developer, just random user from random company :)
https://github.com/helm/charts/pull/4538

We are doing the final phase of testing for the new aws-loadbalancer-controller and the RC image is here https://github.com/kubernetes-sigs/aws-alb-ingress-controller/releases/tag/v2.0.0-rc5. You can find details here https://github.com/kubernetes-sigs/aws-alb-ingress-controller/tree/v2_ga. Stay tuned for What's new coming soon !

Looked into documentation of new version: https://github.com/kubernetes-sigs/aws-alb-ingress-controller/blob/v2_ga/docs/guide/ingress/annotations.md
WOW. Just WOW. Thank you for your work!

We have published the v2.0.0 release at https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/tag/v2.0.0 The documents have been updated https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html and https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html and the blog post is here https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/

closing this as v2.0.0 is released

🎉  https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/ 🎉


Vue Apollo Composable 4, prefetch not working in ssr mode

Describe the bug
When VueJS 3 application is running in ssr mode, the prefetch apollo is not working.
To Reproduce
export default defineComponent({
  name: 'Graphql',
  setup() {
    const { result } = useQuery(DEMO_QUERY, {}, {
      prefetch: true,
    });

    return {
      result,
    };
  },
});

My workaround is to add a promise in serverPrefetch to wait values:
export default defineComponent({
  name: 'Graphql',
  setup() {
    const { result, loading } = useQuery(DEMO_QUERY, {}, {
      prefetch: true,
    });

    return {
      result,
      loading,
    };
  },
  async serverPrefetch() {
    return new Promise((resolve) => {
      watch(
        () => this.loading,
        () => resolve(),
      );
    });
  },
});

Link to a project:
https://github.com/shenron/vue3-example-ssr/blob/apollo/src/pages/Graphql.vue
Expected behavior
In my mind, because I set prefetch to true, the query should be resolved before the renderToString.
Versions
vue: 3.0.2
edit: apollo-client: 4.0.0-alpha.12
@apollo/client: 3.2.0
@vue/apollo-composable: 4.0.0-alpha.12

Where did you found apollo-client 4.0.0? Probably you mean vue-apollo 4.0.0? In case of that what apollo-client version do you have? It should be something around 3.2 or 3.3. In my case everything works with vue-apollo v3.0.5 + apollo-client v3.2.6.

I'm sorry I mix-up apollo-client and @vue/apollo-composable versions ...
(about vue-apollo-composable I patched like this: https://github.com/vuejs/vue-apollo/issues/1081#issuecomment-725983099)

{
    "@vue/apollo-composable": "file:vue-apollo-composable-v4.0.0-alpha.12.tgz",
    "apollo-client": "^2.6.10",
    "vue": "^3.0.2",
  },

I replaced apollo-client by<EMAIL_ADDRESS>but I still have the same problem. Because I use vue-apollo-composable, I guess I don't need vue-apollo client?

I too am having this issue :cry: with the warning....
export 'onServerPrefetch' was not found in 'vue-demi'

Any help would be greatly appreciated!

Looks like @vue/apollo-composable is using getCurrentInstance().isServer to skip prefetch. This isServer flag doesn't seem to be part of Vue 3: https://github.com/vuejs/vue-next/blob/c421fb91b2bec047e665f8269e231bf89f9bfc93/packages/runtime-core/src/component.ts#L203

I think this is fixed in the latest alpha versions. vm.$isServer is not used anymore


Fix use-after-move in val/validate.cpp

Fix a use-after-move (potential) bug found by the
"bugprone-use-after-move" clang-tidy check.
This is part of a Chromium-related effort (see
https://crbug.com/1122844).

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Support running pretender in node with jsdom

Testing Object.prototype.toString.call(process) in several versions of node (back to 0.12.18) I always saw it equal [object process], not [object Object]. This is all that's preventing me from running my integration suite in node using jsdom.
Fixes #152
Fixes #191

Is there any way this would get merged? Resorting to headless browser just to be able to do ajax when everything else works like a charm seems a bit excessive...

... a month later, still the same status... Is it ever going to change?

Could we get a comment on this?  I understand time is limited but just a quick note about whether maintainer(s) consider this a problem and/or whether the proposed solution makes any sense would be great.

@trek what do you think? Seems like a simple enough change

@samselikoff I'm down. Merge away.

@JakeDluhy thank you and sorry about the delay!
If you (or anyone) has time/energy to add some Node tests to the lib to cover this, that would be awesome

Thanks for getting to this!

Finally! Thank you! When is this going to be officially released?

@padcom Believe this is in v2.1.0


Bug: live_grep and live_grep related commands do not open anything.

RTFM Checklist

[X] I have searched exisiting issues / discussions
[X] I have read the Wiki including the Advanced section
[ ] I have read man fzf / I am well versed in shell fzf

Operating system
Linux
Shell
bash
Neovim version (nvim --version)
NVIM v0.10.0-dev-2680+gd3e51603b
Fzf version (fzf --version)
0.24 (devel)
Output of :lua print(os.getenv('FZF_DEFAULT_OPTS'))
nil
Is the problem reproducible with mini.sh?

[X] My issue is reproducible with mini.sh
[ ] My issue IS NOT reproducible with mini.sh
[ ] I have not tested with mini.sh (not relevant, requires LSP, Windows, etc)

Fzf-lua configuration
require('fzf-lua').setup({
})

Describe the bug / steps to reproduce
I used the quickstart script. When I hit Ctrl-L, nothing happens, no buffer, window opens.

Does anything else work files, buffers, etc?
Does it work if you run :FzfLua live_grep?
Does ctrl-k work?
Is there any error in :messages?
What terminal are you using and is it possible you have an overriding map for ctrl-l?

Yes. Files, grep and everything else works fine.
Only think is anything with live_ doesn't open the UI.
When i run the Lua function directly live_grep, nothing happens in my neovim. I am using bash.
I can share my .dotfiles if needed.

Do you have rg installed?
Does :FzfLua live_grep rg_glob=false work?
What about :FzfLua live_grep_native?
Does :FzfLua grep_xxx  variants work properly?
Can you post a screnshot of the screen that opens up after :FzfLua grep_project debug=true (I'm interested in the [DEBUG] line inside fzf)?
Does :lua require("fzf-lua").fzf_live("rg -e") work?
How about :lua require("fzf-lua").fzf_live("grep <query> *")?

Btw, I just realized your truly ancient fzf version which isn’t even supported by the maintainer of fzf itself.
I’ll make sure this works because I can but if you upgrade your fzf version this is most likely going to work and you’ll also get a better UI experience as the new versions contain quality of life improvements.

Thanks, it works fine with updated fzf.


layout is off and most links not clickable after changing to purplemine2 theme.

Hi,
I downloaded the latest theme V2.0 and apply it. After that the redmine layout if way off and most links are not clickable. My redmine is installed via bitnami redmine+agile. I am not sure if this has anything to do with bitnami or browser settings?
Details:
Browser tested: chrome and firefox. Both not working.

I tested it with Agile plugin on Redmine 3.0, 3.4, and 4.0 and no issues on Chrome, Firefox, and Edge.
Try inspecting a few links with browser dev tools (right click on the element, click inspect), see which on what element click ends up landing and where its CSS is coming from. Screenshots would be useful, also see if you have any other plugin apart from Agile.

I did a fresh install and the theme works as expected. I have many other plugins and i guess one of it messed up the layout of themes. So this definitely not purplemine2 theme issue. I will close this. Thanks for taking time to verify.

sorry to reopen this again, i found that after installing custom menu plugin from rmplus.pro, it breaks purplemine2 theme.
Initially I thought the plugin is broken, but after I realized other themes like "A1", "Circle", "Coffee" and "yh redmine theme" all works without issue, I figured I should reopen this , maybe you can help to shed some light on why purplemine2 isn't.
The closest modern theme similar to purplemine2 is "redmine-theme-yh" but still, i personally prefer purplemine2 theme if it is working.
not working with purplemine2 (all links are not clickable after apply the theme):

working with yh theme:

Ah, good spot, now I can investigate it 👍

@smetis Please check 97b68972f7c20ef155b47ffa4399db9ce2e08ef7 or the issue-89-custom-menu-plugin-breaks-layout branch and see if it resolves all issues

@mrliptontea this branch works well with the plugins, appreciate your superb fast response. I think we can close this and merge into master.


Add emma as a collaborator to dns/dhcp from elcorbs:patch-1 fork

Adding this from fork PR elcorbs:patch-1

Informational changes only so approving this change.

Informational changes only so approving this change.


Archival: Always read/delete history from eventsV2

Coverage decreased (-0.05%) to 66.422% when pulling 8b31391cdf54fa14f2ba9891cbd3924534c09641 on yycptt:0.9.x-patch into 6ff962cc6397f059599d433141358620c129c227 on uber:0.9.x.


Morning session: peer-to-peer code reviews

This issue is opened for the code reviews by the team members of the morning session.

Highlights

your project is displayed dynamically
you have followed the guidelines
you used the best practices

Own thoughts:

Everything looks awesome.
You code is very organized
every requirement is completed
The font sizes are very carefully set.


Add encoding parameter to {read,write}_text (PEP 597).

(Migrated from https://gitlab.com/documatt/sphinx-reredirects/-/merge_requests/11. Requested 3 months ago by Anderson Bravalheri @abravalheri.)
With the introduction of PEP 597, relying on the default value of
encoding for functions that read/write files is no longer recommended,
and developers have been incentivised to run tests using
PYTHONWARNDEFAULTENCODING=1 to identify when the encoding argument
is not given.
As a result, when PYTHONWARNDEFAULTENCODING=1 is set on the CI
environment responsible for building the docs, sphinx_reredirects
will emit a EncodingWarning: 'encoding' argument not specified.
The objective of this change is to comply with the PEP's recommendations
and avoid the EncodingWarning from being emitted.
(Proposed changes: https://gitlab.com/documatt/sphinx-reredirects/-/merge_requests/11/diffs?commit_id=93dd8ebe5afcbbd57aa3e70752687b45f319d355.)

Good idea, this should address warnings that appear in CI jobs such as https://github.com/pypa/setuptools/actions/runs/9179511894/job/25241806696:
/home/runner/work/setuptools/setuptools/.tox/docs/lib/python3.12/site-packages/sphinx_reredirects/__init__.py:151: EncodingWarning: 'encoding' argument not specified
  at_path.write_text(content)

For what it's worth, there's a Pylint/ruff rule for that: PLW1514

I encountered this issue today (also in the setuptools project). Anderson's merge request looks right to me. What can we do to get it merged?

Fixed in just released v0.1.4.

https://documatt.com/sphinx-reredirects/rn.html
https://pypi.org/project/sphinx-reredirects/0.1.4/

Thanks all for patience 😇


Ubuntu 18.04 problem

I search a notes like this.
I installed before a tomboy.
Later I installed tomboy-ng.
When I close all notes and next i try open it again i have error
Another instance of tomboy-ng appears to be running. Will exit.
Something was wrong.

Hi pisulski, thanks for your report.
You get that message in versions of tomboy-ng up to v0.24 when you try to start a second instance. Its a bad idea to have two instances running at the same time so I check to see if another one is running at starts up.
( The current version, V0.25, does this much better, rather than giving you an error message, instead, it automatically opens the first instance's seach window and closes itself down. )
So, to solve your problem, look to see if you do already have one copy of tomboy-ng running before starting another.   If you cannot see the System Tray icon but still get that error message, it is possible that tomboy-ng has crashed but left something running in memory.
To see if there is a 'zombie' tomboy-ng running, try this command at the command prompt -
ps aux | grep tomboy-ng [enter]
It will probably pick out and show you the command you just entered but if it also shows a second entry that has been running for longer, there is your problem.
You should upgrade to the newer version, V0.25.   But if you do upgrade, please make sure the older V0.24 is not running  before you start the new one !  Thats quite important.
If you have problems wih tomboy-ng crashing, please start it from the command line and see if you see some error messages. And let me know !
Davo

OK, guess this is all OK now.
D


Test PR

Verify CircleCI Build

@Dee-Tyan Great effort so far! but why is CircleCI not getting initialized automatically? Also, make sure CircleCI actually builds the projects not just displaying "Hello World"
Don't forget to also make sure CircleCI gets initialized when a PR is sent from a forked repo
Toggle this on;

I've turned on the functionality to build forked PRs, but I'm a bit stuck.
Circe is new to me, so it's confusing to navigate. For instance, I have tried running the pipeline from scratch to run a build command, but now I have three pipelines running the hello world script.
I need your help to figure this out. How do I change the run scripts? @Zolix-ai

@Dee-Tyan Great effort so far! but why is CircleCI not getting initialized automatically? Also, make sure CircleCI actually builds the projects not just displaying "Hello World"
Don't forget to also make sure CircleCI gets initialized when a PR is sent from a forked repo
Toggle this on;

@Dee-Tyan Great effort so far! but why is CircleCI not getting initialized automatically? Also, make sure CircleCI actually builds the projects not just displaying "Hello World"
Don't forget to also make sure CircleCI gets initialized when a PR is sent from a forked repo
Toggle this on;

I've turned on the functionality to build forked PRs, but I'm a bit stuck.
Circe is new to me, so it's confusing to navigate. For instance, I have tried running the pipeline from scratch to run a build command, but now I have three pipelines running the hello world script.
I need your help to figure this out. How do I change the run scripts? @Zolix-ai

I think I have figured it out because I am running the build script for the project... please can you confirm?

Hi, @Dee-Tyan Did you turn on "Only build pull request" in the CircleCI settings? I also think you should create a PR from your circleci-project-setup branch into your master branch.

Zolix opened a pull request to merge into the branch with the circleci-project-setup, so I don't think that's the problem. I'm waiting for the confirmation the tests passed. Thanks for the pointer!

@Dee-Tyan Great job!

@Dee-Tyan Great job!

Thank youu!


I want to implement the example of dynamic operation. What should I do?

Path a reverse proxy a website, path B reverse proxy B website.

The following code will not set the correct local resource path.
var forwarder = app.Services.GetService();
app.Map("/test/a", async httpContext =>
{
var error = await forwarder.SendAsync(httpContext, "https://cn.vuejs.org/", httpClient, requestConfig,
static (context, proxyRequest) =>
{
        var queryContext = new QueryTransformContext(context.Request);
        PathString p = new PathString(context.Request.Path.Value.Replace("/test/a", ""));
        proxyRequest.RequestUri = RequestUtilities.MakeDestinationAddress("https://cn.vuejs.org/", p, queryContext.QueryString);
        proxyRequest.Headers.Host = null;
        return default;
    });

// Check if the proxy operation was successful
if (error != ForwarderError.None)
{
    var errorFeature = httpContext.Features.Get<IForwarderErrorFeature>();
    var exception = errorFeature.Exception;
}

});

Note Map already moves "/test/a" from the Request.Path to Request.PathBase.
What was the input url, the resulting RequestUri, and your expected value?

Note Map already moves "/test/a" from the Request.Path to Request.PathBase.
What was the input url, the resulting RequestUri, and your expected value?

If you directly use request.path, the requesturi will become https://cn.vuejs.org/test/a
But it makes https://cn.vuejs.org/ All internal resource 404 errors.

Note Map already moves "/test/a" from the Request.Path to Request.PathBase.
What was the input url, the resulting RequestUri, and your expected value?

It seems that you can only use the reverse proxy URL of the top-level domain name? If MVC exists, setting the path of the reverse proxy to a node seems to be impossible.

Note Map already moves "/test/a" from the Request.Path to Request.PathBase.
What was the input url, the resulting RequestUri, and your expected value?

I want to visit the website http://localhost:5000/google Achieve the effect of nginx instead of http://localhost:5000/
  location / {
        proxy_pass https://www.google.com;
    proxy_http_version 1.1;
 # 替换指定字符串
            sub_filter                          www.google.com google.test.com;

            sub_filter_once                     off;

            # 指定头部：
            proxy_set_header  Host              "www.google.com";
            proxy_set_header  Referer           $http_referer;
            proxy_set_header  X-Real-IP         $remote_addr;
            proxy_set_header  User-Agent        $http_user_agent;
            # 防止谷歌返回压缩的内容，因为压缩的内容无法替换字符串
            proxy_set_header  Accept-Encoding   "";

            #把 cookie 的作用域替换成你的域名
            proxy_cookie_domain                 www.google.com google.test.com;
            #传固定的 cookie 给谷歌，是为了禁止即时搜索，因为开启即时搜索无法替换内容
            proxy_set_header  Cookie           "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=en-US:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw";

    }

It seems that you can only use the reverse proxy URL of the top-level domain name? If MVC exists, setting the path of the reverse proxy to a node seems to be impossible.

See https://github.com/microsoft/reverse-proxy/discussions/1373 for information about sharing routing with MVC.

It seems that you can only use the reverse proxy URL of the top-level domain name? If MVC exists, setting the path of the reverse proxy to a node seems to be impossible.

See #1373 for information about sharing routing with MVC.

I think this is based on the configuration file, but my English may not be good enough. I can't see whether it is supported or not? I don't know how to modify it if I'm based on the code?

Setting the order in code is harder for Map, it looks like this:
app.Map("/test/a", httpContext =>
{
    return Task.CompletedTask;
}).Add(b => ((RouteEndpointBuilder)b).Order = -100000);

I think this has been answered. Closing issue.


sending vehicle control input to server

Is carlaviz only for visualization ? Is there anyway to control the vehicles by sending control input to the server to steer/accelerate it? I couldn't find any related document to it. Please provide example or documentation if available.

Yes, it is only for viz. I think Carla can be controlled remotely and it is already implemented by Carla team. There are remote ip and port settings in Carla python examples. https://github.com/carla-simulator/carla/blob/master/PythonAPI/examples/spawn_npc.py#L38


Setter in child component not called if component in own module

In the example belowthis.shadowRoot.querySelector('my-fruit').froot = this.fruit; sets property froot on the child component, but its setter is not called.
If including both components in a single module, or if moving the MyFruit component above MyApp, then the setter is called fine.
Is this a bug? If not what is the explanation of this?
<!DOCTYPE html>

    <my-app></my-app>

@rogeru perhaps you're running into async issues. Module scripts are non-blocking, and by placing them both in a separate script one might run before the other.
Try checking the constructor of the child element at the moment of setting the property. If the constructor is HTMLElement, the custom element definition was not loaded yet.

The property is being set when clicking the button, so way later at which point both modules have been loaded.
this.shadowRoot.querySelector('my-fruit').froot = this.fruit;


no function to set maxChargeCurrentAC

weconnect-cli --username xxxxxxxxx --password xxxxxxxxx set /vehicles/WVWZZZAUZLW916270/domains/charging/chargingSettings/maxChargeCurrentAC maximum id /vehicles/WVWZZZAUZLW916270/domains/charging/chargingSettings/maxChargeCurrentAC cannot be set: Could not set value (Resource could not be found - Internal error, please try again later. If the problem persists, please contact our support. - Please retry in a moment)
via WeConnect App i can set the maxChargeCurrentAC to 5/10/13 and MAX without problems.

the same error by set climatisationWithoutExternalPower
weconnect-cli --username xxxxxxxxx --password xxxxxxxxx set /vehicles/WVWZZZAUZLW916270/domains/climatisation/climatisationSettings/climatisationWithoutExternalPower False id /vehicles/WVWZZZAUZLW916270/domains/climatisation/climatisationSettings/climatisationWithoutExternalPower cannot be set: Could not set value (The provided request is incorrect - Internal error, please try again later. If the problem persists, please contact our support. - Please retry in a moment)

That is an answer from the VW Servers I cannot do anything about.

That is an answer from the VW Servers I cannot do anything about.

ok, thx for the fast feedback


[Bug]: REST API content type is auto setting and removing user set content type

Is there an existing issue for this?

[X] I have searched the existing issues

Description
Ref: https://theappsmith.slack.com/archives/C040LHZN03V/p1669537528438219
Steps To Reproduce
Ref: https://theappsmith.slack.com/archives/C040LHZN03V/p1669537528438219
Public Sample App
No response
Issue video log
No response
Version
cloud, self hosted

Notion Doc Link: https://www.notion.so/appsmith/The-issue-with-API-Content-Types-84c2dfdc31fd4c87827176904de58b27

The PR works as per expectation on the local


Issue escaping string attributes with " characters?

We are getting a bunch of OPeNDAP services set up and I'm running into an issue parsing attributes from requests like:
import xarray as xr
u = "https://labs-beta.waterdata.usgs.gov/api/xpublish/PRISM_v2/datasets/zarr-s3-osn/opendap"
xr.open_dataset(u)

The zarr dataset is accessible as:
import fsspec
import xarray as xr

zarr_url = 's3://mdmf/gdp/LOCA_historical.zarr/'

fs = fsspec.filesystem('s3', anon=True, endpoint_url='https://usgs.osn.mghpcc.org/')

ds = xr.open_dataset(fs.get_mapper(zarr_url), engine='zarr',
                             backend_kwargs={'consolidated':True}, chunks={})

(Background on this OSN data source here: https://water.usgs.gov/catalog/usecases/8df9f64f-0f38-4849-9c6f-3d931fd2b2ba/)
https://labs-beta.waterdata.usgs.gov/api/xpublish/PRISM_v2/datasets/zarr-s3-osn/opendap.das is returning some text in the crs variable's attributes that are not escaped properly.
Is that something that's easily fixable?

    String authors "PRISM Climate Group";
    String cdm_data_type "Grid";
    String creator_email<EMAIL_ADDRESS>    String creator_name "Christopher Daley";
    String geospatial_lat_max "53";
    String geospatial_lat_min "24";
    String geospatial_lon_max "-67";
    String geospatial_lon_min "-125";
    String id "prism/thredds/cida.usgs.gov";
    String institution "Oregon State University";
    String keywords "Atmospheric Temperature, Air Temperature Atmosphere, Precipitation, Rain, Maximum Daily Temperature, Minimum  Daily Temperature";
    String keywords_vocabulary "GCMD Science Keywords";
    String license "Freely Available: The PRISM Climate Group, Oregon State University retains rights to ownership of the data and information.";
    String naming_authority "cida.usgs.gov";
    String publisher_name "PRISM Climate Group";
    String publisher_url "http://prism.oregonstate.edu/";
    String summary " This dataset was created using the PRISM (Parameter-elevation Regressions on Independent Slopes Model) climate mapping system, developed by Dr. Christopher Daly, PRISM Climate Group director. PRISM is a unique knowledge-based system that uses point measurements of precipitation, temperature, and other climatic factors to produce continuous, digital grid estimates of monthly, yearly, and event-based climatic parameters. Continuously updated, this unique analytical tool incorporates point data, a digital elevation model, and expert knowledge of complex climatic extremes, including rain shadows, coastal effects, and temperature inversions. PRISM data sets are recognized world-wide as the highest-quality spatial climate data sets currently available. PRISM is the USDA's official climatological data. ";
    String time_coverage_end "2015-12-01T00:00";
    String time_coverage_resolution "Monthly";
    String time_coverage_start "1895-01-01T00:00";
    String title "Parameter-elevation Regressions on Independent Slopes Model Monthly Climate Data for the Continental United States. July 2016 Snapshot";
    String name "PRISM_v2: zarr-s3-osn";
    String description "Open Storage Network Pod S3 API access to collection zarr group";
    String stac_collection "https://code.usgs.gov/wma/nhgf/stac/-/raw/b3bcf1cc98f9622ed6957184be2cb1beca91566f/catalog/PRISM_v2/collection.json";
    String url_path "s3://mdmf/gdp/PRISM_v2.zarr/";
}

I think this is the same issue that is getting worked on in #48 as aufdenkampe recognized.

This should be closed by https://github.com/xpublish-community/xpublish-opendap/pull/48


[WIP] Make dialyze provider compatible with rebar dialyzer plugin

Rebar 2 is getting a built in dialyzer plugin (https://github.com/rebar/rebar/pull/460) and this PR aims to make rebar dialyzer configuration forwards compatible with rebar3 dialyze configuration. Will use this PR to improve test coverage by requiring tests for the changes.
Todo:

[ ] rebar dialyzer plugin merged
[x] Error on unknown warnings
[ ] Test: unknown module in PLT
[ ] Test: unknown application in PLT
[ ] Test: unknown module in success typing
[ ] Test: unknown application in success typing
[x] Config: {dialyzer_plt_location, file:filename() | local | shared}
[ ] Test: dialyzer_plt_location (missing test for shared)
[x] Config: {dialyzer_plt_extra_apps, [atom()]}
[x] Test: dialyzer_plt_extra_apps
[x] Config: {dialyzer_shared_plt_location, file:filename() | shared}
[x] Test: dialyzer_shared_plt_location
[x] Config: dialyzer_warnings
[ ] Test: dialyzer_warnings

Replaced by #502 and #507.


Automate release Ansible Galaxy

This is a handy workflow that releases on Ansible Galaxy everytime the version is changed on pyproject.toml it also creates a release on Github automatically with the release notes from release-draft.
To make it work it is necessary to create a token on Ansible Galaxy and add it as GALAXY_TOKEN in https://github.com/aalaesar/install_nextcloud/settings/secrets/actions/new

Looks nice.
review ongoing.
I'm trying to understand the code & workflow first :)

Just a missing info, in galaxy.ansible.com you just need to login, go to preferences on the corner and Show API Key to have the secret for Github I mentioned in the description.

@aalaesar I was able to simplify it and remove poetry. We will have to test to see how it goes.

@aalaesar I just tested in another role of mine.. it works fine also.

OK I've added the secret
Still, I don't understand how the condition works here

OK I've added the secret
Still, I don't understand how the condition works here

@aalaesar it is just a check to see if there is parent commit that has a current-version.txt, if it does not have it should not apply version tag.


Make Dockerfile docs accurate

These used to be accurate, but no longer are! Someone showed up on the binder gitter just now
with problems caused by this doc being out of date, so I've updated it.

@minrk @choldgraf @willingc I'm self merging this now since at least one user used these docs and produced a non-working Dockerfile. But do review this after, and I'll update as necessary (or you can too!) - I feel the prose is a bit stilted.

Thanks @yuvipanda for the changes. I'm going to rewrite these docs tomorrow and resubmit a PR for review by @minrk @choldgraf and you. I plan to make the prose more succinct and action oriented as well as run all through the checkers that I have used.
In general, I think it would be better when running across these errors and out of date info comes up to make the minimal change needed for a quick doc edit (which is ok to self merge if truly critical) and then create an issue or larger PR for the overall review of the content. In most cases, a 24 hour review cycle is preferable and minimizes the possibility of things falling through the cracks. Yes, we want to be responsive to users, but many times 24-48 hours will not matter especially if the issue and/or PR is open since most users will search the repo.

Thanks @willingc.
I think I'm still in the mode of 'early project with one person working on it' in some ways, and that's not useful now. I'll actively adjust!

I understand and appreciate it 🍨


Construct IndexScaNN in faiss deserialization

When we develop ScaNN index, it inherits from IndexRefineFlat object and do not treat it as a special case in faiss serialization procedure.
So when we deserialize the ScaNN index, we have to construct IndexScaNN object when its base index is IndexIVFPQFastScan. Currently knowhere will cast the index type, so it works fine now, but this should be fixed indeed.

Thanks @alexanderguzhva for pointing this out.


Broken references when deploying on GitHub pages

Damn...
Currently searching for a solution :slightly_smiling_face:

Fixed in version 0.9.1 (https://github.com/pawamoy/mkdocstrings/commit/36f804beab01531c0331ed89d21f3e5e15bd8585)


docs(React): React README

Scope
This change adds documentation about the incubating React app.
Changes
Adding a doc to cover basic information about React App as well as how to add an entity.
Checklist

[x] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[x] Links to related issues (if applicable)
[x] Tests for the changes have been added/updated (if applicable)
[x] Docs related to the changes have been added/updated (if applicable)

Rendered: https://github.com/jjoyce0510/datahub-1/blob/ReactReadMe/datahub-web-react/README.md


Constant names, method names, and misc fixes.

Fixes CheckStyle issues:

For package-private constants, changed names to capitals with underscores (ie. KeySizeInBytes, _defaultIv, RsaNone)
Updated RsaKey.KeySize* to constants
For switch statements missing default, added the default case where it returns null
Added suppressions for publicly available methods and constant names that had incorrect naming.

/cc @JonathanGiles @mayurid
Would you mind double checking that the changes make sense? I compared them to the Azure SDK for .NET to figure out what the intention of some overlapping code are. Thanks! :)

Can one of the admins verify this patch?


No IP Address in Domain Configuration

I installed Kalm on a Rancher k8s cluster. The access by kubectl port-forward ... is working fine, but when I tryed to Finish The Setup Steps, Kalm can't show the load balancer IP address, as showed bellow:

My k8s cluster is behind a nginx acting as reverse proxy. I created a entry on my DNS to point to this reverse proxy, and from there, to the actual k8s cluster nodes. When I try to access the URL pointing to Kalm, I receive the following message on the browser:

When I check and continue, I receive the message on the image above.
If I continue anyway on Kalm setup screen, after a while it shows all green but still not working.
Please help me

If it shows all green, it means the certs and routes are created successfully.
 If so, you need to run minikube tunnel first. If not, please provide what platform your are using to run the cluster, and provide some details(yaml, describe info) about the istio-ingressgateway service under istio-system namespace.
"Default backend -404" messags seems returned from your nginx ingress. I'm not sure about your nginx config, can you provide some details?
Note: To make sure kalm functions working, traffic should go into istio-ingressgateway first. You can try to set istio-ingressgateway service as a upstream in your nginx config.

Hi @davidqhr ! I'll try show more details here.
My rancher k8s cluster sits on a air gapped network. It runs in three Ubuntu 18.04 nodes. It's not on a minikube, is a full k8s implementation. To enter, the trafic passes thru a external nginx reverse proxy server. So, I created a DNS entry to kalm.mydomain.com pointing to nginx who have this configuration:
upstream kalm-upstream {
    ip_hash;
    server <IP_ADDRESS>;
    server <IP_ADDRESS>;
    server <IP_ADDRESS>;
}

server {
    listen 80;
    server_name kalm.mydomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name kalm.mydomain.com;

    ssl_protocols        SSLv3 TLSv1;
    ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;

    location / {
      proxy_pass        http://kalm-upstream;
      proxy_set_header  Host              $http_host;   # required for docker client's sake
      proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
      proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto $scheme;
      proxy_read_timeout                  1800s;
    }
}

Inside k8s, the istio-ingressgateway yaml is:
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"istio-ingressgateway","install.operator.istio.io/owning-resource":"istiocontrolplane","istio":"ingressgateway","operator.istio.io/component":"IngressGateways","operator.istio.io/managed":"Reconcile","operator.istio.io/version":"1.6.1","release":"istio"},"name":"istio-ingressgateway","namespace":"istio-system"},"spec":{"ports":[{"name":"status-port","port":15021,"targetPort":15021},{"name":"http2","port":80,"targetPort":8080},{"name":"https","port":443,"targetPort":8443},{"name":"tls","port":15443,"targetPort":15443}],"selector":{"app":"istio-ingressgateway","istio":"ingressgateway"},"type":"LoadBalancer"}}
  creationTimestamp: "2020-09-14T15:36:47Z"
  labels:
    app: istio-ingressgateway
    install.operator.istio.io/owning-resource: istiocontrolplane
    istio: ingressgateway
    operator.istio.io/component: IngressGateways
    operator.istio.io/managed: Reconcile
    operator.istio.io/version: 1.6.1
    release: istio
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:kubectl.kubernetes.io/last-applied-configuration: {}
        f:labels:
          .: {}
          f:app: {}
          f:install.operator.istio.io/owning-resource: {}
          f:istio: {}
          f:operator.istio.io/component: {}
          f:operator.istio.io/managed: {}
          f:operator.istio.io/version: {}
          f:release: {}
      f:spec:
        f:externalTrafficPolicy: {}
        f:ports:
          .: {}
          k:{"port":80,"protocol":"TCP"}:
            .: {}
            f:name: {}
            f:port: {}
            f:protocol: {}
            f:targetPort: {}
          k:{"port":443,"protocol":"TCP"}:
            .: {}
            f:name: {}
            f:port: {}
            f:protocol: {}
            f:targetPort: {}
          k:{"port":15021,"protocol":"TCP"}:
            .: {}
            f:name: {}
            f:port: {}
            f:protocol: {}
            f:targetPort: {}
          k:{"port":15443,"protocol":"TCP"}:
            .: {}
            f:name: {}
            f:port: {}
            f:protocol: {}
            f:targetPort: {}
        f:selector:
          .: {}
          f:app: {}
          f:istio: {}
        f:sessionAffinity: {}
        f:type: {}
    manager: operator
    operation: Update
    time: "2020-09-14T15:36:46Z"
  name: istio-ingressgateway
  namespace: istio-system
  resourceVersion: "52628612"
  selfLink: /api/v1/namespaces/istio-system/services/istio-ingressgateway
  uid: 27b6daa4-4394-485a-8e81-304aa7969fbc
spec:
  clusterIP: <IP_ADDRESS>
  externalTrafficPolicy: Cluster
  ports:
  - name: status-port
    nodePort: 30134
    port: 15021
    protocol: TCP
    targetPort: 15021
  - name: http2
    nodePort: 31398
    port: 80
    protocol: TCP
    targetPort: 8080
  - name: https
    nodePort: 31896
    port: 443
    protocol: TCP
    targetPort: 8443
  - name: tls
    nodePort: 32663
    port: 15443
    protocol: TCP
    targetPort: 15443
  selector:
    app: istio-ingressgateway
    istio: ingressgateway
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

A strage thing is that istio-ingressgateway still in pending state:

There is a istio-ingressgateway service that is also in pending state:

Thank you for your help!

Interesting, never thought about this architecture pattern. Let me share my thoughts, you can refer to them to solve your problems.
The reason your service is pending. Because, It looks like you are using a custom deployed Kubernetes Cluster. In this case, there is no LoadBalancer integrated (unlike AWS or Google Cloud). With this default setup, you can only use NodePort.
Your nginx is running as a HTTP reverse proxy in front of kalm, and do the TLS termination.
Refer to the upstream ips, I guess your nginx is not running in cluster, and those ips are kuberentes nodes' ips.
In this case, your servers in upstream should also contain the node ports of ingress service in kalm.
In you case, the port should be 31398. So your upstream should configure as following.
upstream kalm-upstream {
    ip_hash;
    server <IP_ADDRESS>:31398;
    server <IP_ADDRESS>:31398;
    server <IP_ADDRESS>:31398;
}

To be honest. This is not kalm recommanded way to use. I can tell a set of kalm functions will not work.

https route should not be used, since your traffic goes into kalm all from http port.
certifications should not be used, since you handle the TLS out of kalm.
Kalm may support TCP traffic routing in the future. But your front nginx only runs as a http reverse proxy, I don't think they can work together.

But I look forward to your successful integration of kalm into your environment, because I hope that kalm can be easily
integrated into various tool chains.


debug: windows GH action failure

Fix: https://github.com/adoptium/temurin-build/issues/3206
test result with only windows enabled https://github.com/adoptium/temurin-build/actions/runs/3891218116/jobs/6641190084
final commit is squashed commits and enabled all platforms

looks like the change to use cygwin action is working https://github.com/adoptium/temurin-build/actions/runs/3891218116/jobs/6641190247

would be good to have this one reviewed first.
some smoketests are failing (no problem for building on windows) , seems related to the change of Cacert number.
I need to take a look why it got 139 rather than 138, but will have a different PR to fix smoketest.


wal_files service does not need superuser privileges since 10

We should mention that this service does not need  superuser privileges since 10 thanks to pg_ls_waldir function:
https://github.com/OPMDG/check_pgactivity/blob/b205d4a436ea38e687dfc431042935bbcf348101/check_pgactivity#L7053

We already mention that we support the pg_monitor role feature for practically every services, expect btree_bloat and table_bloat which both requires a GRANT on pg_statistic, and temp_files which requires superuser privileges.
But I agree that we should mention somewhere that we support this feature for every services expect the 3 ones above. I think this information must be added in a separate part of the documentation.

Included in #171

Fixed


IP List Functionality

Being able to feed in a list of IP addresses would be potentially a useful feature, for example, for where one does a "pre-scan" of a range for the open RSTP ports using something like zmap or masscan, prior to passing to this tool.

Hi, it's already possible to do so by passing the IP list as a parameter to the program.

your_subnetwork can be a subnet (e.g.: <IP_ADDRESS>/24) or even an IP (e.g.: <IP_ADDRESS>)

I forgot to precise the fact that it can also be a list of IPs, a range of IPs or even a mix of both.
Example: -s <IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>-<IP_ADDRESS>
This will scan the cameras with the IP <IP_ADDRESS>, 11, 14, 15, 16 and 17.
I will add more details to this argument in the README to improve user experience! Thank you.

@0x27 Please tell me if the updated README file provides the information you need. I will consider this issue half-fixed because the root of the problem is the name of the argument, subnetwork which should actually be renamed to make it easier to understand that it can be something else than a subnet that is passed. I will do this this week-end.

[ ] Update README file
[ ] Rename subnet argument


Doesn't work

Cool idea and the demo works but I get no scaling when I hover with the quickstart code. I can see it hasn't been updated in a couple years but in future projects, please provide quickstart code that works, and/or don't minify the working demo in gh-pages please.

See the demo branch for non-minified code.

Ah, my bad. Thank you


Add Icons to Navbar

Describe the feature
Hello Project Admin
I would like to add icons to Navbar
Can you assign me this issue under GSSOC'24 @anuragverma108
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@anuragverma108 I would like to work on this issue

not so good idea!!


[main] Upgrade to latest dependencies

release -dprotaso
/cc knative-sandbox/source-wg-leads lberk
/assign knative-sandbox/source-wg-leads lberk
Produced by: knative-sandbox/knobots/actions/update-deps
Details:
bumping knative.dev/eventing 850528b...0310bf9:
  > 0310bf9 Fixing docs eventing spec details (# 6082)
  > 3b3eac1 Enable features configmap watching and fix mt broker filter subscriptions API implementation (# 6089)
  > 89b588f Wait for expected number of replicas in Scheduler tests (# 6083)
  > 9e0e90c Prober waits until receiver state != active or timeout (# 6074)
  > f074878 :fire: Remove k8s 1.20 APIs (# 6068)
  > ad895de Upgrade test waits for sender deletion (# 6050)
  > c94bfb3 upgrade to latest dependencies (# 6065)
  > ef00e28 Update and rename roadmap-2021.md to roadmap.md (# 6067)
  > e0e3f44 Implement Subscriptions API Filters in MTChannelBroker (# 5995)
  > 7d73613 Use zap.NewProductionConfig and specific time encoding (# 6043)
  > d7b4d2c Change default Broker delivery spec (# 6011)
  > 76366bc Increase timeout for rekt tests (# 6062)
bumping knative.dev/pkg 768f44f...77555ea:
  > 77555ea upgrade to latest dependencies (# 2398)

/lgtm
/approve


[DO-NOT-MERGE][1.0.x] .ci/pull-request-config.yaml: override Drools version while building drools-ansible-rulebook-integration

FYI @tkobayas, discussion about this PR started on slack thread.

closing it in favor of https://github.com/kiegroup/drools-ansible-rulebook-integration/pull/116