Plugin pre-exit hooks should be called when a task is cancelled

If a task is cancelled, sometimes plugin pre-exit hooks are not called. If a pre-exit hook cleans up docker state, or spins down containers, it might not happen causing bad state to persist.
Example log output:
# Received cancellation signal, interrupting
--
  | 🚨 Error: Error tearing down bootstrap: The plugin docker-control pre-exit hook exited with status -1
  | 2020-03-25 22:42:27 DEBUG  Terminating bootstrap after cancellation with terminated

In this case the task exited with status of 255, but the agent was still available. Note that when the task exits with at status code of 1 it looks like the pre-exit hook is successfully called.

I believe this is also the case for steps that fail because of timeout (timeout_in_minutes) which seems like it should run the pre-exit hook.

Any timeline for fix this issue? invoking pre-exit after cancel-grace-period is necessary for the correctness of the system

@KevinGrandon Is that a timing issue? Do you need a longer cancel-grace-period?
As far as I can tell, when a job is cancelled, the running command receives SIGINT, and when it exits the pre-exit hooks are run; it's tested for in https://github.com/buildkite/agent/pull/789
However if the running command takes more than cancel-grace-period (default 10 seconds) to exit after the SIGINT, the entire bootstrap process is torn down, so pre-exit can't run.
It looks to me like your docker-control pre-exit hook was running, but maybe it was killed by cancel-grace-period? And maybe that's why it's “sometimes”?

@leakingtapan We don't have any current plans to invoke pre-exit when cancel-grace-period has already elapsed. The grace period is for the entire job, and the hooks like pre-exit are part of that job. Can you instead tune your cancel-grace-period and ensure you're not running anything that ignores SIGINT?

Extending grace period is what we do now. However, we cannot ensure all the job are handling signals correctly, as we are running a multi-tenant environment

Hi, just chiming in at the request of our TAM. We're suffering from this issue as well, and we can't reliably use redundant build cancellation because skipping the pre-exit hook of the docker-compose plugin leaves orphan containers on the host, which degrades performance of the Docker daemon over time.
This behaviour was surprising to us, it's not reliable enough for us to up the cancel-grace-period since there's always the risk of a job uploading a large number of artifacts, having a long post-command hook, etc.
It would make the most sense if all of the hooks after the command were guaranteed to run, especially pre-exit, since it's the one that's used most often for system-wide cleanup.
Here's a minimal repro case for a 60-second cancel-grace-period:
.buildkite/pipeline.yml
steps:
  - label: 'Test'
    command:
      - echo 'Running command, it will take 5 minutes to complete'
      - sleep 300
    plugins:
      - docker-compose:
          run: main
          config: docker-compose.yml

docker-compose.yml
version: "3.7"
services:
  main:
    image: "python:3.10.11"
    depends_on:
      - postgres
  postgres:
    image: "postgres:12.3"

.buildkite/hooks/post-command
#!/bin/bash

set -euo pipefail

BUILDKITE_CANCEL_GRACE_PERIOD=60  # This isn't passed in, so hardcode it here
SLEEP_FOR="$((BUILDKITE_CANCEL_GRACE_PERIOD * 2))"
echo "Simulating post-command longer than grace period, perhaps from long artifact upload (${BUILDKITE_CANCEL_GRACE_PERIOD}s -> ${SLEEP_FOR}s)"
sleep "$SLEEP_FOR"

The job is cancelled before completion and killed 60 seconds afterwards. pre-exit hooks are not run

The orphan postgres container
$ sudo docker ps --filter label=com.docker.compose.project=buildkite018aa8fb1715436db26c9aec7fc065a8
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS      NAMES
8cd5e7a91c79   postgres:12.3   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   5432/tcp   buildkite018aa8fb1715436db26c9aec7fc065a8_postgres_1

hey all! thanks for the discussion on this, it's been really helpful in shaping out discussion internally.
i can see where you're coming from on this - having old docker containers hang around after a cancelled build because the grace period wasn't long enough is a weird and bad user experience.
we've chatted a bit about this internally, and one of the key issues with changing this is doing so in a way that's backward compatible, and still makes sense for existing users. there's additional complexity internal to the agent and the way it handles signals, but i won't get further into it here other than to call out that it exists.
a potential solution we discussed was applying the cancel-grace-period to each hook in turn, rather than the entire job as a whole - this would mean that we TERM the currently running hook (including the command hook), then wait the grace period, then KILL it. then we'd start the next hook, wait the grace period, and KILL it if it hasn't completed. the process would repeat until there were no more hooks left to run. we'd consider making this an experiment, or maybe we wouldn't and we'd just make it default behaviour.
this would be a patch fix to guarantee that each hook has the opportunity to run, but we'd likely try to rethink the hook lifecycle as a whole, and how they respond to cancellation, in a further (major) release.
@francoiscampbell et al, does that sound like a workable solution on your end? would this help?

That does make sense for the command hook, but I'm not sure we should apply the grace period to any hooks run afterwards. In my situation, if the Docker Compose stack takes more than cancel-grace-period seconds to shut down in the pre-exit hook, it would still leave orphan containers.
If a timeout is desirable for hooks that are run after a cancellation, I think it should be a separate option with the ability to disable it.

A potentially hacky workaround is to add a pre-command hook that will remove all orphaned containers:
docker ps -aq | xargs docker rm -f


Fix golint import path

I am a bot. Please reach out to @azillion if you have any issues, or just close the PR.

@azillion build fails.


Clear documentation of @LoadBalanced RestTemplate with Ribbon

Following this issue, I think a clearer documentation is warranted when using @LoadBalanced RestTemplate with Ribbon.
After reviewing the RestTemplate source code, it appears that any @LoadBalanced RestTemplate will use RibbonClient internally, however I could not see which properties are taken into consideration and which aren't.
For example, we already see from the issue above that ConnectTimeout and ReadTimeout values need to be set manually.
What about other Ribbon properties? For example, can I select a different load balancing rule, such as Weighted vs default Round Robin? IS the default a Round Robin load balancing? I can't find this in the documentation.
Will a @LoadBalanced RestTemplate honor Ribbon retry properties (MaxAutoRetries, MaxAutoRetriesNextServer), or should I define something else to achieve this functionality?
What other differences should I take into account when using a @LoadBalanced RestTemplate compared to Zuul proxy or Feign client?
Thank you for your help.

Apologies, I have now noticed that implementing retry is described adequetly in the docs.
However, ribbon load balancing rule selection is still missing (if at all possible).
Thanks.


OAuth Signing is broken in 1.3.1

The client is crashing on all attempts to sign requests.
Steps to reproduce:
Try running the sample from README:
from instagram.client import InstagramAPI

access_token = "YOUR_ACCESS_TOKEN"
api = InstagramAPI(access_token=access_token)
recent_media, next_ = api.user_recent_media(user_id="userid", count=10)
for media in recent_media:
   print media.caption.text

----> 1 recent_media, next_ = i.user_recent_media(user_id="userid", count=10)

/usr/local/lib/python2.7/site-packages/instagram/bind.pyc in _call(api, *args, **kwargs)
    194     def _call(api, *args, **kwargs):
    195         method = InstagramAPIMethod(api, *args, **kwargs)
--> 196         return method.execute()
    197
    198     return _call

/usr/local/lib/python2.7/site-packages/instagram/bind.pyc in execute(self)
    180                                                                                self.path,
    181                                                                                self.parameters,
--> 182                                                                                include_secret=self.include_secret)
    183             if self.with_next_url:
    184                 return self._get_with_next_url(self.with_next_url, method, body, headers)

/usr/local/lib/python2.7/site-packages/instagram/oauth2.pyc in prepare_request(self, method, path, params, include_secret)
    222                 url = self._full_url(path, include_secret)
    223             else:
--> 224                 url = self._full_url_with_params(path, params, include_secret)
    225         else:
    226             body, headers = self._encode_multipart(params, params['files'])

/usr/local/lib/python2.7/site-packages/instagram/oauth2.pyc in _full_url_with_params(self, path, params, include_secret, include_signed_request)
    146     def _full_url_with_params(self, path, params, include_secret=False, include_signed_request=True):
    147         return (self._full_url(path, include_secret) +
--> 148                 self._full_query_with_params(params) +
    149                 self._signed_request(path, params, include_signed_request, include_secret))
    150

/usr/local/lib/python2.7/site-packages/instagram/oauth2.pyc in _full_url(self, path, include_secret, include_signed_request)
    142                                   path,
    143                                   self._auth_query(include_secret),
--> 144                                   self._signed_request(path, {}, include_signed_request, include_secret))
    145
    146     def _full_url_with_params(self, path, params, include_secret=False, include_signed_request=True):

/usr/local/lib/python2.7/site-packages/instagram/oauth2.pyc in _signed_request(self, path, params, include_signed_request, include_secret)
    170             if include_secret and self.api.client_secret:
    171                 params['client_secret'] = self.api.client_secret
--> 172             return "&sig=%s" % self._generate_sig(path, params, self.api.client_secret)
    173         else:
    174             return ''

/usr/local/lib/python2.7/site-packages/instagram/oauth2.pyc in _generate_sig(self, endpoint, params, secret)
    125         for key in sorted(params.keys()):
    126             sig += '|%s=%s' % (key, params[key])
--> 127         return  hmac.new(secret, sig, sha256).hexdigest()
    128
    129     def url_for_get(self, path, parameters):

/usr/local/lib/python2.7/hmac.pyc in new(key, msg, digestmod)
    134     method.
    135     """
--> 136     return HMAC(key, msg, digestmod)

/usr/local/lib/python2.7/hmac.pyc in __init__(self, key, msg, digestmod)
     69             blocksize = self.blocksize
     70
---> 71         if len(key) > blocksize:
     72             key = self.digest_cons(key).digest()
     73

TypeError: object of type 'NoneType' has no len()

Hi,
I ran into the same issue, adding the client_secret to the InstagramAPI initialization fixes it, since that is what it uses to sign the calls.
api = InstagramAPI(access_token=access_token,client_secret=client_secret)
Cheers

Nice, thanks

Works for me too. Thanks

If anyone is wondering, why they added this feature, the reason is here

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.


Avoid initializing plugin if not in config.json

Hi,
I noticed today when setting up another homebridge instance to split some of my accessories, that this plugin (installed globally) was trying to setup another node-lifx Client even though I did not add the plugin to the "platforms" section.
Error log:
LIFX Client UDP error
Trace: { Error: bind EADDRINUSE <IP_ADDRESS>:56700
    at Object._errnoException (util.js:999:13)
    at _exceptionWithHostPort (util.js:1020:20)
    at _handle.lookup (dgram.js:266:18)
    at process._tickCallback (internal/process/next_tick.js:152:19)
    at Function.Module.runMain (module.js:703:11)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:618:3
  errno: 'EADDRINUSE',
  code: 'EADDRINUSE',
  syscall: 'bind',
  address: '<IP_ADDRESS>',
  port: 56700 }
    at Client.<anonymous> (/usr/local/lib/node_modules/homebridge-lifx-lan/node_modules/node-lifx/lib/lifx/client.js:147:13)
    at Socket.emit (events.js:159:13)
    at _handle.lookup (dgram.js:267:14)
    at process._tickCallback (internal/process/next_tick.js:152:19)
    at Function.Module.runMain (module.js:703:11)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:618:3

I was able to work around this by having the instance I needed to control the lights with start before the other and ignoring the error.
I also needed to add this change:
LifxLanPlatform.prototype.configureAccessory = function(accessory) {
    if (typeof(this.accessories) != 'undefined') { this.accessories[accessory.UUID] = accessory; }
}

I realize I could probably avoid these issues by installing homebridge locally for multiple users, but is there a possibility to change the plugin to initialize only if it's used?

Sorry for the late reply -- had to investigate why my lights weren't coming on after a power failure and ran into this issue again.
Checking the version, it's 0.2.6. To be sure I removed and re-added from npm.


Implement new VPN site troubleshooting report alert

Task/Issue URL: https://app.asana.com/0/1206580121312550/1208244381783170/f
Description
Implements a new alert to ask the user to report site issues in the VPN.
Design

Scope
There are some known issues with refreshing exclusions.  If a site isn't excluded from the VPN right after you decide to exclude it you can ignore the issue for the scope of this PR.
This feature is internal and we've plans to fix the refreshing issues.
Testing
Test 1: Validate the designs

Sign in as an internal user in our browser at use-login.duckduckgo.com
Start the VPN
Open any site (for example DuckDuckGo.com)
Open the in-app VPN status view, and under "Website Preferences" tick the box to exclude the site from the VPN.
An alert should come up to ask if you want to report site issues to us.  Ensure it looks like in the designs.

Test 2: Validate "Report" button

Open Console.app, filter by "👾", and start streaming
Repeat Test 1, and once the alert is up click "Report".
The alert should be closed.
Console.app should show the following pixel:

👾[Standard-Fired] m_mac_vpn_report_site_issues ["domain": "duckduckgo.com", "appVersion": "1.105.0", "pixelSource": "browser-dmg"]

Test 3: Validate "Not Now" button behavior

Same as test 2 but click "Not Now".
You should not see the pixel fired.

Test 4: Validate "Don't ask again" button behavior
Note: You can reset this in Debug Menu > Network Protection > Reset > Reset Site Troubleshooting Alert

Repeat Test 1, and once the alert is up click "Don't ask again".
The alert should be closed, and excluding sites should no longer show it.

Definition of Done:

[ ] Does this PR satisfy our Definition of Done?

Internal references:
Pull Request Review Checklist
Software Engineering Expectations
Technical Design Template
Pull Request Documentation

@jotaemepereira - Thanks!  All feedback addressed, let's sync when you're online to see why the VPN isn't working for you.


Remove version caps on package dependencies.

We are doing this, there are a lot of reasons that this is not a good idea for packages that are meant to be libraries like MDF. Here is a very long :) discussion about it by one of my fellow RSEs here at Princeton. Here is a the TLDR;. This is already causing issues between PsyNeuLink (where we also version cap) and MDF. I tried to install a fresh install of psyneulink the other day on a clean environment and the pip solver got stuck backtracking. Additionally, we have PyTorch pinned to 1.8 now and @mraunak last merged in PR has tests that fail on PyTorch 1.9 on my end. These are not being caught in CI. This is especially true in the PyTorch case because we are using several internal APIs that are subject to change.  Anyway, I vote to remove the version caps and to deal with breaking changes and deprecations from libraries as they come. We can always provide an optional locked set of dependencies for a reproduceable environment down the line.

Hello, my name is Alonso Lopez and I am an Outreachy applicant. I am interested in taking on this task.

Please see https://github.com/ModECI/MDF/discussions/225#discussioncomment-2509898 for discussions around the context for this. It will basically involve forking the project and changing the version constraints in https://github.com/ModECI/MDF/blob/development/setup.cfg and making sure the GitHub actions are still passing. Make sure to do this from the development branch.

Hello,
I have been working on changing the constraints and was hoping I could receive some advice for the issue I have come across. I changed the constraints for the pytorch dependency within setup.cfg and ran the tests, which the new program did not pass. I then modified the arguments in the _model_to_graph() function contained within the importer.py file, and the program passed two tests. However now I received the following error:
self = <onnxruntime.capi.onnxruntime_inference_collection.InferenceSession object at 0x7f47082f6670>, providers = [], provider_options = []
def _create_inference_session(self, providers, provider_options):
available_providers = C.get_available_providers()
# validate providers and provider_options before other initialization
providers, provider_options = check_and_normalize_provider_args(providers,
provider_options,
available_providers)
# Tensorrt can fall back to CUDA. All others fall back to CPU.
if 'TensorrtExecutionProvider' in available_providers:
self._fallback_providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
else:
self._fallback_providers = ['CPUExecutionProvider']
session_options = self._sess_options if self._sess_options else C.get_default_session_options()
if self._model_path:
sess = C.InferenceSession(session_options, self._model_path, True, self._read_config_from_model)
else:

      sess = C.InferenceSession(session_options, self._model_bytes, False, self._read_config_from_model)

E           onnxruntime.capi.onnxruntime_pybind11_state.InvalidGraph: [ONNXRuntimeError] : 10 : INVALID_GRAPH : This is an invalid model. Type Error: Type 'tensor(int64)' of input parameter (input_sequence) of operator (ConcatFromSequence) in node (Co_ConcatFromSequence) is invalid.
../../../.local/lib/python3.8/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py:309: InvalidGraph

@ALopez3531 Are you making these changes in a fork of the repository? The simplest way to share your changes and for us to see the precise errors (for multiple python versions) is to commit your changes to a fork, and enable tests to be run at the Actions tab.

@pgleeson Alright my changes should be available now.

Thanks @ALopez3531, but you'll have to be a bit more specific about what you've done, why you think it should work and which tests are failing.

Hello @pgleeson, I made some comments under the edits that I made, I was hoping you could check them out.

Thanks again @ALopez3531. I'm afraid it wasn't possible to look at your edits in detail before the Outreachy application deadline.
Can you point here to the specific edits/comments you made (simplest is to mention @pgleeson in the comment)?

Hey @parikshit14,
What is the error you are getting? These are the ones I get on my end, the same as in CI:

This looks like an issue with sympy trying to evaluate the strings we use to encode onnx functions. I am not sure why this started happening. Perhaps I need to pin the sympy version further back (I left that pin in and removed all others) or maybe it is related to an issue with the new pytorch. I didn't have more time to dig into this.

Hey @parikshit14, which directory are you running pytest from?

Ok, you are probably running the pytest command pytest. This is different in one subtle way from running python -m pytest, it doesn't prepend the current working directory to sys.path. See here here. For now, I would use python -m pytest if running pytest from command line. This is probably what PyCharm's pytest runner does as well so I never caught this issue. That being said, I am not sure I like this practice in these tests of importing from examples. We already have a test that runs all examples. @mraunak, I believe you wrote these tests. I am trying to understand them. Are these examples automatically generated pytorch code from MDF? If so, where is the code that generates them?

Also, even if you run with python -m pytest, one of the Arrays test will fail because of a missing module attribute res. This is because I commented out running the example in Arrays_pytorch.py because it was failing on newer PyTorch. This is because torch.jit.script now seems to optimize out unused inputs to models leaving the resulting ONNX graph with no inputs. Not sure if this bug has been fixed in PyTorch yet or if they even consider it a feature. I think it would be best to modify the examples so that they actually use their inputs in the computation. This would make the example better as well as fix the problem. Any chance you could do this @mraunak.

@davidt0x the code to generate examples - https://github.com/ModECI/MDF/blob/development/examples/PyTorch/MDF_PyTorch/MDF_to_PyTorch.py
The current implementation of MDF to PyTorch generates PyTorch model as well as onnx files, so if we call directly exporter.py while testing, it will generate PyTorch and onnx models in the test module, to eliminate having the same file in the multiple folders, it was collectively stored in the examples, we can discuss a better way to import the PyTorch/ONNX/TensorFlow models generated within MDF.

I think my new pushes to remove_version_caps should fix all the version caps except the sympy issue. @parikshit14 do you want to take a look at fixing the sympy version cap. Ultimately, I think it would be nice to drop this dependency actually. I think we can get away with using ast.parse from the standard library to get the variables from python expression. We can also then filter out any builtins that get evaluated and rename them or something.

This is fixed in the main branch, apart from sympy<=1.8. Opening separate issue.


Documentation for running with SimpleHTTPServer is wrong

I saw this on the blog post but it might also be in the docs somewhere.  The post says:
  You can also run Vector with Python's SimpleHTTPServer:

  $ cd Vector
  $ python -m SimpleHTTPServer 8080

  Then open Vector on your browser:

  http://localhost:8080

It should say:
  You can also run Vector with Python's SimpleHTTPServer:

  $ cd Vector/app
  $ python -m SimpleHTTPServer 8080

  Then open Vector on your browser:

  http://localhost:8080

Thanks @frioux ! Just updated it!


Master branch fails to install on OSX because of cplex

Information

Qiskit Aqua version: master
Python version: Py37
Operating system: OSX

What is the current behavior?
trying python setup.py install gives:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 0: invalid continuation byte in scripts/cpoptimizer file at path: /opt/miniconda3/lib/python3.7/site-packages/cplex-<IP_ADDRESS>-py3.7-macosx-10.9-x86_64.egg/EGG-INFO/scripts/cpoptimizer

Steps to reproduce the problem
What is the expected behavior?
Suggested solutions

pip install cplex==<IP_ADDRESS> (not latest) seems to work.

We are not restricting cplex version:
"cplex; python_version >= '3.6' and python_version < '3.8'",
We may need to restrict the  version

Do we want cplex in the requirements at all now that the optimization stack works without? 🤔

Because QuadraticProgram does not depend on cplex, I think cplex could be optional.


Use same security features as apache-poi.

The library currently uses its own implementation to read Xml into Document instance (reference).
Instead we can use DocumentHelper.readDocument() from apache poi libarary to parse Xml.
This ensures the security features are in sync with apache-poi library.

Closing this since this is done in master but not yet released.


Update docfx.json

Reverting #6516

Docs Build status updates of commit c6c3342:
:clock10: Full build: the average full build time is 17 min(s) 37 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit c6c3342:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/docfx.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Possible release of tech files / tool scripts?

Hi,
Thanks again for releasing this dataset! My group is interested in running the same flow used to generate the data. For example, if we want to take a layout from the circuitnet dataset, make an adjustment to the layout, do PR / DRC flow on the adjusted layout, and generate a new set of features / label.
Is there any way to release these details? We are also open to collaboration and willing to discuss more details. Please let me know!

Thank you for supporting CircuitNet!
Due to the license restriction, we cannot release the tech file and scripts to the public. However, if you have access to the corresponding PDK and have licensed the commercial tools, it might be ok to share some of the scripts. You can send a detailed request through email for further discussion.


add documentation for deployment-context object

also enable some redcarpet fancier options

@lukemelia should be good to go


[Feature Request]: GPO Log File Location

The request
Hey,
it would be a nice feature when there would be the possibility to save the log files to an unc or other path in the network and distributed that per gpo.
Is your feature request related to a problem?
No response
Additional information
No response

A lot of considerations regarding that.. ..too integrated in everything. A lot of work.

Use a custom script that daily copy logs where you want :)


Adimako/sed cleanup

Finalising existing test cases and cleaning up

@cekees I will merge it later on. There are some issues with the bc tests


Improve the Sysbox installer

The sysbox package installer could be improved as follows:

Update the Sysbox systemd units to log into the systemd journal by default, as opposed to log files (e.g., /var/log/sysbox-mgr.log).

Install executables in /usr/bin instead of /usr/local/bin. The former is a more appropriate directory, and it's the directory where the binaries for docker, containerd, etc. reside.

Regarding the journald logging. It works only when the --log parameter is used and a filename for a logfile is given.
Using "--log /dev/stdout" explicit or implicit without  --log parameter it does not work and fails with:
open /dev/stdout: no such device or address

Using "--log /dev/stdout" explicit or implicit without --log parameter it does not work

Yes this is what I had noticed when I briefly played around with this some weeks ago. I wonder if it's related to the fact that systemd sets /dev/stdout to be a socket rather than a file, as described here:
https://github.com/envoyproxy/envoy/issues/8297#issuecomment-620659781

Interesting issue. So the problem is that sysbox-mgr and sysbox-fs try to open the /dev/stdout filename instead writing to file descriptor 1?
I am not a go programmer, but could it be that that these lines try to open the file in the wrong mode (see create flag, mode 666)?
On my Debian 10 system /dev/stdout is a symlink with lrwxrwxrwx  permission to /proc/self/fd/1 with is a  symlink with lrwx------ permissions to /dev/pts/4 with crw--w---- permission. By the way, why not just use PrintLn when no filename is given?
https://github.com/nestybox/sysbox-mgr/blob/95010ecb3e813d75ec8b523bd8f6d8890dfa26e6/main.go#L110
https://github.com/nestybox/sysbox-fs/blob/4610f0be058e9121e91db9e9642079c4f12ae926/cmd/sysbox-fs/main.go#L252

In Sysbox we use the Golang logrus package for logging. It seems this package has no problem logging to files, or /dev/stdout when it points to a file. But when /dev/stdout points to a socket (e.g., when logging to the systemd journal log), it apparently does not work correctly. I am speculating here a bit as I've not had the chance to take a closer look. But there must be some fairly simple way to fix this.

One other remark: I would go for logging to stderr instead of stdout. Both are picked up by journald just fine, but if you ever decide to have an option which generates non-logging output, the separation is useful. E.g. some programs may dump their current configuration and then you would use stdout for that while still being able to log stuff in parallel.

I found a way to use journald. See Merge Requests above.
If you want to keep logging to logfiles by default you should add a logrotate configuration as well.

The sysbox package installer could be improved as follows:

Update the Sysbox systemd units to log into the systemd journal by default, as opposed to log files (e.g., /var/log/sysbox-mgr.log).
Install executables in /usr/bin instead of /usr/local/bin. The former is a more appropriate directory, and it's the directory where the binaries for docker, containerd, etc. reside.

Both of these are already implemented (since Sysbox v0.4.1 IIRC). Closing.


Pull request for WMS ID#680

WMS ID#680
General requirements

Information in the workshop is adequate and updated
Code is correct and working
Links are correct
Make sure you enter the help email link in your manifest.json
Please make sure WMS URLs are updated as needed after your PR is approved

Checklist - Refer to the QA document for the complete list
Please confirm that the following is completed before submitting your PR

[x ] All filenames are lower case (including folders, images, files, etc.)
[x] Filenames are descriptive
[x ] Your workshop folder structure should be similar to the one used in the sample workshop (https://github.com/oracle-livelabs/common/tree/main/sample-livelabs-templates/sample-workshop)
[x] Are you using multiple versions (desktop/, sandbox/, tenancy/)? Make sure that each of them contains a manifest.json and an index.html
[x] Image references in markdown contain an alternate text

Hi Ana,
I have performed the sync fork. Could you please check now?
Regards,
Ramya.


Support for other SQL DBs

It would be nice to be able to use other types of SQL databases, maybe using keplerproject/luasql. Using sqlite, for example, would decrease the configuration overhead for people who do not want to configure/modify/start an SQL server.

Yeah sqlite would be a nice addition. However, I don't have time to implement it myself right now :)


update version

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (98d775c) 42.35% compared to head (0f5b117) 42.35%.
Report is 2 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main       #5   +/-   ##
=======================================
  Coverage   42.35%   42.35%
=======================================
  Files           5        5
  Lines          85       85
=======================================
  Hits           36       36
  Misses         49       49

Files Changed
Coverage Δ

src/napari_bfio/__init__.py
100.00% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


print no resources found, use path.Join

fixes #753

Jenkins job manager/presubmit passed

Jenkins job manager/e2e-smoketest passed

jenkins rebuild manager/presubmit


Create OpenMetadata Clients and publish artifacts

Is your feature request related to a problem? Please describe.
OpenMetadata comes with rich APIs and schemas to help any tooling to either consume the rich metadata
collected in OpenMetadata or enhance/ingest metadata through the APIs.
Python based ingestion framework already has a client that allows us to ingest data into the OpenMetadata and also retrieve data from OpenMetadata.
Ask of this feature request is to build OpenMetadata clients in other languages to start with we can
separate Python client into its own module and publish into pypi. Similarly we can build one in java and publish
into maven artifact.
There is also a rust client in progress in this discussion https://github.com/open-metadata/OpenMetadata/issues/1880
cc @sureshms @pmbrull @mithmatt @roeap
Describe the solution you'd like

Create separate repo to maintain the clients
Move all the schemas into core repo
Publish these clients into its respective repositories

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

There is this Swagger codegen tool which may potentially help us generate the Java client
https://github.com/swagger-api/swagger-codegen#swagger-codegen-3x-300-branch
Haven't used this, but I wonder if we can piggyback on swagger specs and generate required client sdks (similar to what one would do with idls).

Do we have a javascript client? It might be useful to prioritize that as well

@pmbrull
Based on the limited UI dev experience I had with OM, we generate typescript models from the json schema, and have a client for our own UI. The client is within our UI code and not separately managed as an npm package.
@Sachin-chaurasiya or @shahsank3t  can confirm my understanding.

Hi @mithmatt , Yes, On the UI side we use Axios HTTP client.


Expose a '.Section' parameter in a section template page.

I'm using this parameter to query into section data within '.Site.Data.section'. I may work around this by using  '.Title', but this value is automatically pluralized. (Why is the blog section's title 'Blogs' and how can I change that?)

Also, it'd be nice if the homepage belonged to the section "homepage". Using the above work around would force me to rename the site's title to "homepage" or "home".

I'm not sure what you ask for.
There is a Section on Page (and Type) that can be used in queries.
There isn't a Section on Node (taxonomies, home page), but what would be the use case for that? And what be the values? As section is define as "the first folder below content" (my definition), how do that apply to these?

The page that renders summaries of content from the section. The 'section.html' template. It should have a '.Section' attribute describing the section it belongs to. Instead I have to fallback on '.Title'. But for some reason the 'blog' section title is 'Blogs'. Anyways, it seems like a reasonable assumption that the section template rendering section content has a '.Section' parameter. I'm using it to access .Site.Data.section.<section_name> to have customizable templated components on a per-section basis.

Sure, but these "list pages" can be a mix of data from many sections, which section do they belong to? And I'm not sure what the use case is. There is a use case for knowing if it's the home page (often solved by checking Url == '/'), but other than that?

I have a large collection of modular templated components that need to access data set by the 'section'
currently being rendered. I use 'section' to loosely refer to the Section, Taxonomy, or Homepage. I need the unmanged name of this 'section'. ".Title" is being pluralized automatically for these node pages. So for my 'author' section which is also a taxonomy(section render takes precedent), i have taxonomies.author = "author" to avoid issues I was having in Hugo 0.12 where I couldn;t get the singular form. When the site.com/author 'list' page renders, the '.Title' parameter is equal to "Authors". This is the same for blog, project, stream, etc. It's this type of stuff that causes distrust with the platform, and headaches due to inconsistencies when developing.(This inconsistency pales in comparison to others(How do you get a list of category terms by count from any type of page so the categories can be shown in a sidebar?(Hugo implementation of encapsulation is leaky due to the difference between Go data structures and map structures)). Still, its all forgivable since Hugo is relatively unexplored territory.)
Really, Taxonomies should be Sections that also happen to aggregate posts site-wide. Then taxonomy terms can have content pages with custom data fields defined.
tlrd; It's a matter of inconsistency. I don't want Hugo to mangle my data, it should just be a passthrough layer without doing too much automagically. Anyways, it's amazing what can be built on-top of Hugo right now, without ever having to touch Hugo's source, but could be a little bit better. Mainly the arbitary limitations imposed on Shortcode/Template inter-operability, and non-relative Partial template paths.

I've found "pluralizeListTitles' which fixes the .Title issue and will allow me to work around the main issue I'm having.

A better more liberating workaround is of course to modify partials/header.html to use .Title only in pages, not in nodes—and define custom titles checking which node you’re in via url, that way:
<title>
{{ if .IsPage }}{{ .Title }}
    {{else}}
      {{ if eq .Url "/blog/" }}My super awesome blog{{end}}
      {{ if eq .Url "/projects/" }}My ming-bogging projects{{end}}
      {{ if eq .Url "/" }}My awesome website{{end}}
    {{ end }}
</title>

Which is of course infuriatingly horrible hardcode, but there it is, the best way possible at the moment (AFAIK).

I had the same problem.
I have several parameters in config file, which I use to parametrise the sections pages using a common layout, actually that layout is layouts/_defauls/list.html, under a dictionary which each key is the "section".
When I used .Title without pluralizeListTitles = false, it didn't work and I realised that was due the pluralisation and I changed the keys to match them as a workaround.
Afterwards I found this issue and I discovered pluralizeListTitles so I could rename back the keys to the sections' name. However I do still need to transform lowercase the .Title to have more consistent keys and be able to match all of them easily.
Before discover this issue, I was thinking to report the same, "Why a Node doesn't have a Section, Identifier or whatever property with the exact string used for the folder's name (section)?"
I think that having it doesn't hurt, because if you use pluralizeListTitles = true, you can still identify the Node with a deterministic identifier, besides not to have to transform lover or upper case the .Title.

Note/Update: This issue is marked as stale, and I may have said something earlier about "opening a thread on the discussion forum". Please don't.
If this is a bug and you can still reproduce this error on the latest release or the master branch, please reply with all of the information you have about it in order to keep the issue open.
If this is a feature request, and you feel that it is still relevant and valuable, please tell us why.


Upgrade documentation should explain how to replace gte= with json_schema_extra

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
https://github.com/pydantic/pydantic/blob/d249af9c7895020fee8e34f59ffb5c9220453719/docs/migration.md#L153-L154
That's not enough information! I couldn't figure out how to upgrade this:
temperature: Optional[float] = Field(
    default=None,
    gte=0,
    lte=2
)

I tried this:
temperature: Optional[float] = Field(
    default=None,
    json_schema_extra={
        "minimum": 0,
        "maximum": 2,
    }
)

But I'm not sure if that's right.
Example Code
No response
Python, Pydantic & OS Version
pydantic version: 2.0.2
        pydantic-core version: 2.1.2 release build profile
                 install path: /Users/simon/.local/share/virtualenvs/llm-p4p8CDpq/lib/python3.10/site-packages/pydantic
               python version: 3.10.10 (main, Mar 21 2023, 13:41:05) [Clang 14.0.6 ]
                     platform: macOS-13.3-arm64-arm-64bit
     optional deps. installed: ['typing-extensions']

Selected Assignee: @lig

I figured it out:
temperature: Optional[confloat(ge=0, le=2)] = Field(


Improve performance of route param parsing

We make multiple regex tests when we can likely make a single regex test. Just noodling locally it looks like this could increase our speed drastically.

This might be what you're looking for :) https://docs.rs/regex/0.2.6/regex/struct.RegexSet.html

Closing as of #14


Gettin 500 error on every route with /[{id}]

Thanks for work, is is very easy to deploy with docker.
I am getting the following issue and as a beginner I need your help
Fatal error: Uncaught InvalidArgumentException: ReasonPhrase must be supplied for this code in /var/www/html/vendor/slim/slim/Slim/Http/Response.php on line 204
The strange thing is that there is a message key value for each.
It seems that it does this only for routes that contain [{id}] (GET, POST, PUT, DELETE).
I have just cloned and run the make up command.
Any idea?

Hi @f4t4l,
I'm working in a new version to fix this problem.
Please, try something like this:
1- Clone again the repo and run 'make up' and 'make vendor' (just in case):
git clone https://github.com/maurobonfietti/rest-api-slim-php.git && cd rest-api-slim-php
make up
make vendor

2- Then, create a .env config file:
$ cp .env.example .env

3- In the .env file, edit the environment variable: 'REDIS_URL' with this value:
REDIS_URL='tcp://redis:6379'

4- Finally, verify this endpoints:
curl http://localhost:8081
curl http://localhost:8081/status
curl http://localhost:8081/api/v1/notes
curl http://localhost:8081/api/v1/notes/3

Let me know if you can use with success the API with docker.
Thanks for your report.

Hi @maurobonfietti,
It works like a charm, thanks!
Far better to run and re run multiple times with docker.
Really appreciate your approach, now trying to mix it with another app based on Slim4.

Awesome.
All the best with your project in Slim 4!
Thanks again for your report.


Dark mode incompatible with bg-opacity classes

When using bg-* dark:bg-* with bg-opacity-*, the opacity class is ignored in dark mode. This works correctly in AOT/classic mode.
Reproduction repo: https://github.com/laugharn/jit-repro

Hey thanks for opening this! This is actually the same behavior as in AOT mode, see similar issue with previous discussion here:
https://github.com/tailwindlabs/tailwindcss/issues/2966
Some kinks in there still around how the behavior changes depending on which mode you use — hopefully something we can think of a solution for in v3.
Going to close because unless I'm misunderstanding (I might be, apologies if so!) this is actually intended at the moment 👍🏻

@adamwathan that's interesting, in darkMode: media on 2.0.3 it works as I would expect, as seen in the backdrop-filter'd overlay in the attached screenshots:
Light Mode bg-black

Dark Mode dark:bg-white

Dark mode
Should I assume this will stop working? My use case isn't very complicated and I'll refactor both modes to key off of a neutral gray instead, but I would consider this breaking-ish.


How to make the controls view shorter so the image is bigger?

How can I make the editor controls view shorter so there's less white space, and I can make the image view larger?

You can check this commit Sources/PixelEditor/PixelEditViewController.swift

is there any config/method for doing that?


Full responsive and added shadow for cards for better user experience. ( issue #58 )

This fork is fully responsive and mobile friendly. And also has improvements in user experience and bug fixed.

awesome @Rashik4567 !

This branch has lot of conflicts. @Rashik4567

This branch has lot of conflicts. @Rashik4567

Its just the formatter.

Closing now. Has stylesheet conflicts.
Please. Resolve and re-open for PR.


[VM][Tools] Branch coverage measurement for bytecode generator

Motivation
This commit adds output of branch coverage data in generated coverage reports.
This commit also fixes a bug where an unreachable path became reachable due to
a typo.
Have you read the Contributing Guidelines on pull requests?
Yes.
Test Plan
Local testing with cargo test.
Related PRs
N/A

@bors-libra r=hermanventer

:pushpin: Commit 9b1f5e9 has been approved by hermanventer

:hourglass: Testing commit 9b1f5e978a895ad1f0d38c6d7d69502b5d6e5a82 with merge e04221da1dc782ddeea3efe1f758b6cf4f459e36...

:broken_heart: Test failed - checks-circle_commit_workflow

@bors-libra r=hermanventer

:bulb: This pull request was already approved, no need to approve it again.

This pull request previously failed. You should add more commits to fix the bug, or use retry to trigger a build again.
There's another pull request that is currently being tested, blocking this pull request: #982

:pushpin: Commit 9b1f5e9 has been approved by hermanventer

:hourglass: Testing commit 9b1f5e978a895ad1f0d38c6d7d69502b5d6e5a82 with merge 63c5ab18b51f7c0fd3cc3b07aeda85341f55d509...

:sunny: Test successful - checks-circle_commit_workflow
Approved by: hermanventer
Pushing 63c5ab18b51f7c0fd3cc3b07aeda85341f55d509 to master...


Error while reading swipl version

Here's what I get when I enter the SWI-Prolog version:
(...) in get_swi_ver     match = re.search(r'[0-9]\.[0-9]\.[0-9]') TypeError: search() missing 1 required positional argument: 'string'
The swipl version is the 8.2.0 but I don't think it makes any difference

On windows 10 i had this kind of problem, pyswip was unable to load Prolog because it didn't find the SwiProlog path and i don't if it is possible to specify it...
So i modify C:\Python\Python36\Lib\site-packages\pyswip\core.py line 180 :
r'pl\bin' -> r'swipl\bin'
ciao

This problem should be fixed with the last version.


Dynamic limit for max players / slots

Is it possible to increase the max players / slots amount on the fly? For example, when only 20 players are playing, set the max to 30. (Or at least, make it display like that in the server browser)

Seems like it's possible to do so. I'll write a resource for it.
https://wiki.multitheftauto.com/wiki/SetMaxPlayers

@JarnoVgr I added it for you to the joinquit resource since it's really small
Interesting idea btw


Why CPU utilization is so high with only Softmax Layer and reasonable with MLP ?

Hi all,
Nowadays, I am using MXNet and I noticed very strange behavior in MXNet. I am using provided example on the GitHub called Train_mnist.py
I am working on AWS environment, local and distributed.
Machine Specification:
Ubuntu, instance: m4.xlarge.
Model  m4.xlarge
vCPU	4
Mem (GiB)  16
SSD Storage (GB)	EBS-only
Dedicated EBS Bandwidth (Mbps) 750
I modified the MLP.py for the following.
def get_symbol(num_classes=10, **kwargs):
data = mx.symbol.Variable('data')
flatten = mx.sym.Flatten(data=data)
fc3  = mx.symbol.FullyConnected(data = flatten, name='fc3', num_hidden=num_classes)
mlp  = mx.symbol.SoftmaxOutput(data = fc3, name = 'softmax')
return mlp
My CPU utilization for single or distributed systems is almost 80% --> so high comparing to other framework
Then: I run the same code with out modification
"""
a simple multilayer perceptron
"""
import mxnet as mx
def get_symbol(num_classes=10, **kwargs):
data = mx.symbol.Variable('data')
flatten = mx.sym.Flatten(data=data)
fc1  = mx.symbol.FullyConnected(data = flatten, name='fc1', num_hidden=512)
act1 = mx.symbol.Activation(data = fc1, name='relu1', act_type="relu")
fc2  = mx.symbol.FullyConnected(data = act1, name = 'fc2', num_hidden = 256)
act2 = mx.symbol.Activation(data = fc2, name='relu2', act_type="relu")
fc3  = mx.symbol.FullyConnected(data = act2, name='fc3', num_hidden=num_classes)
mlp  = mx.symbol.SoftmaxOutput(data = fc3, name = 'softmax')
return mlp
Here the CPU utilization is about 40% for single machine or distributed version.
My question is why its so high for Softmax layer alone and low with network layers + softmax layer.
I am wondering if this is a common phenomenon in MXNet or I am having something not right.
Sincerely

@piiswrong
Can you please share something in the above problem ?
I believe that this is an issue.

if you are training on cpu isn't high cpu utilization a good thing?

@piiswrong
Thanks for your reply.
My question is why softMax layer took too much CPU utilization than MLP+softMax layer ?
SoftMax: I mean here is using SoftMax layer without any network layer ( hidden layer )
Code:
data = mx.symbol.Variable('data') flatten = mx.sym.Flatten(data=data) fc3 = mx.symbol.FullyConnected(data = flatten, name='fc3', num_hidden=num_classes) mlp = mx.symbol.SoftmaxOutput(data = fc3, name = 'softmax')
MLP: I mean here is using SoftMax layer with network layer ( hidden layer )
data = mx.symbol.Variable('data') flatten = mx.sym.Flatten(data=data) fc1 = mx.symbol.FullyConnected(data = flatten, name='fc1', num_hidden=512) act1 = mx.symbol.Activation(data = fc1, name='relu1', act_type="relu") fc2 = mx.symbol.FullyConnected(data = act1, name = 'fc2', num_hidden = 256) act2 = mx.symbol.Activation(data = fc2, name='relu2', act_type="relu") fc3 = mx.symbol.FullyConnected(data = act2, name='fc3', num_hidden=num_classes) mlp = mx.symbol.SoftmaxOutput(data = fc3, name = 'softmax')
Based on my understanding from different framework, CPU is increasing while I am increasing layers.
it does not make sense for me to use 80 % of CPU for doing SoftMax layer while 40% for SoftMax and MLP layers.
Sincerely

I wouldn't stress over performance numbers on these small networks. Try resnet to get realistic performance measure

@piiswrong
@mli
My explanation for that is the backward propagation is stolen.
In the SoftMax layer alone, there is no backward propagation and it is so fast and CPU intensive. However, for SoftMax and MLP, back propagation is slow, thus CPU utilization is low.
Sincerely

This issue is closed due to lack of activity in the last 90 days. Feel free to ping me to reopen if this is still an active issue. Thanks!


Share Copr project for monorepo Copr builds

Fixes #2055 #2058

RELEASE NOTES BEGIN
Copr builds configured as a monorepo job will now be built in one Copr project together. The bug with overwriting the statuses for monorepo jobs was fixed as well.
RELEASE NOTES END

recheck


inject dynamic components (button example)

I try to inject dynamic components as an example (button component example),
but it did not work, (copying the code of README)
could you put more details on how this works?
example that shows some data of the line that is clicked?

Hey,
I can see why the README is confusing with some examples as they do not provide full code.
I'll look to create some specific examples before next week detailing how to use dynamic components etc.
Thanks for creating an issue.

Documentation can now be found here.
Further examples will be added over the coming days.


limit plugin to specific stages

Fixes #55

 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.Evan Karopoulos seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

One issue I have with the way I did things was the fact that each hook needs to now run the shouldSkipPlugin() function.
Looking for a way instead to just unbind all the hooks before loading.
May move the running of this function to the constructor

Also, I got the versioning wrong

LGTM; I'd be happy to approve when the versioning's resolved.

Going to merge this and revise version in subsequent commit.


Summon Fire Elemental has 30 sec CD if you move while casting

Describe the bug
When I accidentally move while casting Summon Fire elemental the ability goes on a 30 second long CD.
To Reproduce
Steps to reproduce the behavior:

Cast Summon Fire Elemental
Move forward during the cast
Notice how Cooldown is 30 seconds like I casted it

Expected behavior
There could be an argument for a 1 or 2 second penalty for interrupting a cast but I feel like waiting the entire cooldown again to re use is a bug
Screenshots
Log Files
Desktop (please complete the following information):
Additional context

Hey @umassfan29 thanks for finding this bug :) I will take steps to prevent it from happening.

Should be fixed in the current Steam "beta" branch using the Beta Gameserver

This is confirmed to be fixed when on the beta branch


[5.5] Fix SessionGuard::cycleRememberToken recreates deleted user

This PR fixes the issue outlined in issue #22975 where a deleted user is recreated after calling the logout method. This is caused by the EloquentUserProvider::updateRememberToken method, which saves the model without checking if it exists.
This PR adds an exists check after setting the remember token to minimize any impact that this change might have.

Just call delete after you call logout.

The problem is that I then have to log the user back in if delete fails (as outlined in the issue, I'm using the deleting event to check preconditions which causes delete to return false if one of them fails). I'm in a single sign-on environment where logging out requires redirecting the user across multiple applications, so this causes some trouble.


fix: added a no rating view for OSCR component

Description
Now the OSCR component has a no rating view.
Related Tickets & Documents
Relates to #3804
Mobile & Desktop Screenshots/Recordings
Before

After

Steps to QA

Tier (staff will fill in)

[ ] Tier 1
[ ] Tier 2
[ ] Tier 3
[x] Tier 4

[optional] What gif best describes this PR or how it makes you feel?

Closing as per the convo in https://github.com/open-sauced/app/pull/3812#discussion_r1697656956


All tests for channel re-registering stop working after migration 4.0.33 -> 4.0.34

Hello. I have a lot of different tests for testing channel re-register. After update to latest version all of them started failing. The scenario is pretty simple.
Client1 logins. Cleint2 logins.
if (client2.eventLoop != client1.eventLoop) {
    client2.reregister()
}

Client1 send message, Client2 checks it get message.
My findings so far - after channel is re-registered it stops receive messages (no handlers within pipeline is invoked). I have a feeling all incoming messages are still processed with old EventLoop or something like that.
Client2 pipeline.
Reregister logic
and here
Let me know if you need more info.

@doom369 thanks will have a look. I have kind of the feeling that it may be related to:
https://github.com/netty/netty/commit/ba381f1a27c3251fa13725f09dd0cb771326f113

@doom369 tried to reproduce with a unit test but no luck :( Could you try to write a small unit test for it ? Maybe have a look at DefaultChannelPipelineTest and add something in there which shows the problem with netty only ?

@normanmaurer here you go :
import io.netty.bootstrap.Bootstrap;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;

import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * The Blynk Project.
 * Created by Dmitriy Dumanskiy.
 * Created on 01.02.16.
 */
public class Reregister {

    private static final AtomicInteger i = new AtomicInteger();
    private static final Map<Integer, EventLoop> users = new ConcurrentHashMap<>();

    public static void main(String[] args) throws Exception {
        EventLoopGroup boss = new NioEventLoopGroup(1);
        EventLoopGroup worker = new NioEventLoopGroup(100);

        new Reregister().buildServerAndRun(boss, worker, NioServerSocketChannel.class);
        new Client().connect();
        try {
            Thread.sleep(100);
        } catch (Exception e) {

        }
        new Client().connect().send();
    }

    private void buildServerAndRun(EventLoopGroup bossGroup, EventLoopGroup workerGroup,
                                   Class<? extends ServerChannel> channelClass) throws Exception {

        ServerBootstrap b = new ServerBootstrap();
        try {
            b.group(bossGroup, workerGroup)
                    .channel(channelClass)
                    .childOption(ChannelOption.SO_KEEPALIVE, true)
                    .childHandler(getChannelInitializer());

            b.bind(8080).sync();
        } catch (Exception e) {
            throw e;
        }
    }

    protected ChannelInitializer<SocketChannel> getChannelInitializer() {
        return new ChannelInitializer<SocketChannel>() {
            @Override
            protected void initChannel(SocketChannel ch) throws Exception {
                ChannelPipeline pipeline = ch.pipeline();
                pipeline.addLast(
                        new SimpleChannelInboundHandler<ByteBuf>() {
                            @Override
                            protected void channelRead0(ChannelHandlerContext ctx, ByteBuf byteBuf) throws Exception {
                                System.out.println("Retrieved message from " + ctx.channel());
                            }

                            @Override
                            public void channelActive(ChannelHandlerContext ctx) throws Exception {
                                System.out.println("Server: channel active. Channel : " + ctx.channel());

                                EventLoop eventLoop = users.get(i.get());
                                if (eventLoop == null) {
                                    System.out.println("Server: Creating new user " + ctx.channel().eventLoop());
                                    users.put(i.incrementAndGet(), ctx.channel().eventLoop());
                                } else {
                                    System.out.println("Server: Re register from " + ctx.channel().eventLoop() + " to " + eventLoop);
                                    reRegisterChannel(ctx, eventLoop, channelFuture -> completeLogin());
                                }
                            }
                        }
                );
            }
        };
    }

    private static void completeLogin() {
        System.out.println("Complete re register.");
    }

    private static void reRegisterChannel(ChannelHandlerContext ctx, EventLoop eventLoop, ChannelFutureListener completeHandler) {
        ChannelFuture cf = ctx.deregister();
        cf.addListener(new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture channelFuture) throws Exception {
                eventLoop.register(channelFuture.channel()).addListener(completeHandler);
            }
        });
    }

    private static class Client {

        private Channel channel;

        public Client connect() {
            EventLoopGroup group = new NioEventLoopGroup();

            Bootstrap bootstrap = new Bootstrap();
            bootstrap.group(group).channel(NioSocketChannel.class);
            ChannelFuture future = bootstrap
                    .handler(new SimpleChannelInboundHandler<ByteBuf>() {
                        @Override
                        protected void channelRead0(ChannelHandlerContext ctx, ByteBuf byteBuf) throws Exception {
                            System.out.println("read");
                        }
                    })
                    .connect(new InetSocketAddress("localhost", 8080));
            future.addListener(new ChannelFutureListener() {
                @Override
                public void operationComplete(ChannelFuture channelFuture) throws Exception {
                    if (channelFuture.isSuccess()) {
                        System.out.println("Client : Connection established");
                    } else {
                        System.err.println("Connection attempt failed");
                        channelFuture.cause().printStackTrace();
                    }
                }
            });

            try {
                this.channel = future.sync().channel();
            } catch (Exception e) {
                e.printStackTrace();
                System.exit(0);
            }

            return this;
        }

        public Client send() {
            channel.writeAndFlush(Unpooled.wrappedBuffer(ByteBuffer.allocate(1).array()));
            return this;
        }
    }

}

This code will print for 4.0.33
Retrieved message from
But you'll get nothing for 4.0.34

@doom369 awesome! I know where the problem is and work on a fix. For a workaround just call ctx.read() or channel.read() in the ChannelFuture that is added to eventLoop.register.

@normanmaurer good.

For a workaround just call ctx.read() or channel.read() in the ChannelFuture that is added to eventLoop.register.

Hm, doesn't help, tried to add in few places. Maybe I didn't understood you correctly.

@doom369 please check https://github.com/netty/netty/pull/4814. This fixes the problem here.

@normanmaurer Above example works. Most of tests fine also. But still there are few that doesn't work. I'm using tcp, http, websockets and SSL versions of them. And all of them has pipelines with reregister logic. Http reregister tests not work anymore. I'll try to make a reproducer for HTTP, but a bit later. Maybe tomorrow.

@doom369 thanks!

@normanmaurer started this morning with coffee and reproducer for you =). Here you go (hope I didn't make any mistake) :
import io.netty.bootstrap.Bootstrap;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.http.*;
import io.netty.util.ReferenceCountUtil;

import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;

import static io.netty.handler.codec.http.HttpResponseStatus.OK;
import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;

/**
 * The Blynk Project.
 * Created by Dmitriy Dumanskiy.
 * Created on 01.02.16.
 */
public class Reregister {

    private static final AtomicInteger i = new AtomicInteger();
    private static final Map<Integer, EventLoop> users = new ConcurrentHashMap<>();

    public static void main(String[] args) throws Exception {
        EventLoopGroup boss = new NioEventLoopGroup(1);
        EventLoopGroup worker = new NioEventLoopGroup(100);

        Reregister reregister = new Reregister();
        reregister.buildServerAndRun(boss, worker, NioServerSocketChannel.class, 8080, reregister.getTCPChannelInitializer());
        reregister.buildServerAndRun(boss, worker, NioServerSocketChannel.class, 8181, reregister.getHTTPChannelInitializer());
        new TCPClient(8080).connect();
        Thread.sleep(100);
        new TCPClient(8080).connect().send();
        Thread.sleep(100);
        new HTTPClient(8181).connect().send();
    }

    private void buildServerAndRun(EventLoopGroup bossGroup, EventLoopGroup workerGroup,
                                   Class<? extends ServerChannel> channelClass, int port, ChannelHandler channelHandler) throws Exception {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup)
                .channel(channelClass)
                .childOption(ChannelOption.SO_KEEPALIVE, true)
                .childHandler(channelHandler);

        b.bind(port).sync();
    }

    public ChannelInitializer<SocketChannel> getTCPChannelInitializer() {
        return new ChannelInitializer<SocketChannel>() {
            @Override
            protected void initChannel(SocketChannel ch) throws Exception {
                ChannelPipeline pipeline = ch.pipeline();
                pipeline.addLast(
                        new SimpleChannelInboundHandler<ByteBuf>() {
                            @Override
                            protected void channelRead0(ChannelHandlerContext ctx, ByteBuf byteBuf) throws Exception {
                                System.out.println("Retrieved message from " + ctx.channel());
                            }

                            @Override
                            public void channelActive(ChannelHandlerContext ctx) throws Exception {
                                System.out.println("Server: channel active. Channel : " + ctx.channel());

                                EventLoop eventLoop = users.get(i.get());
                                if (eventLoop == null) {
                                    System.out.println("Server: Creating new user " + ctx.channel().eventLoop());
                                    users.put(i.incrementAndGet(), ctx.channel().eventLoop());
                                } else {
                                    System.out.println("Server: Re register from " + ctx.channel().eventLoop() + " to " + eventLoop);
                                    reRegisterChannel(ctx, eventLoop, channelFuture -> completeLoginTCP(channelFuture.channel()));
                                }
                            }
                        }
                );
            }
        };
    }

    public ChannelInitializer<SocketChannel> getHTTPChannelInitializer() {
        return new ChannelInitializer<SocketChannel>() {
            @Override
            protected void initChannel(SocketChannel ch) throws Exception {
                ChannelPipeline pipeline = ch.pipeline();
                pipeline.addLast(
                        new HttpServerCodec(200, 200, 1024),
                        new HttpObjectAggregator(1024, true),
                        new ChannelInboundHandlerAdapter() {
                            @Override
                            public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
                                if (!(msg instanceof HttpRequest)) {
                                    return;
                                }

                                HttpRequest req = (HttpRequest) msg;

                                try {
                                    System.out.println("HTTP Server: got request. Channel : " + ctx.channel());

                                    EventLoop eventLoop = users.get(i.get());
                                    if (eventLoop == null) {
                                        System.out.println("HTTP Server: Creating new user " + ctx.channel().eventLoop());
                                        users.put(i.incrementAndGet(), ctx.channel().eventLoop());
                                    } else {
                                        System.out.println("HTTP Server: Re register from " + ctx.channel().eventLoop() + " to " + eventLoop);
                                        reRegisterChannel(ctx, eventLoop, channelFuture -> completeLoginHTTP(channelFuture.channel()));
                                    }

                                } finally {
                                    ReferenceCountUtil.release(msg);
                                }
                            }
                        }
                );

            }
        };
    }

    private void completeLoginTCP(Channel channel) {
        channel.writeAndFlush(Unpooled.wrappedBuffer(ByteBuffer.allocate(1).array()));
        System.out.println("Complete TCP re register.");
    }

    private void completeLoginHTTP(Channel channel) {
        channel.writeAndFlush(new DefaultFullHttpResponse(HTTP_1_1, OK));
        System.out.println("Complete HTTP re register.");
    }

    private static void reRegisterChannel(ChannelHandlerContext ctx, EventLoop eventLoop, ChannelFutureListener completeHandler) {
        ChannelFuture cf = ctx.deregister();
        cf.addListener(new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture channelFuture) throws Exception {
                eventLoop.register(channelFuture.channel()).addListener(completeHandler);
            }
        });
    }

    private static class TCPClient {

        private Channel channel;
        private int port;

        public TCPClient(int port) {
            this.port = port;
        }

        public TCPClient connect() throws Exception {
            EventLoopGroup group = new NioEventLoopGroup();

            Bootstrap bootstrap = new Bootstrap();
            bootstrap.group(group).channel(NioSocketChannel.class);
            ChannelFuture future = bootstrap
                    .handler(new SimpleChannelInboundHandler<ByteBuf>() {
                        @Override
                        protected void channelRead0(ChannelHandlerContext ctx, ByteBuf byteBuf) throws Exception {
                            System.out.println("TCP HERE");
                        }
                    })
                    .connect(new InetSocketAddress("localhost", port));

            this.channel = future.sync().channel();
            return this;
        }

        public TCPClient send() {
            channel.writeAndFlush(Unpooled.wrappedBuffer(ByteBuffer.allocate(1).array()));
            return this;
        }
    }

    private static class HTTPClient {

        private Channel channel;
        private int port;

        public HTTPClient(int port) {
            this.port = port;
        }

        public HTTPClient connect() throws Exception {
            EventLoopGroup group = new NioEventLoopGroup();

            Bootstrap bootstrap = new Bootstrap();
            bootstrap.group(group).channel(NioSocketChannel.class);
            ChannelFuture future = bootstrap
                    .handler(getHttpPipeline())
                    .connect(new InetSocketAddress("localhost", port));

            this.channel = future.sync().channel();
            return this;
        }

        private  ChannelInitializer<SocketChannel> getHttpPipeline() {
            return new ChannelInitializer<SocketChannel>() {
                @Override
                protected void initChannel(SocketChannel ch) throws Exception {
                    ChannelPipeline p = ch.pipeline();
                    p.addLast(new HttpClientCodec());
                    p.addLast(new SimpleChannelInboundHandler<HttpObject>() {
                        @Override
                        protected void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception {
                            System.out.println("HTTP HERE");
                        }
                    });
                }
            };
        }

        public HTTPClient send() {
            HttpRequest request = new DefaultFullHttpRequest(
                    HttpVersion.HTTP_1_1, HttpMethod.GET, "http://localhost:" + port + "/aaa");
            channel.writeAndFlush(request);
            return this;
        }
    }
}

@doom369 thanks again. This is actually another bug :( https://github.com/netty/netty/pull/4839 . With this pulled in all works now.

Fixed by #4814 and #4839

@normanmaurer Now situation is much better. But I still have failing tests and seems this is related with your fix.

Any more reproducers?

Am 04.02.2016 um 17:48 schrieb Dmitriy Dumanskiy<EMAIL_ADDRESS>@normanmaurer Now situation is much better. But I still have failing tests and seems this is related with your fix.
—
Reply to this email directly or view it on GitHub.

@normanmaurer Will do tomorrow. Have to go now.

@doom369 you rock!

@johnou =). Thank you!
@normanmaurer Look like everything fine. Those tests that failed were wrong. Now I'm confused as do not understand how did they work with 4.0.33 =). But anyway thank you for quick fixes!

Yay thx!

Am 05.02.2016 um 13:54 schrieb Dmitriy Dumanskiy<EMAIL_ADDRESS>@johnou =). Thank you!
@normanmaurer Look like everything fine. Those tests that failed were wrong. Now I'm confused as do not understand how did they work with 4.0.33 =). But anyway thank you for quick fixes!
—
Reply to this email directly or view it on GitHub.


Re-enable clippy lints

I mistakenly commented out the clippy linter in PR #17041.  Re-enable clippy.

Trying a different approach to clippy lints.


Refactor LOS extension feature; keep link status

Prerequisites

[x] I have read the Contributing Guidelines.
[x] I have read the Code of Conduct.
[x] If this is a non-trivial change, I have already opened an accompanying Issue.
[x] If applicable, I have included documentation updates alongside my code changes.

Description

Rename feature "Extend Existing Candidate Graph" as "Extend Base Topology" and update its description.
Add assert that building_outline_file_path and base_topology_file_path cannot be set in a plan; Update tests and template to pass tests. Only call pick_best_sites_per_building and select_additional_dns when site detection is enabled.
Keep site and link status in the base topology (we used to only keep site status)
a. Rename get_all_sites_links_and_exclusion_zones as get_los_topology. This function does not return existing links any more. Instead, it returns a base topology (can be empty topology when base_topology is not provided).
b. Add a new arg infer_input_site_location to function extract_topology_from_file, which enables the function to infer altitude and location type for base topology. Update the use of this function in the test code.

Test Plan

Workflows
Ran benchmarks
a. with base topology
b. with building data
c. without either of above

The codecov check fails for some reason. Is this PR still ready for review?

The codecov check fails for some reason. Is this PR still ready for review?

Yes. Ready for review. I think the way we fix it in #6 is not exactly right. Will look into it later.

The codecov check fails for some reason. Is this PR still ready for review?

Yes. Ready for review. I think the way we fix it in #6 is not exactly right. Will look into it later.

I'm a little unclear how these things are related.

Why do you think that there's an issue in #6? Is it related to this PR somehow?

Codecov seems to complain about uncovered lines in core.py?

I'm surprised that the workflow fails. I thought we set up informational only?

The codecov check fails for some reason. Is this PR still ready for review?

Yes. Ready for review. I think the way we fix it in #6 is not exactly right. Will look into it later.

I'm a little unclear how these things are related.

Why do you think that there's an issue in LOS Rectangle #6? Is it related to this PR somehow?
Codecov seems to complain about uncovered lines in core.py?
I'm surprised that the workflow fails. I thought we set up informational only?

My bad. I should have given more specific description about "the way we fix it in #6". I meant the codecov config change in that PR, rather than the LOS code. I think we need to set something other than "informational" to suppress the workflow failure due to coverage. I will check the codecov doc later again.


[Change Request] codeunit 432 Consolidate - procedure CreateAndPostGenJnlLine

Describe the request
Hello, can you please change the local procedure CreateAndPostGenJnlLine to global?
procedure CreateAndPostGenJnlLine(GenJnlLine: Record "Gen. Journal Line"; var GLEntry: Record "G/L Entry"; var DimBuf: Record "Dimension Buffer")
var
	TempDimSetEntry2: Record "Dimension Set Entry" temporary;
	DimValue: Record "Dimension Value";
	ConsolidAmount: Decimal;
	AmountToPost: Decimal;
	AdjustAmount: Decimal;
	ClosingAmount: Decimal;
	TranslationNeeded: Boolean;
	idx: Integer;
	OriginalTranslationMethod: Integer;
begin

Additional context
We want to access from custom extension.
Internal work item: AB#500752

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 17192.


Update tempdb-database.md

Fix broken link.

@jogietze : Thanks for your contribution! The author, @stevestein, has been notified to review your proposed change.

@jogietze : Thanks for your contribution! The author, @stevestein, has been notified to review your proposed change.

@jogietze - thanks for the fix!
#sign-off

#sign-off


webapp: Updated description to view PR status - @open sesame 09/13 20:53

It is trivial. This commit is to update the existing terminology of web application
correctly after implementing three queues (e.g., wait, ready, and run queue).
Changes proposed in this PR:

Updated a description for webapp monitoring

Signed-off-by: Geunsik Lim<EMAIL_ADDRESS>
[Template] PR Description
In general, github system automatically copies your commit message for your convenience.
Please remove unused part of the template after writing your own PR description with this template.
$ git commit -s filename1 filename2 ... [enter]

Summarize changes in around 50 characters or less

More detailed explanatory text, if necessary. Wrap it to about 72
characters or so. In some contexts, the first line is treated as the
subject of the commit and the rest of the text as the body. The
blank line separating the summary from the body is critical;
various tools like `log`, `shortlog` and `rebase` can get confused
if you run the two together.

Further paragraphs come after blank lines.

**Changes proposed in this PR:**
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the bullet, preceded
  by a single space, with blank lines in between, but conventions vary here.

Resolves: #123
See also: #456, #789

**Self evaluation:**
1. Build test: [ ]Passed [ ]Failed [*]Skipped
2. Run test: [ ]Passed [ ]Failed [* ]Skipped

**How to evaluate:**
1. Describe how to evaluate in order to be reproduced by reviewer(s).

Add signed-off message automatically by running **$git commit -s ...** command.

$ git push origin <your_branch_name>

:octocat: cibot: @leemgs, There is a newline issue. The final line of a text file should have newline character. Please resubmit your PR after fixing end of line in ci/taos/webapp/monitor.php.

:octocat: cibot: @leemgs, One of the format checkers is failed. If you want to get a hint to fix this issue, please go to https://github.com/nnsuite/TAOS-CI/wiki/.

We generate a report if there are dangerous coding constructs in your code. Please read http://invain.mooo.com/TAOS-CI/ci/repo-workers/pr-format/201809140953100.81170892715454-250-23fd1aa7716d86d892fad720385cf65cdd0d0b49/report/.

Info: You can read if there are misspelled characters at our misspelling check report. Please read http://invain.mooo.com/TAOS-CI/ci/repo-workers/pr-format/201809140953100.81170892715454-250-23fd1aa7716d86d892fad720385cf65cdd0d0b49/report/.


fail setup

System Health details
System Information

version
core-2024.8.2

installation_type
Home Assistant OS

dev
false

hassio
true

docker
true

user
root

virtualenv
false

python_version
3.12.4

os_name
Linux

os_version
6.6.44-haos

arch
x86_64

timezone
Asia/Jerusalem

config_dir
/config

Home Assistant Community Store

GitHub API
ok

GitHub Content
ok

GitHub Web
ok

GitHub API Calls Remaining
4976

Installed Version
1.34.0

Stage
running

Available Repositories
1464

Downloaded Repositories
49

HACS Data
ok

AccuWeather

can_reach_server
ok

remaining_requests
29

Home Assistant Cloud

logged_in
false

can_reach_cert_server
ok

can_reach_cloud_auth
ok

can_reach_cloud
ok

Home Assistant Supervisor

host_os
Home Assistant OS 13.0

update_channel
stable

supervisor_version
supervisor-2024.08.0

agent_version
1.6.0

docker_version
26.1.4

disk_total
98.0 GB

disk_used
32.1 GB

healthy
true

supported
true

host_connectivity
true

supervisor_connectivity
true

ntp_synchronized
true

virtualization
oracle

board
ova

supervisor_api
ok

version_api
ok

installed_addons
Samba share (12.3.2), Studio Code Server (5.15.0), File editor (5.8.0), AirCast (4.2.1), Terminal & SSH (9.14.0), Mosquitto broker (6.4.1), Google Assistant SDK (2.5.0), Simple Scheduler (2.5), Duck DNS (1.18.0), Node-RED (18.0.5), ESPHome (2024.7.3), Home Assistant Google Drive Backup (0.112.1), eWeLink Smart Home (1.4.3), Spotify Connect (0.13.0), Whatsapp (1.4.0), Grafana (10.0.0), AppDaemon (0.16.6), Plex Media Server (3.5.2), RTSPtoWebRTC (1.0.1), RTSPtoWeb - WebRTC (1.4.0), NGINX Home Assistant SSL proxy (3.10.1), Cloudflared (5.1.17), Zigbee2MQTT (1.39.1-1), TasmoAdmin (0.30.4), MariaDB (2.7.1), phpMyAdmin (0.9.1), ESPresense Companion (0.6.5), Tailscale (0.21.0)

Dashboards

dashboards
3

resources
30

views
20

mode
storage

Recorder

oldest_recorder_run
August 13, 2024 at 6:54 PM

current_recorder_run
August 16, 2024 at 10:16 PM

estimated_db_size
421.56 MiB

database_engine
mysql

database_version
10.11.6

Sonoff

version
3.7.3 (e240aaf)

cloud_online
8 / 18

local_online
6 / 6

Spotify

api_endpoint_reachable
ok

Checklist

[X] I have enabled debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of any previous issues..

Describe the issue
Since the last integration update, I can not activate the IEC integration.  downloaded the 0.031 beta version. the integration stuck at  the initiation stage after getting the OTP.
Reproduction steps

upgarded the version to 0.031 beta

...
Debug logs
This error originated from a custom integration.

Logger: custom_components.iec.coordinator
Source: helpers/update_coordinator.py:354
integration: Israel Electric Corporation (IEC) (documentation, issues)
First occurred: 10:23:09 PM (12 occurrences)
Last logged: 10:36:26 PM

Unexpected error fetching Iec data
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/iec/coordinator.py", line 436, in _async_update_data
    last_meter_read = int(devices_by_id.counter_devices[0].last_mr)
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
TypeError: 'NoneType' object is not subscriptable

Diagnostics dump
there is no diagnostic file

Did you jst moved to a smart meter? Or any recent changes happened?

No.
The smart meter was working already.
The integration worked fine with it
I updated to 2024.8 as I thought it could solve the problem but it did not
On Sat, 17 Aug 2024 at 7:39 Guy Khmelnitsky @.***>
wrote:

Did you jst moved to a smart meter? Or any recent changes happened?
—
Reply to this email directly, view it on GitHub
https://github.com/GuyKh/iec-custom-component/issues/150#issuecomment-2294623477,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIEXG6C62AZ4VZAD6QMBFXTZR3HYPAVCNFSM6AAAAABMUTTS2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJUGYZDGNBXG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

I'll look into it.

Thanks so much
On Sat, 17 Aug 2024 at 8:30 Guy Khmelnitsky @.***>
wrote:

I'll look into it.
—
Reply to this email directly, view it on GitHub
https://github.com/GuyKh/iec-custom-component/issues/150#issuecomment-2294634807,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIEXG6FJSLKRIIQAPIRNHV3ZR3NXDAVCNFSM6AAAAABMUTTS2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJUGYZTIOBQG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

@hvazana - one last question - are u using a private producer?

No
At least not yet
On Sat, 17 Aug 2024 at 9:28 Guy Khmelnitsky @.***>
wrote:

@hvazana https://github.com/hvazana - one last question - are u using a
private producer?
—
Reply to this email directly, view it on GitHub
https://github.com/GuyKh/iec-custom-component/issues/150#issuecomment-2294687715,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIEXG6FYANWXF3PZMME3QHDZR3USFAVCNFSM6AAAAABMUTTS2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJUGY4DONZRGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

Happens also here, started 3 versions ago (~2 weeks)

@GuyKh don't know if it related, i have solar panels and registered ad such

One last comment, i'm using v0.0.31-beta

Everyone with this issue - checkout 0.0.31-beta2 - I added a fallback there

Working perfectly. Thanks.


When entering 8 digit code generated by HomeAsssistant into iOS Home app, the app spins endlessly while searching for the Home Assistant accessory

Home Assistant release with the issue:

.79
Last working Home Assistant release (if known):
Operating environment (Hass.io/Docker/Windows/etc.):

Docker for Windows
Component/platform:

https://www.home-assistant.io/components/homekit/
Description of problem:
When entering the 8 digit code generated by HomeAsisstant into the iOS Home app Select accessory to add to Home spins continuously and the the HA “accessory” is never found.  (This still works on my HyperV VM running hass io and the same config files.
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
configuration.yaml
homekit: !include homekit.yaml

homekit.yaml
  filter:
   exclude_domains:
    - alarm_control_panel
    - automation
    - input_boolean
    - remote
    - script
    - binary_sensor
   # - climate
    - cover
    - device_tracker
    - fan
    - light
    - lock
    - media_player
    - sensor
    - switch
   include_entities:
    - cover.garage_door_opener
    - script.temporarily_disable_pihole
    - lock.front_door
    - input_boolean.autolock

Traceback (if applicable):

Additional information:

Although your config works on another install, can you try the following config?
homekit:
  filter:
    include_entities:
      - demo.demo

If that doesn't work, maybe check out: #14567


renovate: separate major.minor.patch for lvh images

If we don't split the major.minor and the minor.patch, renovate will not update the dependencies that are marked to have their major and minor updates done by the maintainers. Thus, this commit will split them moving forward.
Tested in https://github.com/aanm/cilium/pull/620

/test


Only get "503 Service Unavailable  No server is available to handle this request." when  browse http://<my_marathon-lb_ip>:9090/_haproxy_getappmap

Only get "503 Service Unavailable  No server is available to handle this request." when i browse http://<my_marathon-lb_ip>:9090/_haproxy_getappmap. I have launched marathon-lb with args set "sse -m http://<my_marathon_ip>:8080 --group external --haproxy-map" on marathon UI. And there are also a nginx app with  ID "/nginx-external" and labels "HAPROXY_GROUP=external, HAPROXY_0_VHOST=test-app.nginx.com" on marathon UI, running healthily.However, I can get the value of _haproxy_getvhostmap  except _haproxy_getappmap.

Is MLB running with --haproxy-map?

Yes, I also set MLB with --haproxy-map.
发自我的 iPhone

在 2016年10月28日，01:21，Brenden Matthews<EMAIL_ADDRESS>写道：
Is MLB running with --haproxy-map?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Seems to work fine for me. Which version of MLB?

I am using the image mesosphere/marathon-lb, which is pulled 3 months  ago, on July 26th.

I pull the most recent image today.However, I still cann't get the value of _haproxy_getappmap.

The problem is solved today, using the new MLB image with --haproxy-map. It is my carelessness that I pulled the most recent image yesterday but forgot setting the argument of  --haproxy-map.


[SPARK-48911][SQL][FOLLOWUP][TESTS] Fix test for collect_set

What changes were proposed in this pull request?
Fix test for collect_set.
Why are the changes needed?
collect_set doesn't guarantee ordering, so we shouldn't assume it in the test.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Updated test.
Was this patch authored or co-authored using generative AI tooling?
No.

Merged to master.


Fix for images loading in header/footer

This fixes a bug where images were not loading in the header/footer when printing. The core issue is that QWebFrame::setHtml loads images asynchronously, but HeaderFooter:paint was assuming it to be a synchronous call.
Honestly, this was the most economical fix I could come up with, in terms of number of changes. It would be much better to rewrite the header/footer printing system so that it was all asynchronous, but that was way beyond the scope of this simple fix.

@DominicSachs Thank you for that workaround, it worked! :-)


[Feature Request] StyleCLIP + Restyle Encoder.

Feature: StyleCLIP with the new restyle encoder implemented in the Global directions colab notebook.
(No response so far?)

Another newer method of inverting to SG2 latent space: PTI.


Computed binding not executed if argument is undefined

I've noticed two scenarios in which computed bindings where not executed.

Binding to an undefined property:
{{ _computedBinding(blah) }}

For this is does not matter if blah is a declared property or not.

Binding to an undefined subproperty if the compute function has more than one argument:
{{ _computedBinding(myString, myObj.blah) }}

Strangely enough, binding to an undefined property works if it is the only argument:
{{ _computedBinding(myObj.blah) }}

Hi, @MaKleSoft --
I noticed this previously, as well. As it turns out, what you're seeing is by design. See kevin's helpful response here:
https://github.com/Polymer/polymer/issues/1874#issuecomment-112260054

Thanks, @robrez, that clears things up somewhat. Doesn't explain the inconsistent behavior though.

These behaviors are by design.
I grant that when compared side-by-side it may be counter-intuitive, but there are actually just two rules that govern the current behavior:

Effects "go" when dependencies are pushed

Rationale: we do not "pull" dependencies; rather effects go when dependencies are set

Effects with multiple dependencies "go" when all values are defined

_Rationale: we do this to provide an ergonomic benefit to avoid needing undefined checks (since effects would run for each value being set in sequence), and as a performance benefit for the initial use (so the effect is only run once, e.g. at startup or when initially setting all values)

Thus from your examples above:

The computing function runs only once blah has been set (to any value, including undefined)

2a. The computing function runs once myString and myObj.blah are set (but only to non-undefined values, per the second rule)
2b. Same as 1, the computing function runs once myObj.blah is set; note that setting myObj to any value will result in myObj.blah being pushed to the computing function (which may be undefined in the case of myObj = {})

That said, we have been exploring refinements to these rules based on feedback.
Possibilites include:

Don't run single-property observers when undefined is pushed (would make it a single rule: "Effects go once all dependencies are defined")

This is practically be fine as long as users don't ever manually set undefined, which we highly discourage and treat as an anti-pattern anyway

Currently, the binding system "sets" undefined when a path evaluates to undefined (e.g. {{myObj.noPropHere}}); since this would violate the "don't set undefined rule", we are considering having the binding system use the default value of a target property in place of undefined

As a result of this you cannot have a simple computed OR(a, b), which every user would exptect to simply work. Using a wildcard binding is not as declarative, and it actually fires too often. That's a bug introduced by design and I hope for a fix rather sooner than later.

@kaste or @kevinpschaaf, what's a workaround for OR(...) when properties might be undefined?

Almost an year and a half since this issue was posted and this still hasn't been solved?
I found myself in a position where I need a very simple OR(a, b) computation, just like @kaste commented, but that doesn't work as expected.
As @kevinpschaaf explained:

Effects "go" when dependencies are pushed

What if both dependent properties have declared values to be used as default value? Why do they still need to be "set" to be considered resolved?

Does the property have declared value?
(yes) ==> Push effects once at the beginning.
(no) ==> Wait for it to be set (current behavior).
 If it's undefined and no value has been declared simply don't do anything – responsibility goes to the coder to choose a default "not yet set" value and handle it.
As an example for my case in particular, I need to display a bar holding a (String) heading and a subHeading. The bar should be displayed when either of the properties are defined. However, for the cases where only heading or only subHeading is set, the bar is not displayed :(
I've declared both properties to a false as default value, which even differs from an empty string, so I always know when either has been set, even if it's empty. null is also an option, again – coder's responsibility.

+1

+1

Observers run with undefined in Polymer 2 as described in the upgrade guide, therefore I am closing this issue.