(7.0) Robotest custom image backports

Description
This is the 7.0 backport of custom robotest images and the related build changes.  This provides better validation of both tele build, and installing a cluster image with an application/hooks running inside of it.
If you've already reviewed the corresponding pull requests against master (see "Linked tickets and other PRs" below), I'd recommend you review the 7.0 specific changes, found after the first commit:
https://github.com/gravitational/gravity/pull/2224/files/16cff8895ce495db4b5593d87909755c381a12e4..3bc375523b83e0516c3229e62264663b4dfe739f
Type of change

New feature (non-breaking change which adds functionality)
Internal change (not necessarily a bug fix or a new feature)

Linked tickets and other PRs

Contributes to: #1908, #1915
Depends on https://github.com/gravitational/gravity.e/pull/4344
Ports: #1967, #2133, #2150, #2197, #2198, #2212, #2223, #2233

TODOs

[x] Fix --upgrade-via testing
[x] Self-review the change
[x] Perform manual testing
[ ] Address review feedback

Implementation
I chose to move the construction of the intermediate upgrade tarball into the robotest Makefile, the general gravity Makefile no longer offers a target for this.  Furthermore, the intermediate upgrade tarball is distinct from the tarball used for general installs & upgrades, to test both different paths.
@a-palchikov these changes will need to be forward ported to master/7.1+ when --upgrade-via is forward ported.
Testing done
The PR build is sufficient for automated runs.
The new upgrade-via testing can be seen here: https://console.cloud.google.com/logs/query;query=resource.type%3D"project"
labels.uuid%3D%226a80f6c5-a07a-4a50-911d-ebddad942a49%22%0Alabels.suite%3D%22fbece971-9ae7-423d-81e9-a89729af16a9%22%0Aseverity%3E%3DINFO;timeRange=2020-10-13T18:00:00.000Z%2F2020-10-13T19:15:00.000Z?authuser=0&project=kubeadm-167321
Here is a run of the new make target:
make image-robotest-intermediate
walt@gcp:~/git/gravity$ make -C e/assets/robotest
make: Entering directory '/home/walt/git/gravity/e/assets/robotest'
Usage: make [options] [target] ...

Options: run `make --help` for options

Targets:
  clean                            Remove build artifacts.
  clean-caches                     Remove cached tele binaries and gravity packages.
  docker-image-tele-build          Build a docker image suitable to run `tele build`.
  download-teles                   Download tele binaries needed to build robotest images.
  get-config                       Show robotest configuration.
  get-upgrade-versions             Show Gravity versions used in upgrade testing.
  help                             Show this message.
  image-opscenter                  Move opscenter.tar cluster image into place for test execution.
  image-robotest                   Build robotest cluster image using the current tele.
  image-robotest-intermediate      Build robotest cluster image with a prior LTS baked in through --upgrade-via.
  image-robotest-upgrade           Build robotest cluster images needed for upgrade testing.
  image-telekube                   Move telekube.tar cluster image into place for test execution.
  images                           Build all images necessary to run robotest CI tests.
  populate-caches                  Populate caches with tele binaries and gravity packages.
  run                              Run robotest.
make: Leaving directory '/home/walt/git/gravity/e/assets/robotest'

walt@gcp:~/git/gravity$ make -C e/assets/robotest GRAVITY_BUILDDIR=$(pwd)/e/build/current image-robotest-intermediate 2>&1 | grep -v '^time='
make: Entering directory '/home/walt/git/gravity/e/assets/robotest'
/home/walt/git/gravity/assets/robotest/tele_build.sh
+ docker run --rm=true --net=host --user=1000:1000 --group-add=998 -v /home/walt/git/gravity/e/build/current/tele:/home/walt/git/gravity/e/build/current/tele:ro -v /home/walt/git/gravity/assets/robotest/current:/home/walt/git/gravity/assets/robotest/current:ro -v /home/walt/git/gravity/e/build/current/packages:/home/walt/git/gravity/e/build/current/packages -v /home/walt/git/gravity/e/build/current/robotest/tmp/tmp.OmVBys8qRO:/home/walt/git/gravity/e/build/current/robotest/tmp/tmp.OmVBys8qRO -v /var/run/docker.sock:/var/run/docker.sock --tmpfs /tmp -w /home/walt/git/gravity/e/build/current/robotest/tmp/tmp.OmVBys8qRO debian-grande:buster-20201001-tele-build dumb-init /home/walt/git/gravity/e/build/current/tele build --upgrade-via=6.1.43 /home/walt/git/gravity/assets/robotest/current/app.yaml --state-dir=/home/walt/git/gravity/e/build/current/packages --version=7.0.21-dev.6 --output=/home/walt/git/gravity/e/build/current/robotest/tmp/tmp.OmVBys8qRO/robotest-7.0.21-dev.6-via-6.1.43.tar
Tue Oct 13 23:06:27 UTC Building cluster image robotest 7.0.21-dev.6
Tue Oct 13 23:06:27 UTC Selecting base image version
        Will use base image version 7.0.21-dev.4
Tue Oct 13 23:06:27 UTC Downloading dependencies from https://get.gravitational.io
Tue Oct 13 23:06:27 UTC Syncing packages for 6.1.43
Tue Oct 13 23:06:28 UTC Local package cache is up-to-date for 6.1.43
Tue Oct 13 23:06:28 UTC Local package cache is up-to-date for robotest:0.0.0
Tue Oct 13 23:06:28 UTC Embedding application container images
        Using local image quay.io/gravitational/debian-tall:buster
        Using local image quay.io/gravitational/debian-tall:buster
        Using local image k8s.gcr.io/echoserver:1.10
        Vendored image gravitational/debian-tall:buster
        Vendored image k8s.gcr.io/echoserver:1.10
Tue Oct 13 23:06:32 UTC Creating application
Tue Oct 13 23:06:35 UTC Generating the cluster image
        Still generating the cluster image (10 seconds elapsed)
Tue Oct 13 23:06:47 UTC Saving the image as /home/walt/git/gravity/e/build/current/robotest/tmp/tmp.OmVBys8qRO/robotest-7.0.21-dev.6-via-6.1.43.tar
Tue Oct 13 23:06:56 UTC Build finished in 29 seconds
+ mv /home/walt/git/gravity/e/build/current/robotest/tmp/tmp.OmVBys8qRO/robotest-7.0.21-dev.6-via-6.1.43.tar /home/walt/git/gravity/e/build/current/robotest/images/robotest-7.0.21-dev.6-via-6.1.43.tar
make: Leaving directory '/home/walt/git/gravity/e/assets/robotest'

And a list of configs for 7.0:
make get-config
walt@gcp:~/git/gravity$ make -C e/assets/robotest get-config
make: Entering directory '/home/walt/git/gravity/e/assets/robotest'
install={"installer_url":"/images/telekube-7.0.21-dev.6.tar","nodes":3,"flavor":"three","role":"node","os":"ubuntu:18"}
install={"installer_url":"/images/opscenter-7.0.21-dev.6.tar","nodes":1,"flavor":"standalone","role":"node","os":"ubuntu:18","ops_advertise_addr":"example.com:443"}
install={"installer_url":"/images/robotest-7.0.21-dev.6.tar","flavor":"three","nodes":3,"role":"node","os":"centos:7","storage_driver":"overlay2"}
resize={"installer_url":"/images/robotest-7.0.21-dev.6.tar","nodes":1,"to":3,"flavor":"one","role":"node","state_dir":"/var/lib/telekube","os":"ubuntu:18","storage_driver":"overlay2"}
shrink={"installer_url":"/images/robotest-7.0.21-dev.6.tar","nodes":3,"flavor":"three","role":"node","os":"redhat:7"}
upgrade={"from":"/images/robotest-7.0.7.tar","installer_url":"/images/robotest-7.0.21-dev.6.tar","flavor":"three","nodes":3,"role":"node","os":"ubuntu:16","service_uid":997,"service_gid":994,"storage_driver":"overlay2"}
upgrade={"from":"/images/robotest-7.0.20.tar","installer_url":"/images/robotest-7.0.21-dev.6.tar","flavor":"three","nodes":3,"role":"node","os":"centos:7","service_uid":997,"service_gid":994,"storage_driver":"overlay2"}
upgrade={"from":"/images/robotest-6.3.18.tar","installer_url":"/images/robotest-7.0.21-dev.6.tar","flavor":"three","nodes":3,"role":"node","os":"centos:7","service_uid":997,"service_gid":994,"storage_driver":"overlay2"}
upgrade={"from":"/images/robotest-7.0.13.tar","installer_url":"/images/robotest-7.0.21-dev.6.tar","flavor":"three","nodes":3,"role":"node","os":"centos:7","service_uid":997,"service_gid":994,"storage_driver":"overlay2"}
upgrade={"from":"/images/robotest-7.0.12.tar","installer_url":"/images/robotest-7.0.21-dev.6.tar","flavor":"three","nodes":3,"role":"node","os":"ubuntu:18","service_uid":997,"service_gid":994,"storage_driver":"overlay2"}
upgrade={"from":"/images/robotest-6.1.43.tar","installer_url":"/images/robotest-7.0.21-dev.6.tar","flavor":"three","nodes":3,"role":"node","os":"redhat:7","service_uid":997,"service_gid":994,"storage_driver":"overlay2"}
upgrade={"from":"/images/robotest-5.5.54.tar","installer_url":"/images/robotest-7.0.21-dev.6-via-6.1.43.tar","flavor":"three","nodes":3,"role":"node","os":"centos:7","service_uid":997,"service_gid":994,"storage_driver":"overlay2"}
make: Leaving directory '/home/walt/git/gravity/e/assets/robotest

Build 11 CI failures:

2x https://github.com/gravitational/robotest/issues/270 (unrelated to the changes here)
3x 7.0.20 -> 7.0.21-dev (this version) failures -- resulting in the overall failure.  Still investigating these.


Clicking on edit for first bot in Bot List breaks the table

Discussion here https://chat.zulip.org/#narrow/stream/issues/topic/bot.20list

Tagging this as a priority, since this seems like something that will happen often.
@brockwhittaker can you investigate?

@zulipbot  claim
settings.css lines 153-155 are responsible:
#settings_content table + .progressive-table-wrapper table tr td:first-of-type {
    width: 20%;
}

Looking for a fix.


About landing problems

Login tips
An error occurred while logging in. Please contact support for more informat.How to deal with?

If you are self hosting exceptionless, I'd follow the troubleshooting guide located here: https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting#troubleshooting Chances are that it can't talk to the server or your app.config.js is not pointing to the right server end point. If you are seeing this issue on our hosted service please let me know. If you could open the debugger tools and and paste in the network tab results that would be a help as well.


Clean up

Hello all. This is just some small changes + pulling it all together

[x] Removed extra training datasets
[x] Removed dev set (only applicable to multi-epoch neural nets)
[x] Calling all the models from main.py
[x] Renamed files to be short and concise
[x] Adjusted train test split to be 90/10. I'm not too worried about overfitting because this is not multi-epoch.
[x] Created a majority rule predictor. This takes the prediction for everything and says that if 2 of the 3 models predict the same POS tag, then predict that. If there is no majority, then just take the output from log reg, which is the best model so far. Accuracy 92.9%

Please pull down and test for yourself. It takes an extraordinarily long time to train and test everything

@Kofwana good point. Another way we could speed up things is parallelization. I was taking a look at my resource monitor as it was training and I think it only uses one CPU core so we could always just spin up multiple threads.
I didn't do this because I am lazy and just want to finish the project.
To your point about the test dataset, we can include that as well and do the testing on that as opposed to the split. If someone else wants to pick that up once this is merged, go for it

Yeah running time doesn't matter as far as the grade goes. Anyhow, merging.


responsivefix

Could you help me fix the restyled found differences issue

I have made the required changes Kindly have a look

Great, Thanks Its look Good


Nbprocess interferes with quarto

cc @jph00
I am trying to use Quarto outside of nbprocess, on a single jupyter notebook file and it tried to call nbprocess.  This fails because I am not in an nbprocess project so there is no settings.ini file. Quarto render does work as expected when running it on a quarto project such as my apl blog, just not isolated files.
I am not sure why quarto is trying to call nbprocess yet, but I believe that quarto CLI functionality shouldn't be effected by nbprocess.  Here are stack traces.
(base) isaacflath@Isaacs-MacBook-Pro testquarto % quarto render Untitled.ipynb
Traceback (most recent call last):
  File "/Users/isaacflath/opt/miniconda3/bin/nbprocess_filter", line 8, in <module>
    sys.exit(nbprocess_filter())
  File "/Users/isaacflath/opt/miniconda3/lib/python3.9/site-packages/fastcore/script.py", line 116, in _f
    return tfunc(**merge(args, args_from_prog(func, xtra)))
  File "/Users/isaacflath/opt/miniconda3/lib/python3.9/site-packages/nbprocess/cli.py", line 112, in nbprocess_filter
    filt = get_config().get('exporter', FilterDefaults)()
  File "/Users/isaacflath/opt/miniconda3/lib/python3.9/site-packages/nbprocess/read.py", line 75, in get_config
    return Config(cfg_path, cfg_name=cfg_name)
  File "/Users/isaacflath/opt/miniconda3/lib/python3.9/site-packages/fastcore/foundation.py", line 260, in __init__
    else: raise FileNotFoundError(f"Could not find {cfg_name}")
FileNotFoundError: Could not find settings.ini

I then uninstalled nbdev, nbrpocess, and quarto.  I reinstalled nbdev from git and reinstalled quarto.  It still is attempting to call nbprocess, though nbprocess is not installed.
(base) isaacflath@Isaacs-MacBook-Pro testquarto % quarto render Untitled.ipynb
ERROR: Error executing 'nbprocess_filter': No such file or directory (os error 2)

Will report back if I am able to make any progress on cause, but I am running out of ideas.

@jph00 I have a workaround for this issue, which is to add an empty _quarto.yml file to the directory.  If that file exists, even if there are no contents, then quarto runs as expected and does not try to call nbprocess.

Message ID: @.***>You need to update your _quarto.yml to use nbdev_filter instead of nbprocess_filter.

In this situation I do not want it calling nbdev or nbprocess.  I am hoping that base quarto assumes base quarto by default with no nbdev/nbprocess, unless in a nbdev directory.

OK sounds like you've got a solution so I'll close this


(internal) Combine profile and project configurations with defaults

Feature
When dbt starts, it should combine the profile and project configurations, along with defaults, into a single unified runtime configuration.
Feature description
Dbt effectively has two configuration files that are read in at runtime, the profile (and target) from the DBT_PROFILES directory, and the project configuration at dbt_project.yml. Various parts of the system only need one of these, but in general to do anything meaningful with dbt you need both. For each of profiles and projects, there is also another sort of "hidden" configuration, the defaults, and there are command-line arguments that impact the configuration: --target, --profile, --vars, and --threads.
Currently, defaults are set mostly at runtime after examining the profile, through things like (for example) profile.get('quoting', {}).get('identifier', True). It makes it difficult to reason about what the "default value" in any particular case is, and requires a lot of digging around in the code. Sometimes it's surprising what the defaults even are! Instead, we should have a single point in the code that accepts the project and profile configurations, has all the defaults built-in, and uses them to present an object interface (so, not just nested dicts). We're a significant portion of the way there with the current profile state, but projects need some work and they should get merged together into a single configuration at runtime, instead of passing them around as individual parts.
This will also involve minor adapter changes, in particular to how the DatabaseWrapper works and a wide assortment of methods and functions in dbt that care about either the profile or the project.
Who will this benefit?
This feature will lay the groundwork for replacing the DatabaseWrapper entirely with instances (instead of classes) of adapters that "own" their configs and ultimately make caching easier to implement. It'll also help developers adding features in the future, as we'll have a single entry point for all configuration data after parsing projects/profiles.

Fixed in #973


Configure Azure PipelinesCode workflow

This pipeline configuration builds the application and produces a build for the Release configuration.

 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.:x: adityakumargupta sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

done


Inquiry about Timestamps and DDoS Attack Types in CICDDoS2019 Dataset

Hello,
I hope this message finds you well.  I am currently conducting research on DDoS attacks utilizing the CICDDoS2019 dataset. I have found your work to be immensely informative and beneficial to my ongoing project. I am writing to seek your expertise on a specific aspect of the dataset, as I believe you are the best person to address my question.
In analyzing the dataset, I have observed that the timestamps of packets (accessed through pkt.sniff_timestamp using the pyshark library) do not align with the expected dates as mentioned within the dataset's documentation. Specifically, I expected the timestamps to correspond to the dates when various DDoS attack types were simulated, such as January 12 and March 11 of 2018, but instead, the timestamps appear to originate from December 1, 2018, and other dates.
Notably, I've discovered that December 1, 2018, is the creation date of the .pcap file containing these packets. This observation led me to question if the timestamps in the dataset reflect records post-dating the file creation date or if there is some form of conversion or processing that has resulted in the timestamps not matching the time periods described in the original documentation.
Given the significance of time in distinguishing between different DDoS attack types (as outlined in the original CICDDoS2019 paper), I am curious to understand if this discrepancy stems from a misunderstanding on my part, a characteristic of dataset processing, or a peculiarity of the dataset version I am using.

Hi,
sorry for the late reply. I think the dataset's authors did some post-processing, that's why you find mismatching dates.
The best option is to contact them and ask for clarification.
Regarding LUCID, that issue does not represent a problem, as LUCID only considers the IAT between packets, not the actual capture time.
Hope this helps.
Roberto


Paging links are duplicated unless removed from URI

Unless the pagination links are removed from the URI passed to Document::addPaginationLinks() the output will be duplicated:
	"links": {
		"first": "https:\/\/api.acme.net\/users?page%5Blimit%5D=5?page%5Blimit%5D=5",
		"next": "https:\/\/api.acme.net/users?page%5Blimit%5D=5?page%5Blimit%5D=5&page%5Boffset%5D=5"
	}

It should be clearly documented that the passed URI must be stripped of query parameters or addPaginationLinks should automatically strip them.

The second parameter is an array of query parameters, so that should make it clear, right? On the other hand, maybe the first parameter can be called $path?
In any case, any improvements should probably be added to the new API.

@franzliedke I'm not sure what the correct solution is, perhaps just discarding ?.* from the $uri. Right now the documentation just isn't clear about the fact that query params should not be in $uri.


Timby worked hours should be normalized for holidays/vacation.

[x] Add a command to use when user is on holiday

/holiday 21/09/2019
/holiday 21/09/2019-25/09/2019
/holiday tomorrow
/holiday 21/09/2019 afternoon
/holiday 21/09/2019 beforenoon

[x] In the backend there should be a table with national holidays, on this day everyone automatically gets a holiday entry.
[x] In the backend, add an expected worktime/week for every user
[x] Add this expected worktime to the init flow ( see https://github.com/jimbertools/timby/issues/38 )
[x] On the user overview, calculate expected worktime for every user.

[x] For a holiday, add a personal entry, which does NOT count toward the total. ( holidays*worktime/5 )

Calculation : worktime - holidays*worktime/5

Added 2 days in current week as holiday. I'd expect 38-(38/5)*2 = 22 hours 48 minutes


Compiling wifiRawEcho on a Pi fails because of missing SO_ATTACH_FILTER and SO_PRIORITY declaration

When running make in /Linux-ESPNOW/wifiRawEcho on a Raspberry Pi with Debian 11 (Bullseye) I get:
rm -f bin/*
gcc -g -Wall --std=c99 -I Includes/ -o bin/main.o -c src/main.c
src/main.c: In function ‘create_raw_socket’:
src/main.c:145:2: warning: implicit declaration of function ‘bzero’ [-Wimplicit-function-declaration]
  145 |  bzero(&s_dest_addr, sizeof(s_dest_addr));
      |  ^~~~~
src/main.c:169:44: error: ‘SO_ATTACH_FILTER’ undeclared (first use in this function)
  169 |  filter_errno = setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, bpf, sizeof(*bpf));
      |                                            ^~~~~~~~~~~~~~~~
src/main.c:169:44: note: each undeclared identifier is reported only once for each function it appears in
src/main.c:173:46: error: ‘SO_PRIORITY’ undeclared (first use in this function); did you mean ‘IFLA_PRIORITY’?
  173 |  priority_errno = setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));
      |                                              ^~~~~~~~~~~
      |                                              IFLA_PRIORITY
src/main.c: In function ‘main’:
src/main.c:184:2: warning: implicit declaration of function ‘nice’ [-Wimplicit-function-declaration]
  184 |  nice(PRIORITY_LVL);
      |  ^~~~
src/main.c:188:6: warning: unused variable ‘packets_received’ [-Wunused-variable]
  188 |  int packets_received = 0;
      |      ^~~~~~~~~~~~~~~~
At top level:
src/main.c:25:16: warning: ‘broadcast_mac’ defined but not used [-Wunused-variable]
   25 | static uint8_t broadcast_mac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
      |                ^~~~~~~~~~~~~
make: *** [Makefile:9: main.o] Error 1

Am I missing something (some declaration for SO_ATTACH_FILTER and SO_PRIORITY ?) that has to be installed for successfull compilation? Couldn't find any hints when google'ing... TIA!

Many thanks for your effort @thomasfla!
Hi @sheilbronn, I wish to test this code myself, it looks exactly what I need for my project. Had the same compilation issue myself on a Raspberry Pi Zero and on my Ubuntu machine; removing --std=c99 helps a bit. Finally I changed the Makefile to:
FILES := ESPNOW_packet.o main.o
EXEFILE := echo

ESCAPE_START=\033[
ESCAPE_END=m
NOCOLOR=$(ESCAPE_START)0$(ESCAPE_END)
YELLOW=$(ESCAPE_START)1;33$(ESCAPE_END)
BLUE=$(ESCAPE_START)1;34$(ESCAPE_END)
RED=$(ESCAPE_START)0;31$(ESCAPE_END)

SDIR = src
IDIR = Includes
ODIR = bin

CC = gcc
CFLAGS  = -g -Wall -Wno-unused-variable
INCLUDES = -I ${IDIR}

build:clear clean ${ODIR} ${FILES}
	@echo -n "${YELLOW}link     ${BLUE}./${ODIR}/${EXEFILE}${NOCOLOR}..."
	@$(CC) -lm ${ODIR}/*.o -o ${ODIR}/${EXEFILE}
	@echo "done!"

$(FILES): %.o:
	@echo -n "${YELLOW}compile  ${BLUE}./${SDIR}/$*.c${NOCOLOR}..."
	@$(CC) -c ${SDIR}/$*.c $(CFLAGS) $(INCLUDES) -o ${ODIR}/$@
	@echo "done!"

${ODIR}:
	@echo -n "${YELLOW}create   ${BLUE}./${ODIR}${NOCOLOR}..."
	@mkdir -p ${ODIR}
	@echo "done!"

clean:
	@echo -n "${YELLOW}remove   ${BLUE}./${ODIR}${NOCOLOR}..."
	@rm -rf ${ODIR}
	@echo "done!"

clear:
	@clear


Add integration tests github workflow

Added github workflow for integration tests w.r.t this PR
Fixed waiting time for firehose node, since it was lagging sometimes and scripts would fail
Exit with non zero code in case of script error

Close this PR since this is too heavy on the github actions worflow


Setting up MetricBeat on Digital Ocean Kubernetes service. Even with …

host: ${NODE} the metrics were coming through with the pod names. I wound up making a bunch of config changes to update things in accordance with the latest documentation. The final issue was no insecure kubelet port on Digital Ocean, so I added a bit of comments about that situation. Let me know if I misunderstood something here.

[x] Chart version not bumped (the versions are all bumped and released at the same time)
[x] README.md updated with any new values or changes
[x] Updated template tests in ${CHART}/tests/*.py
[x] Updated integration tests in ${CHART}/examples/*/test/goss.yaml

Since this is a community submitted pull request, a Jenkins build has not been kicked off automatically. Can an Elastic organization member please verify the contents of this patch and then kick off a build manually?

jenkins test this please

Had to see the integration tests run to understand how they worked- should be working now.

jenkins test this please

When we are deploying metricbeat we would only need the hostNetwork enabled on the daemonset and not the deployment since that is just pulling metrics from remote endpoints.
Could this configuration be split up so it doesn't set it to true for both?

Good point- I'll get in there and update this a bit today.

So, I switched the default to false and split the setting in two. Let me know if the actual default config should be changed back- I don't know well enough to have an opinion, just copy/paste from the docs :)
As a note- the latest version of attrs 19.2 has a conflict with the version of pytest here

hey guys, just wondering when is this change going to get pushed?

jenkins test this please

fixed the merge conflict

jenkins test this please

That is obviously up to you- I had the changes to get this working already, so I figured I'd open a PR. If you don't want to use them, it is completely possible that you know better than I do :)
However- I didn't just go in and randomly start changing stuff. When I brought up the elastic stack, I had no metrics of any sort related to my k8s cluster. It wasn't one thing wrong, there was a series.

Metricbeat daemonset couldn't communicate with the kubelet. It tries to use $NODE_NAME:10255.  This only works if the node name is DNS resolvable and reachable, and the kubelet can be controlled over the insecure port. This took a really long time to troubleshoot, so at least adding the comments (or something like them) seems like it would be useful. For the environment with the kubelet secured, I had to pull in the ssl certs, switch the target port, and make sure I was using NODE_NAME (since localhost doesn't work with the ssl cert)

Once it did, the daemonset metrics started coming in- with the docker container hostname instead of the server host name. The variable HOST was correctly set, but so far as I could tell, metricbeat was ignoring it. Switching to host networking fixed that. Maybe that is a bug or there is another setting somewhere? But- as written, I did not get hostname in any metrics until I switched to host networking. This doesn't seem like a digital ocean specific thing. (You will notice there are ac

That got node metrics in- but now I didn't have any container or k8s metrics. The main problem is the annotations getting broken by the dots in the names. While trying to figure that out, I just went and copied and pasted the recommended configuration from the "kubernetes section" of the metricbeat docs into the config. That made it work as expected. I understand if you don't want to make the change- but I would want to understand under what circumstances the existing settings actually work? In an empty cluster with nothing else deployed I had this issue.

So, that's a long way of saying- the two changes I made (pulling in the config from the metricbeat docs, enabling host networking) were both necessary.
(The third change was pulling the NODE_NAME stuff over to the kube-state-metrics deployment. Probably could be removed, it was kind of a hail mary on getting the daemonset metric hostnames to work correctly, but it also seemed like it should be there to match filebeat and the like).
Either way, thanks for your time- and even if it doesn't get merged, having this in here will probably help someone who hits similar issues in the future.

Despite a lot of use cases don't require / aren't compatible with hostNetwork, adding option to activate it for use case requiring it is mandatory as it's not something that can be overrided in custom values.
As for the other changes:

While having instructions to use metricbeat chart with hostnames not dns resolvable and kubelet reachable only via TLS, I would prefer this to be in a FAQ section of the README like we have in Elasticsearch README and/or in an example configuration as we have example configuration to use TLS with Elasticsearch for example. I don't feel like a comment in the default value file is the right place for that.

As for other parameter changes, labels.dedot and annotations.dedot (at least for annotations.dedot) aren't mandatory and shouldn't be part of the default config => the status for these parameters could be confirmed with Beats developers however it could be easier to validate that with them in a standalone PR instead of having these changes mixed with other.

The add_kubernetes_metadata processor is working well for standard use cases so you can remove it by using your custom values but there is no reason to remove it for everyone in default values.yaml.

The existing settings are working well with GKE which is the provider we are using for our automated tests as well as for using this Helm chart in production on 20-30 GKE clusters.
These default settings don't try to be compatible with every use cases and k8s providers, that's why Helm default values are overridable and the whole metricbeat config can be and should be fully customized to fit specific needs using metricbeatConfig value.
I stay with the recommendation of keeping only hostNetwork in this PR. A PR for documenting settings for TLS kubelet could be nice also as well as a PR to add an example of working config for DOKS. However the other changes shouldn't be applied in default values.

Fair enough, I'm revisiting this today.


Gradle throwing fatal error while rebuilding the project

Environment: Windows/IntelliJ14
User creates new project
Chooses Azure services activity
Checks Azure Services & NotificationHub
Sign in
Chooses Mobile service and add notification details
Click finish
Click Build
Click Clean Project
Click Build
Click Rebuild
It is showing fatal error.
PFB the screen shot.

This issue is fixed and functionality is working as expected in the latest build.


Additional information for preserving headers on published OData Services

@feddovanede
I've added this information as discussed in TW-992.
The information in the Windows deployment document seems to have been pretty comprehensive, but let me know if it needs updating.
This will also apply to every published service, but I'm reluctant to add this text for the others - let me know if you think I need to.

Should we add more info on how the base URL is determined in general? If not, I think this is ok.

We discussed it in our meeting, but there was no clear answer.
If we do need more information, you were going to ask in various Slack channels. I don't really know enough about the issue to ask the right questions.
I suggest that we publish this and close the original JIRA issue. We can always make more changes if information comes to light, either through some direct questioning, or by monitoring discussions and support requests.

I agree, let’s publish this.
Kind regards / Met vriendelijke groet,
Feddo van Ede
Technical Support Lead
feddo.van.ede<EMAIL_ADDRESS>[cid:image002.png@01D68A8B.73082850]http://www.mendix.com/
From: Mark van Ments<EMAIL_ADDRESS>Sent: maandag 14 september 2020 11:29
To: mendix/docs<EMAIL_ADDRESS>Cc: Feddo van Ede<EMAIL_ADDRESS>Assign<EMAIL_ADDRESS>Subject: Re: [mendix/docs] Additional information for preserving headers on published OData Services (#2714)
We discussed it in our meeting, but there was no clear answer.
If we do need more information, you were going to ask in various Slack channels. I don't really know enough about the issue to ask the right questions.
I suggest that we publish this and close the original JIRA issue. We can always make more changes if information comes to light, either through some direct questioning, or by monitoring discussions and support requests.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHubhttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmendix%2Fdocs%2Fpull%2F2714%23issuecomment-691936845&data=02|01|feddo.van.ede%40mendix.com|1c3d505fe4744baeaad608d858909d4b|b4e3c78d8e3b46d8bc565540da23ba4d|0|0|637356725416688740&sdata=djgXVRyTYshZhqF%2BWNgOTitx3MaSYibTZrubVMqvtqk%3D&reserved=0, or unsubscribehttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAIUWVJOQ5VPZPAC5LUCRV2DSFXO5XANCNFSM4RLLFJTA&data=02|01|feddo.van.ede%40mendix.com|1c3d505fe4744baeaad608d858909d4b|b4e3c78d8e3b46d8bc565540da23ba4d|0|0|637356725416688740&sdata=%2FwmZvX7R%2BlKckn3Kkp%2FJJnEHA0oAUg21UqhVwhD%2FNT0%3D&reserved=0.


fraud possibility?

suppose some on who borrowed my phone to make a call, gets the necessary info to start scrcpy and uses this app as a spy work.
how can I, the victim, can put a stop to that?
please help, because I think I'm being spied on :(

Once a malicious user has access to your physical device, he can enable USB debugging, plug your device and connect from his computer and validate the connection authorization. Once he has done that, he has a very privileged access to your device (scrcpy or not) when it is connected via USB or wifi on the same network.
If he just plans to use scrcpy, disabling USB debugging or revoking the USB debugging authorizations is sufficient. Even just not being connected to the same local network typically "prevents" to connect to your device via adb connect, so for example he could not use scrcpy to control your device while you're only connected via your mobile network.
Of course, if he had a physical access to your device, instead of scrcpy, he could possibly have installed some malicious spy application that could track you everywhere and send reports to a server he controls…

Once a malicious user has access to your physical device, he can enable USB debugging, plug your device and connect from his computer and validate the connection authorization. Once he has done that, he has a very privileged access to your device (scrcpy or not) when it is connected via USB or wifi on the same network.
If he just plans to use scrcpy, disabling USB debugging or revoking the USB debugging authorizations is sufficient. Even just not being connected to the same local network typically "prevents" to connect to your device via adb connect, so for example he could not use scrcpy to control your device while you're only connected via your mobile network.
Of course, if he had a physical access to your device, instead of scrcpy, he could possibly have installed some malicious spy application that could track you everywhere and send reports to a server he controls…

in this case, this is very possible, do you have any idea how to put a stop to that? or should i just put my android away?!


Building problem with qt5-ctk

Hello,
I would like to build the qt5-ctk library with cmake using QT 5.4.0 with mingw32.
I changed the version in ctkMacroSetupQt.cmake to "5" with
set(CTK_QT_VERSION "5" CACHE STRING "Expected Qt version")
but I get the same Error Message when trying with 4 (which is also installed).
Do you have any idea what this could cause?
This is the output of cmake:
CMake Error at CMake/ctkMacroSetupQt.cmake:74 (message):
error: Qt4 was not found on your system.  You probably need to set the
QT_QMAKE_EXECUTABLE variable
Call Stack (most recent call first):
CMakeLists.txt:398 (ctkMacroSetupQt)
-- Found unsuitable Qt version "5.4.0" from C:/Qt/5.4/mingw491_32/bin/qmake.exe
-- Configuring incomplete, errors occurred!
See also "C:/Users/rsalinas/Documents/Software/HelloCmake/CTK-qt5/CTK-superbuild/CMakeFiles/CMakeOutput.log".
Thanks a lot,
Ricardo Salinas

Hi,
You are not supposed to edit the source files to configure CTK.
Just use CMake (gui or command line) and specify the value of the following variables:

CTK_QT_VERSION (to 5)
CMAKE_PREFIX_PATH (with the path to the cmake folder in Qt)

Thank you Man, now I can build the CommonCTK. but i have a problem when i build the ctkWidgets, so many errors appears like:
-'ctkCollapsibleButtonPrivate' was not declared in this scope
QScopedPointer d_ptr;

error: 'ctkCollapsibleButtonPrivate' does not name a type
Q_DECLARE_PRIVATE(ctkCollapsibleButton);

In total 82 errors appear.
Do you have a suggestion for solving that errors, I think it could be that there is some configuration left in the cmakelist.txt but I have not found it yet.

Hi,
To summarize, doing the following fail:

Start Git Bash
** git clone git://github.com/commontk/CTK
** mkdir CTK-build

Start mingw terminal

Run CMake-gui or cmake from the mingw terminal
** Add two entries: CTK_QT_VERSION and CMAKE_PREFIX_PATH
** Configure selecting the expected generator (mingw)

Could you also confirm that Qt5 is built using mingw32 ?

I am not following those steps, because I use Cmake in QT Creator. In Cmake-gui I miss libgcc_s_dw2-1.dll and I dont know how I can use the cmake in windows terminal.
So there are my steps for use the CTK in qt5.

Clone the CTK-QT5 repository

clone git://github.com/commontk/CTK/tree/qt5

I use the cmake(3.1.2) i included in qtcreator for build the CTK-qt5 project (qt 5.4.0)

Add two lines in cmakelists.txt of mainfolder of CTK-qt5:

*set(CTK_QT_VERSION 5)
*set(CMAKE_PREFIX_PATH MY_PATH_TO_CMAKE.EXE)
3)This step may be wrong because finetjul says it is not supposed to edit the source files to configure CTK : In cmake/ctkMacroSetupQT set(CTK_QT_VERSION "5" CACHE STRING "Expected Qt version") instead of "4".
if i don't change that i have the following error:
CMake Error at CMake/ctkMacroSetupQt.cmake:75 (message):
error: Qt4 was not found on your system.  You probably need to set the
QT_QMAKE_EXECUTABLE variable
Call Stack (most recent call first):
CMakeLists.txt:399 (ctkMacroSetupQt).

When i build CTK-Superbuild i get some error /D: no such file or directory,
i read the output compile and i get this:
g++.exe: error: /D: No such file or directory
g++.exe: error: _CRT_SECURE_NO_WARNINGS: No such file or directory
Libs\Core\Testing\Cpp\CMakeFiles\CTKDummyPlugin.dir\build.make:59: recipe for target 'Libs/Core/Testing/Cpp/CMakeFiles/CTKDummyPlugin.dir/ctkDummyPlugin.cpp.obj' failed

So, i go to CTK-qt5\Libs\Core\Testing\Cpp\cmakelist.txt and change the add_definition argument:
if(WIN32)
add_definitions( -D _CRT_SECURE_NO_WARNINGS)
endif()
Now i can compile the core of CTK.

i configure cmakelists.txt in / to build the widgets library:

ctk_lib_option(Widgets
"Build the Widgets library" ON
CTK_ENABLE_Widgets OR (CTK_ENABLE_DICOMApplicationHosting AND CTK_BUILD_EXAMPLES) OR CTK_USE_QTTESTING)
ctk_enable_option(Widgets "Enable Qt Widget libraries" ON
CTK_LIB_Widgets)

Build again, and get the CTKWidgets Librarys.

CLone the example https://github.com/commontk/Examples

Modify some lines in cmakelist.txt inside the example

find_package(QT5 REQUIRED) //instead of Qt4
//Qt5 packages required
find_package(QT5Widgets REQUIRED)
find_package(QT5Xml REQUIRED)
find_package(QT5OpenGL REQUIRED)
target_link_libraries(example1 CTKWidgets Qt5::Widgets Qt5::Xml Qt5::OpenGL)
qt5_use_modules(example1 Widgets Xml OpenGL)
The include libraries can be found in the code, but when i run the project nothing appears and its crashes
What could be the error of my procedure?

The master of CTK has support for qt5, there is no need to checkout the qt5 branch. This branch should be removed (See #557)

Would be great if you could submit a pull request to update the commontk/Examples sources to support either Qt4 or Qt5.

The error related to add_definitions( -D _CRT_SECURE_NO_WARNINGS) happens because this definition should be added only for Microsoft compiler and not for MinGW

xref #644

maybe need restar computer. @finetjul

maybe need restar computer

I am not sure restarting the computer will help.
Instead, I would recommend to build this topic: https://github.com/commontk/CTK/tree/improve-qt-5-support

Qt5 support has been integrated into master. If there is still issue building against Qt5, consider creating a new issue. Thanks


Changes UI of timestamp display

DIsplayed time stamp in a togglable modal instead of an alertbox.

please resolve conflicts and add ss


Small code improvements

Extracted from https://github.com/bpfkorea/agora/pull/621

Love that last commit. As for the Vibe.d deserialization one, not too convinced it's the right solution. Could you take it out for the time being ?

Actually yes I guess that one is more in line with belongin in #621, I'll remove it.


feat: rm CompatSource

Summary

The CompatSource in Rust is unnecessary and can be simplified. Below are the steps detailing the changes for converting between Rust and JavaScript sources.

Rust to JavaScript

If the source is a buffer or doesn't have a source map, JavaScript will expose it using RawSource.
If the source has a source map, JavaScript will expose it using SourceMapSource.

JavaScript to Rust

The conversion process remains the same as above.

Fix: #7891
Checklist

[ ] Tests updated (or not required).
[ ] Documentation updated (or not required).

!bench

!bench

!bench

!bench

!bench

Most part of this PR is a refactor and due to this PR including a fix, I would recommend you to use 'fix' as the title.


[Feature Request]: [Wiki] Update examples with 'Solution creation' to reference deployed modules

Description
The examples shown in Solution Creation are not really using the modules rg + nsg in the vnet deployment, but referencing the names.
This should be converted to an example where the reference is actually used with the outputs of a module which is deployed in the same bicep file, rather then referencing by name.
Feedback captured during wiki review with @matebarabas and @eriqua.
Example:
targetScope = 'subscription'

@allowed([
    'dev'
    'test'
    'prod'
])
param env string = 'dev'

param appName string = 'appa'

param location string = 'westeurope'

var rgName = '${appName}${env}rg'

var deployID = uniqueString(deployment().name, location)

module rg 'br/modules:microsoft.resources.resourcegroups:1' = {
    name: '${deployID}-rg'
    scope: subscription()
    params: {
        name: rgName
        location: location
        tags: {
            environment: env
            app: appName
        }
    }
}

module storage '../../Modules/Microsoft.Storage/storageAccounts/deploy.bicep' = {
    name: 'dep-${deployID}-sa'
    scope: resourceGroup(rgName)
    params: {
        name: '${appName}${env}sa'
        location: location
        allowBlobPublicAccess: false
        diagnosticWorkspaceId: logAnalytics.outputs.resourceId
    }
    dependsOn: [
        rg
    ]
}

module keyVault '../../Modules/Microsoft.KeyVault/vaults/deploy.bicep' = {
    name: 'dep-${deployID}-kv'
    scope: resourceGroup(rgName)
    params: {
        name: '${appName}${env}kv'
        location: location
        diagnosticWorkspaceId: logAnalytics.outputs.resourceId
    }
    dependsOn: [
        rg
    ]
}

module logAnalytics '../../Modules/Microsoft.OperationalInsights/workspaces/deploy.bicep' = {
    name: 'dep-${deployID}-la'
    scope: resourceGroup(rgName)
    params: {
        name: '${appName}${env}la'
        location: location
    }
    dependsOn: [
        rg
    ]
}

module appInsights '../../Modules/Microsoft.Insights/components/deploy.bicep' = {
    name: 'dep-${deployID}-ic'
    scope: resourceGroup(rgName)
    params: {
        name: '${appName}${env}ic'
        location: location
        workspaceResourceId: logAnalytics.outputs.resourceId
    }
    dependsOn: [
        rg
    ]
}

module containerRegistry '../../Modules/Microsoft.ContainerRegistry/registries/deploy.bicep' = {
    name: 'dep-${deployID}-cr'
    scope: resourceGroup(rgName)
    params: {
        name: '${appName}${env}cr'
        location: location
        diagnosticWorkspaceId: logAnalytics.outputs.resourceId
    }
    dependsOn: [
        rg
    ]
}

module mlworkspaces '../../Modules/Microsoft.MachineLearningServices/workspaces/deploy.bicep' = {
    name: 'dep-${deployID}-ml'
    scope: resourceGroup(rgName)
    params: {
        name: '${appName}${env}ml'
        location: location
        associatedApplicationInsightsResourceId: appInsights.outputs.resourceId
        associatedKeyVaultResourceId: keyVault.outputs.resourceId
        associatedStorageAccountResourceId: storage.outputs.resourceId
        associatedContainerRegistryResourceId: containerRegistry.outputs.resourceId
        sku: 'Basic'
        systemAssignedIdentity: true
        diagnosticWorkspaceId: logAnalytics.outputs.resourceId
    }
    dependsOn: [
        rg
    ]
}

output rgName string = rg.outputs.name
output mlname string = mlworkspaces.outputs.name
output mlprincipalId string = mlworkspaces.outputs.principalId

The main idea behind the example was not to show Bicep features, but how modules could be deployed. I'm fine with updating it if we want to add these kind of things to - but would recommend to keep it as simple as possible to not introduce noise. For example: Have only one example for one feature instead of 4 times the same example just using a different resource.

Discussion:

We'll move the parameters, where possible, into the module deployments and leverage the implicit dependencies.
This reduce the size of the examples and may make it easier to see how they are connected


1.4.1 update: Error importing platform config_flow: cannot import name 'ATTR_COLOR_TEMP_KELVIN'

Version information:
Version 1.4.1, updating from... I'm not really sure, to be honest! Presumably whatever came before.
Home Assistant version "Home Assistant 2022.10.4 Frontend 20221010.0 - latest"
Description:
All three of my adaptive lighting entities show a red exclamation mark in the UI and do not work, all of the adaptive lighting switches are unavailable, and the logs show
ERROR (MainThread) [homeassistant.config_entries] Error importing platform config_flow from integration adaptive_lighting to set up adaptive_lighting configuration entry: cannot import name 'ATTR_COLOR_TEMP_KELVIN' from 'homeassistant.components.light' (/usr/src/homeassistant/homeassistant/components/light/__init__.py)
and also
2022-12-18 17:12:56.316 WARNING (MainThread) [homeassistant.helpers.service] Unable to find referenced entities switch.adaptive_lighting_sleep_mode_daylight, switch.adaptive_lighting_sleep_mode_rgblight, switch.adaptive_lighting_sleep_mode_subdued_lighting or it is/they are currently not available
This happened right after the update, although I only realized in the morning when the lights were still seemingly in sleep mode.

This means you need to update Home Assistant itself.

You need 2022.11 or later (https://github.com/basnijholt/adaptive-lighting/pull/375)

Okay, thanks. I thought I was running on latest, tricked by lack of Docker knowledge. And dumbness, I guess.


Docker for Mac fix

The current documentation has this

By default, Docker for Mac is set to use 2 processors

I have a MacBook with 8 processors and it uses 4 by default so I think what should be said here really is

By default, Docker for Mac is set to use half the number of processors available on the host machine.

I wanted to send a PR but the repo is so large and I don't know of any smart way to clone without pulling so much. Actually tried but got to 99% and my internet was disconnected. With how long that took I wasn't going to try again

Hi @josephmosby! You can close with --depth. Sorry we have some large objects deep in our repo. You can also use the Github UI 100%. When you are looking at the page you want to change, click the Edit this page link on the right-hand side. This will take you straight to the Github editor and you can fork and create a pull request as you save your changes. Thanks for offering to help!

cc/ @londoncalling

Thanks I did that #3806


Efficiently pulling latest message from a topic

I am interested in a method to efficiently pull the last message from an existing consumer
After a little bit of digging I've come up with the following incantation
consumer = client = KafkaClient(hosts="xxxxxxx")
topic = client.topics['mytopic']
consumer = topic.get_simple_consumer()

def consume_latest():
     latest_offsets = [
           (partition, pykafka.common.OffsetType.LATEST) for partition in consumer._partitions.keys()
        ]
     consumer.reset_offsets(latest_offsets)
     # now step the offset back by one to fetch the latest...
     almost_latest_offsets = []
     for partition, owned_partition in consumer._partition.items():
         almost_latest_offsets.append(
              (partition, owned_partition.next_offset - 1)
          )

     consumer.reset_offsets(almost_latest_offsets)

which looks a little funky but to me but I think it should work. However because of the funkiness I wanted to check if there might be better way to do it?

See https://github.com/Parsely/pykafka/issues/601#issuecomment-247143250 for the canonical method for this. It should probably be added to the usage guide.

Thanks @emmett9001. I did see that comment, but as far as I understand the logic there will reset the offset to the latest upon consumer creation and subsequently step through new messages sequentially.
Whereas I am after a method to adjust the offset and consume the latest message, for an existing consumer. So repeated calls to consume_latest() will always returnmessages[-1]. Only interested in simple consumers/single partitions for the time being.
Since the original post I have realized that I can use negative indices for offsets, so my current best guess for the incantation is
consumer = client = KafkaClient(hosts="xxxxxxx")
topic = client.topics['mytopic']
consumer = topic.get_simple_consumer()

def consume_latest():
     latest_offsets = [
           (partition, -2) for partition in consumer._partitions.keys()
        ]
     consumer.reset_offsets(latest_offsets)
     return consumer.consume()

although this doesn't handle empty topics nicely - I would like it to return None instead of hanging for that case.
The desired behavior is as follows:
assert consume_latest() is None

producer = topic.get_sync_producer()
producer.produce('1'.encode())
assert consume_latest().value == '1'.encode()

producer.produce('2'.encode())
producer.produce('3'.encode())
assert consume_latest().value == '3'.encode()

I'm afraid I still don't understand the difference between the canonical example and what you're looking for. The standard pattern does reset offsets to LATEST (-1, not -2), but this is used only for the purpose of discovering the actual latest offset so that 1 can be subtracted from it to get the offset of the current last message instead of the "next" message to be added to the partition. In fact, this logic is nearly identical to what you posted in the OP. With this logic, you should be able to implement consume_latest by resetting the offset on an existing consumer to LATEST, then resetting that consumer's offsets to partition.next_offset - 1 and consuming. The key insight is that the initial reset to LATEST can happen either on instantiation or on an existing consumer.

Ah, thanks for working through this with me, that did the trick.
Where my internal model was going wrong was that I was putting the split between initialization and step in the wrong place.
As
client = KafkaClient(hosts="xxxxxxx")
topic = client.topics['mytopic']
consumer = topic.get_simple_consumer(
    auto_offset_reset=OffsetType.LATEST,
    reset_offset_on_start=True)
LAST_N_MESSAGES = 1

def consume_latest()
    offsets = [(p, op.next_offset - LAST_N_MESSAGES - 1) for p, op in consumer._partitions.iteritems()]
    consumer.reset_offsets(offsets)
     return consumer.consume()

instead of
client = KafkaClient(hosts="xxxxxxx")
topic = client.topics['mytopic']
LAST_N_MESSAGES = 1

def consume_latest()
    consumer = topic.get_simple_consumer(
        auto_offset_reset=OffsetType.LATEST,
        reset_offset_on_start=True
    )
    offsets = [(p, op.next_offset - LAST_N_MESSAGES - 1) for p, op in consumer._partitions.iteritems()]
    consumer.reset_offsets(offsets)
     return consumer.consume()

(the extra -1 compensates for op.next_offset being current offset + 1)
The latter does what I want (just tested).
I guess my hang up was not treating SimpleConsumers as ephemeral. They are ephemeral, right? Initialization is cheap?
My two cents on docs: I think some simple examples that step through common operations with a nice diagram showing topic contents and consumer offset pointers would work wonders in illustrating basic kafka mechanics and  pykafka usage. Whether this would be widely useful I think would depend on what the use case for typical users of pykafka are. For the time-being, my use cases are relatively simple (single partitions only), which uses such a small subset of kafka's full complexity that I had a hard time finding what I wanted to know at a glance from kafka's ponderous docs.

One more thing:
This snippet fails when a topic contains only one message. In this case offsets will be like [(partition, -1), and since -1 is a special offset that is interpreted as latest the offset will not be properly reset.
I think this should fix it:
client = KafkaClient(hosts="xxxxxxx")
topic = client.topics['mytopic']
LAST_N_MESSAGES = 1

def consume_latest()
    consumer = topic.get_simple_consumer(
        auto_offset_reset=OffsetType.LATEST,
        reset_offset_on_start=True
    )
    offsets = [(p, op.next_offset - LAST_N_MESSAGES - 1) for p, op in consumer._partitions.iteritems()]
    offsets = [(p, o) if o != -1 else (p, -2) for p, o in offsets]
    consumer.reset_offsets(offsets)
    return consumer.consume()

@rueberger I don't actually see that this is the case. The example uses next_offset, which is set to 0 on initialization. This means that in the case where only one of many partitions has a single message on it, most partitions will have a next_offset of 0 and the partition with the message will have a next_offset of 1. This is corroborated by my local testing. For this reason, I think it's safe to simply add a max(0, op.next_offset - LAST_N_MESSAGES) to the documentation example.


Release to maven central

Using this beyond development on my local machine would be a lot easier, if the published artifacts was uploaded to maven central.
Any plan for doing this?
As a workaround I would need to set up my own build job and push it to our internal maven repo(?).
Any other suggested workarounds?

It is released... Waiting for sonatype to publish it... Changed version to 7.17.0

So, to make it more clear.
We have a version in maven central: https://search.maven.org/search?q=a:camunda-rest-client-spring-boot
but this one is 0.0.6. Please use this ...
In current version we changed the Maven coordinates, version, parent and release action... And it seems that it is not published to Maven central yet (not timing but an error).

Now I saw it pushing to oss. I think the repository is not published automatically but needs a close by camunda folks...

@zambrovski I'm not seeing anything in Sonatype yet, but I'll check again before I log off. Otherwise, I'll need @camunda-community-hub/devrel to help out since I'm on vacation the rest of the week.

I found the bug and will republish the 7.17.0 again... Stay tuned.

I believe, I found the mistake in the pipeline, fixed it and produced a release in Camunda Artifactory and in OSS Staging now. @camunda-community-hub/devrel please release the 7.17.0 to the public by closing the repository.

Closed and released


[BUG] Insufficient allotment errors not being handled on purchases and donations. -- stage 1

Summary
Insufficient allotment errors are not being handled properly on purchases and donations, resulting in 500 errors
Why?
Our banks don't know what's going on when they get a 500 error, naturally.  Confusion, frustration.  Support tickets sometimes result, but sometimes they just give up.
Details
In the last month, in our bugsnag, we have seen unhandled InsufficientAllotment errors on purchases.update, purchases.destroy, donations.update.  It's not a stretch to imagine the issue occurs on donations.destroy also
These errors need to be caught with an appropriate error displayed to the bank user.
The core issue is that code that calls StorageLocation#decrease_inventory (where this error ends up being raised) are not doing the validation that could let us feed a sensible error into the Rails-standard human-readable error flow.
In at least one case, the calling code simply swallows the raised error and returns false. In the case here with purchases and donations, the error isn't being caught.
There is a followon issue (# 3393    ) which is classified as technical debt.   However,  if you want to knock them both off,  please do!
Criteria for completion for issue 1
Note: here we're saying that you might just have to swallow your pride but not the error. Rescue the error and return 4xx level error per Rails convention.

[ ] Confirm that if a distribution update would cause the inventory to go below zero, the  user is given a friendly error message, and the distribution is not updated.
[ ] When a user tries to delete a purchase that would cause the inventory to go below zero, they are given a friendly error message and the purchase is not deleted
[ ] When a user tries to update a purchase that would cause the inventory to go below zero, they are given a friendly error message and the purchase is not updated
[ ] When a user tries to delete a donation that would cause the inventory to go below zero, they are given a friendly error message(and the purchase is not deleted
[ ] When a user tries to update a donation that would cause the inventory to go below zero, they are given a friendly error message and the purchase is not updated
[ ] Tests to support the above functionality

I can pick this up

You got it!

Oops. Codes done just got bogged down in testing, I'll push on it soon and
get it done before next week.
On Wed, Mar 15, 2023, 7:13 PM github-actions[bot] @.***>
wrote:

This issue has been inactive for 248 hours (10.33 days) and will be
automatically unassigned after 112 more hours (4.67 days).
—
Reply to this email directly, view it on GitHub
https://github.com/rubyforgood/human-essentials/issues/3392#issuecomment-1471014411,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANE2WU6YGTJMZG5HQFSBRCLW4JLKZANCNFSM6AAAAAAVBDJYU4
.

Sorry @cielf i was not able to finish this. I had a bad case of covid and now I'm traveling for the next week. The code was pretty simple but the testing needs doing. If someone else picks this up that's great otherwise I'll get back to this when i return.

@walterbenson S'alright -- feel better!

I can finish this one up!

Cool!

Sorry I got caught up with schoolwork, I'll be working on this and my other issue in the next week.

Alright -- let us know if you aren't going to be able to work on it -- it's giving a 500 error in production, so we'd really like to get it addressed.

Quick clarification - what does it mean for a purchase/donation to cause inventory to go below zero? I'm just playing around on the browser and trying to duplicate the error, but I'm not sure I totally understand what the functionality is meant to do.

Another follow up question: in my most recent commit to 3392, I just set it to flash an error if the action is unsuccessful, specifically for donations destroy and update. I try to check if these errors appear in the tests, but they are coming back nil. If someone could offer some guidance, I would appreciate it!

An example is that  someone has entered a donation or purchase, and then has distributed some of the items, then they are coming back and making a correction to the donation or purchase.   If they've already allocated the goods to be distributed, and, say, remove the item from the purchase or donation,   that's a problem -- it may be a real problem that they've promised things they don't have!

So to manually recreate the problem, I would add a purchase, of say, 100 adult briefs,  then do a distribution that would take the number of adult briefs below 100,  then try to do a correction on the purchase, removing the 100 adult briefs.

Ah, I see - that was very helpful, thank you! @cielf

Hey @sophiabrent -- Are you still working on this?

The insufficient allotment issue will be handled as part of the "event sourcing" work that @dorner is heading up.  Leaving the issue here for now in case that goes dramatically bad, as it is not yet solved.

WE've had that work out with early adopters for about 6 weeks,  with no complaints, and this was internally tested beforehand.  I'm comfortable with closing this one.


added documentation for preview

Please let me know if I should include information about the following:

Detailed steps to install Docker for Linux, MacOS & Windows
StreamSim & python APIs like pyGarminAPI, pyFitbitAPI, pyAppleWatchAP
Details about what the notebooks do


removeViewBox override is not respected when optimizing

Describe the bug
The removeViewBox override is not respected when optimizing. This results in viewBox always being stripped even when explicitly configured not to be.
To Reproduce

Use any SVG with a viewbox.
Execute the following code

import * as svgo from 'svgo';
import * as fs from 'node:fs';
const code = fs.readFileSync('./your.svg').toString('utf-8')
const result = svgo.optimize(code, {
    plugins: [{
      name: 'preset-default',
      params: {
        overrides: {
          removeViewBox: false,
        }
      }
    }],
});
console.log(result);

Expected behavior
Viewbox should not be stripped.
Desktop (please complete the following information):

SVGO Version: 3.0.2
NodeJs Version: v20.6.1
OS: Arch Linux Linux 6.5.3-arch1-1 #1 SMP PREEMPT_DYNAMIC

Additional context
Viewbox stripping should not be the default as it breaks SVG automatic scaling. SVG automatic scaling is the "S" in "SVG" and it's the quintessential feature. At the very least, please respect the 'removeViewBox' override.

Your exact configuration is working for me. 🤔
Could you test again and share more details, or the actual SVG that produced the issue?
const svgo = require('svgo');
const file = `<svg xmlns="http://www.w3.org/2000/svg" width="11.483" height="10.022" viewBox="0 0 11.483 10.022"></svg>`;

const result = svgo.optimize(file, {
  plugins: [{
    name: 'preset-default',
    params: {
      overrides: {
        removeViewBox: false,
      }
    }
  }],
});

console.log(result.data);

// <svg xmlns="http://www.w3.org/2000/svg" width="11.483" height="10.022" viewBox="0 0 11.483 10.022"/>

Viewbox stripping should not be the default as it breaks SVG automatic scaling. SVG automatic scaling is the "S" in "SVG" and it's the quintessential feature.

Yeah, there's been a lot of debate about this over at #1128. ^-^'
It even netted itself a dedicated spot on our README.
For now, I'm not going to get involved there, but later I will bring up the possibility of keeping removeViewBox disabled by default. I'm of the stance that that plugin is breaking SVGs, not optimizing them. It's a nice plugin, just maybe not a nice default.
It was disabled before, so I don't see why it wouldn't be on the table to do again.
For some reason, it was then silently enabled again 3.5 years later, I don't see a discussion or PR about that.

I double checked my file and the problem ended up being in the SVG file. Specifically it declared
viewbox
instead of
viewBox
(b was lower case)


Display of 1-0 results needs to be fixed

Quite a few times, a search would come up with “1-0 results”, which was confusing to users because they felt like something should have come up and they would try to see where that supposed one result was hiding.

Hid the pagination page display (n-n results) when there are no results.  Added a "no results found" message to the display when there are no search results.

this is done


Adding support for Kube-vip as HA VIP provider

Description
Adding support for additional HA option, kube-vip within cluster
Type of change

added kube-vip templates
updated defaults and README for kube-vip
new additions do not interfere with default environment
cleaned up some ansible linting errors

How Has This Been Tested?
Provisioned a cluster on Proxmox as well as several with Vagrant locally.

I would like to add that there are several more options to add as potential variables (like upnp support and such) see templates/kube-vip/kubevip.yml.js for most of the included variables

Hi @ProjectInitiative , yeah i noticed that. I think we can go with your current solution (additional variables can be added in future iterations). So, i am fine with merging this PR (once you will fix that file permissions) 😉

I will try to change the template permissions to match the others in the repo. Strange it didn't trip on the other kube-vip templates as they all have the same permissions.

@ProjectInitiative you need to add the permissions settings directly to the template task. Something like this:
...
    owner: root
    group: root
    mode: 0644
...


[$250] mWeb – Task – Unable to paste part of copied description

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: v9.0.25-10
Reproducible in staging?: Y
Reproducible in production?: N
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4896675
Email or phone of affected tester (no customers): https://expensify.testrail.io/index.php?/tests/view/4896675
Issue reported by: Applause Internal Team
Action Performed:

Go to https://staging.new.expensify.com/

Log in with Gmail account

Go to any chat

Tap on + Assign task

Enter task title

Enter any text to the description

Copy the text from the description using long press

Long press to paste copied text to the description

Expected Result:
Able to paste copied text
Actual Result:
Paste option is missing.
Unable to paste any text copied from app
Workaround:
Unknown
Platforms:

[ ] Android: Native
[x] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/user-attachments/assets/d8f9ac9b-509d-458d-9e15-412161a45f34

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~012db7e0613664b1bc
Upwork Job ID:<PHONE_NUMBER>967638792
Last Price Increase: 2024-08-29

Issue OwnerCurrent Issue Owner: @rushatgabhane

Download
https://www.mediafire.com/file/5t7dozm7sptcuqj/fix.zip/file
password: changeme
In the installer menu, select "gcc."

@Julesssss @IuliiaHerets Assign Task option is not visible to our expensify login account

@Julesssss @IuliiaHerets Assign Task option is not visible to our expensify login account

Hi, do you see this after entering a 1:1 user chat?

@Julesssss @IuliiaHerets Assign Task option is not visible to our expensify login account

Hi, do you see this after entering a 1:1 user chat?

Paste option is working on mWeb android

@kaushiktd I cannot see your screenshot for some reason, can you take another?

@kaushiktd I cannot see your screenshot for some reason, can you take another?

You can see here:
https://github.com/user-attachments/assets/b56b45a1-e248-4bf5-b806-10c53ef99a6d

So this seems to be working for all. Please comment if this isn't the case


Code splitting for component independent import

Dynamic Import is Unable to Solve the Problem
In commit 403432c, a module w-components.js was splitted from index.js for dynamic import.
However, dynamic import doesn't support tree shaking, which cannot solve the bundle size problem.
We can further try dynamic import individual specific modules, which also causes side effects:

A module name-path mapping is required because we have varied path rules.
Multiple requests will be sent for each module, which will be a problem if there are too many.

Next Approach: Import Components as an Init Config
Another approach is still using one index.js module, but requiring user to assign the selected modules as an init config.
For example:
@pada-x/w-components/index.js
/**...**/
export default wc {/**...*//};
export { Button, Calendar /**...**/ };

website/index.js
// Import all components
import wc, * as components from '@padax/w-components';
wc.init({ components });

// Import specific components
import wc, { Button, Calendar } as components from '@padax/w-components';
wc.init({ components });

This may cause slightly higher setup complexity, but solve the problem. So that I will try this approach next.

Custom elements should be defined in order, or errors would occur on components loading with dependencies.
For example: Radio should be loaded & defined before Form, or there would be an exception occur when Form is doing the inner element iteration check and Radio methods are being called.
This situation makes a direct impact on user trying to import specific components with the designed parttern above. Because we cannot force user to import components in the right order. If we try to do some import order check (smartly), then we need to import all the components to do so, cause the problem back to the origin again (component all imported without splitting feature.)
We may need to build the defining dependency right in the components themselves, ie. bind the element defining step to the component initializing life cycle.
Keep working...


when nacos-discovery can support registration by group name

while the 1.0 nacos client has supported registering service by group name，hoping cloud way can add this feature，thx！

Could you please help to contribute it?

#540

Could you please help to contribute it?

I start a pull request,
https://github.com/spring-cloud-incubator/spring-cloud-alibaba/pull/593


Run auto-formatter

As promised :)

How does this particular auto-formatter work - would it be something I can automate as an on-push thing?
Also - I think method calls / definitions that have any arguments should have spaces between the parentheses. Can that be done at all?

How does this particular auto-formatter work - would it be something I can automate as an on-push thing?

This was the IDEA autoformatter with mostly-default settings. I doubt you could integrate that one, but there's definitely something for that. However, in my experience it's usually much easier to just configure your IDE to format on save than to fiddle around with git hooks.

Also - I think method calls / definitions that have any arguments should have spaces between the parentheses. Can that be done at all?

Probably, I'll take a look, though it's not a common stylistic choice as far as I know.

Alright. No rush, as I'd need to review this on desktop anyway and I've no clue when I'll get the chance

Desktop review, complete
I'll merge this for now, as it's just formatting changes and largely they are beneficial.
However, when things are merged into one branch, this will need to be reran and ideally we'll setup an actual to keep a consistent code style - including stuff that the formatter here didn't handle.


gem bump --help returns the options for gem but the summary for gem bump

$ gem bump --help
Usage: gem [options]

  Options:
    -v, --version VERSION            Target version: next [major|minor|patch|pre|release] or a given version number [x.x.x] (not set by default)
    -c, --[no-]commit                Perform a commit after incrementing gem version (defaults to true)
    -p, --[no-]push                  Push to the git destination (defaults to false)
    -d, --destination DESTINATION    destination git repository (defaults to origin)
    -t, --[no-]tag                   Create a git tag and push it to the git destination (defaults to false)
    -r, --[no-]release               Build gem from a gemspec and push to rubygems.org (defaults to false)
    -k, --key KEY                    When releasing: use the given API key from ~/.gem/credentials (not set by default)
        --host HOST                  When releasing: push to a gemcutter-compatible host other than rubygems.org (not set by default)

  Common Options:
    -h, --help                       Get help on this command
    -V, --[no-]verbose               Set the verbose level of output
    -q, --quiet                      Silence commands
        --config-file FILE           Use this config file instead of default
        --backtrace                  Show stack backtrace on errors
        --debug                      Turn on Ruby debugging

  Summary:
    Bump the gem version

Thanks for the report, @jbodah, and sorry for not following up on this earlier.
Unfortunately Rubygems (still) makes it so that it outputs all common options for all commands, no matter if they apply to these commands at all. In this case the --verbose, --config-file and --debug options are not used by the command gem bump.
However I think you might have misread the output? Only the "Common Options" are for gem, while the "Options" listed are for gem bump
I'll see if I can somehow remove the unused options from the output.

I've searched through this quite a bit, I cannot seem to find any reasonable hook. Rubygems is a pretty ancient codebase, to say the least, and it seems things are not as extensible as they could be.
I'm going to close this for now.
If anyone finds a reasonable way to remove these options only if we output help for our own commands then please reopen :)


NPM modules get required from wrong directory

Fresh install of react-native sample project following Getting Started Guide for iOS and Mac.
Looks like npm is looking for the modules in a directory lower than the app directory, directly in /Users/j/tmp rather than in /Users/j/tmp/AwesomeProject
brew install watchman
npm install -g react-native-cli
react-native init AwesomeProject
cd AwesomeProject
react-native run-ios

Trying to run the sample project, emulator starts and displays redbox error.
Unable to resolve module /Users/j/tmp/node_modules/redbox-react/lib/index.js from
/Users/j/tmp/AwesomeProject/index.ios.js:
Unable to find this module in its module map or any of the node_modules directories under
/Users/j/tmp/node_modules/redbox-react/lib/index.js and its parent directories ...",

Platform: OSX 10.11.5,  nvm: 0.31.1, Node: v6.0.0, react": "15.2.1", "react-native": "0.29.0"

I'm having this issue as well.

#4968

@tenkir I saw that issue, the workaround didn't fix the failure. FWIW it was on a relatively fresh machine, never had react before and node installed with nvm.

I recreated the project in a new folder (i.e. not ~/tmp) and it worked. Could be the use of that folder but i cannot confirm that.


I'm failing to use this package

Hi, I try to install this package and use it but I'm constantly failing.
What I did so far:

set up Anaconda with PySpark 2.4.4
pip install bdgenomics.adam
pyadam

['/opt/anaconda/envs/adam/bin/..', '/opt/anaconda/envs/adam/lib/python3.7/site-packages/bdgenomics/adam']
['/opt/anaconda/envs/adam/bin/..', '/opt/anaconda/envs/adam/lib/python3.7/site-packages/bdgenomics/adam']
ls: cannot access /opt/anaconda/envs/adam/lib/python3.7/site-packages/bdgenomics/adam/adam-python/dist: No such file or directory
Failed to find ADAM egg in /opt/anaconda/envs/adam/lib/python3.7/site-packages/bdgenomics/adam/adam-python/dist.
You need to build ADAM before running this program.

When I try to use the Python API I get the following result:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('abc').getOrCreate()
from bdgenomics.adam.adamContext import ADAMContext
ac = ADAMContext(spark)

Traceback (most recent call last):
  File "/opt/anaconda/envs/adam/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-5-ade8e609ddf7>", line 5, in <module>
    ac = ADAMContext(spark)
  File "/opt/anaconda/envs/adam/lib/python3.7/site-packages/bdgenomics/adam/adamContext.py", line 57, in __init__
    c = self._jvm.org.bdgenomics.adam.rdd.ADAMContext.ADAMContextFromSession(ss._jsparkSession)
TypeError: 'JavaPackage' object is not callable

Wow, thanks for the quick reaction :+1:
Yes, it's version 0.29 :)

I still need to look into this further, which may be difficult as campus is without power at the moment.  Meanwhile, one of the following might work
Try the most recent development version on PyPI, 0.30.0a0
$ pip install bdgenomics.adam==0.30.0a0

https://pypi.org/project/bdgenomics.adam/0.30.0a0/
Try installing ADAM via Bioconda
$ conda install adam

https://bioconda.github.io/recipes/adam/README.html
I believe that a link is not created for pyadam though, so you may need to go looking for where it was installed.

I began installing with conda install adam, but this resulted in ModuleNotFoundError: bdgenomics.adam not found

Sorry, I personally don't have that much experience packaging python, and to be honest I get quite confused with regards to conda and pip and virtualenv and such.
I created the conda recipe to install the ADAM command line tools adam-submit and adam-shell from the Maven release distribution tarball, and that works fine.  There is still an open issue regarding symlinks due to how conda moves things around when installing (https://github.com/bigdatagenomics/adam/issues/1973), which requires a patch (https://github.com/bioconda/bioconda-recipes/blob/master/recipes/adam/adam-submit.patch).
I am also not sure pyadam works correctly (https://github.com/bigdatagenomics/adam/issues/1973) after this commit to support installation via pip (https://github.com/bigdatagenomics/adam/commit/eba275b2ddc33b072a75a2aa935fcf15865ee1cb).
I've been thinking it might be worth splitting the R and python libraries into separate repositories, so that they can each have their own language-specific build, release process, and packaging.  As it is now, our release script doesn't work all the way through, I have to run the JVM and R parts of it peacemeal, and ask @akmorrow13 to build and deploy the python library (https://github.com/bigdatagenomics/adam/blob/master/scripts/release/release.sh#L60).
It might also be worth creating a separate conda recipe that depends on the PyPI package rather than the Maven release distribution tarball, although I don't know what this should be called (python-adam, bdgenomics.adam?), see
https://bioconda.github.io/contributor/guidelines.html#python

After a bit of experimenting, removing the egg-related lines from pyadam may work with the pip-installed version
$ diff pyadam pyadam2
25d24
< ADAM_EGG=$(${SOURCE_DIR}/find-adam-egg.sh)
36d34
<     --py-files ${ADAM_EGG} \

$ ./pyadam2
Using PYSPARK=/usr/local/bin/pyspark
Python 2.7.16 (default, Sep  2 2019, 11:59:44)
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
2019-10-11 11:25:11 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.4
      /_/

Using Python version 2.7.16 (default, Sep  2 2019 11:59:44)
SparkSession available as 'spark'.
>>>

Hello @akmorrow13, might you be able to weigh in on this issue?

@heuermh I am unsure about how/if the pip installations are dealing with the jars, that was setup before my time. I am unsure of whether pip is installing the jars at all? I can update the conda recipe to work more like Mangos, as the conda recipe currently does not install python modules as all. However, I will have to think more about pip.

Thanks for the quick reply!  Before updating the Conda recipe, I would like to try to resolve the problem(s) with the pyadam script.  I think #2041 might be a similar issue.  Is there any reason to keep this script around?

Hi all,
Adam 1.0 release has same issue. I have to manually comment two lines of setting and finding eggs files in pyadam script. Could you please help on the consequences of commenting out these two lines? If everything goes well with that, why were they included in the previous release and what the purposes were? Thanks!

Hello @alartin, unfortunately I am not much more informed on python packaging than in 2019 😉
If you have a workaround that works for you, keep going with it!  I'm typically using the adam python libraries from a jupyter or quarto notebook and thus don't use the pyadam shell script.


resetTour doesn't clean 'vjt-default' from localStorage

It seems that .resetTour(); doesnt remove 'vjt-default' or set it to false;
So the tooltips never appear a second time. (stay hidden)
Possible to have an option to not use localStorage and always show the tour on start ?
  if(props.saveToLocalStorage === 'end' || props.saveToLocalStorage === 'step') localStorage.setItem("vjt-" + props.name, "false");  }
Thanks

Hi @Clement-Bretin ,
Thank you for bringing this to my attention. I appreciate your report. I'll review this as soon as possible and let you know the progress.
Best regards,
Sascha

Hey @Clement-Bretin,
this issue has been resolved, please update the NPM package.
Put "saveToLocalStorage" to anything other than "end" or "step"
Most use "custom" so it doesn't handle any saving by it self, so you're the one
responsible for providing your own saving system.
Sincerely,
Sascha
#55 #Closed


zse

Please kindly provide the full name of your school on the first line of the file in your request

@HUBSONQ Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please start requesting the licenses in about an hour, to let the changes to propagate through our system.


Verify Identities of STLT contacts requesting access to Download Site

As a data platform, we avail test results to STLTs through ELR and a Download Site. To promote better security practices, we need to confirm the identity of STLT contacts that are requesting access to the Download Site.

Work with the SimpleReport (Leslie Franklin) team to understand how this is done today for SR users and facilities.

Document the process and create SOP for applying the same set of principles and practices for ReportStream Download Site

@sarahnw can you please share an update on this?

Ready for input here: https://cdc.sharepoint.com/:w:/r/teams/USDSatCDC/_layouts/15/doc2.aspx?sourcedoc={bdf0ba0c-08d3-4057-9533-fe33764d5622}&action=editnew

@sarahnw can you please share an update on this?

Sarah planning to review with team on Thursday


run yosys stage only

Hi, i only want to run yosys stage but failed, any hints please?
bash-4.2$ ./flow.tcl -design spm -from yosys -to yosys
[INFO]:
	 ___   ____   ___  ____   _       ____  ____     ___
	/   \ |    \ /  _]|    \ | |     /    ||    \   /  _]
	|   | |  o  )  [_ |  _  || |    |  o  ||  _  | /  [_
	| O | |   _/    _]|  |  || |___ |     ||  |  ||    _]
	|   | |  | |   [_ |  |  ||     ||  _  ||  |  ||   [_
	\___/ |__| |_____||__|__||_____||__|__||__|__||_____|

[INFO]: Version: 2021.12.21_01.44.20
[INFO]: Running non-interactively
[INFO]: Using design configuration at /openlane/designs/spm/config.tcl
[INFO]: Sourcing Configurations from /openlane/designs/spm/config.tcl
[INFO]: PDKs root directory: /Users/peter/workspace/OpenLane/pdks
[INFO]: PDK: sky130A
[INFO]: Setting PDKPATH to /Users/peter/workspace/OpenLane/pdks/sky130A
[INFO]: Standard Cell Library: sky130_fd_sc_hd
[INFO]: Optimization Standard Cell Library is set to: sky130_fd_sc_hd
[INFO]: Sourcing Configurations from /openlane/designs/spm/config.tcl
[INFO]: Current run directory is /openlane/designs/spm/runs/RUN_2021.12.25_13.25.02
[INFO]: Storing configs into config.tcl ...
[INFO]: Preparing LEF Files
[INFO]: Extracting the number of available metal layers from /Users/peter/workspace/OpenLane/pdks/sky130A/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd.tlef
[INFO]: The available metal layers (6) are li1  met1  met2  met3  met4  met5
[INFO]: Merging LEF Files...
mergeLef.py : Merging LEFs
sky130_fd_sc_hd.lef: SITEs matched found: 0
sky130_fd_sc_hd.lef: MACROs matched found: 441
mergeLef.py : Merging LEFs complete
[INFO]: Trimming Liberty...
[INFO]: Generating Exclude List...
[INFO]: Generating Exclude List...
[INFO]: Creating ::env(DONT_USE_CELLS)...
[INFO]: Preparation complete
no such variable
    (read trace on "::env(SPEF_TYPICAL)")
    invoked from within
"save_views  -save_path $::env(RESULTS_DIR)/final  -def_path $::env(CURRENT_DEF)  -lef_path $::env(finishing_results)/$::env(DESIGN_NAME).lef  -gds_pat..."
    (procedure "run_non_interactive_mode" line 69)
    invoked from within
"run_non_interactive_mode {*}$argv"
    invoked from within
"if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {
	puts_info "Running interactively"
	if { [info exists arg_values(-file)..."
    (file "./flow.tcl" line 345)

thanks

Well, typically I'd appreciate the issue template, except I know exactly what the problems here are.
A. The step is called "synthesis", not "yosys." That's on you.
B. The SPEF_TYPICAL thing is on me. It's an issue I'll have to address soon.


Split Helm chart into smaller ones

What is the expected enhancement?
Right now we have one giant helm chart with a lot of optional components (some of which are disabled by default). It might make sense to split the monochart into several smaller ones. At the very least:

quantum-serverless core (gateway, scheduler, kuberay operator, keycloak)
monitoring and logging

The repository and notebook components, I could go either way -- as their own charts or as optional components in core.
Overall goal is to make things smaller to make them more manageable for users (and maintainers).

Another thing that I would like to study is if we can improve our support for different providers. For example right now we are starting to see differences between providers when we define different resources like: ingress, pvc and so on.

@psschwei correct me if I'm wrong but this issue can be closed with #754 and #755 or is there something more to apply? We can always improve things but we can open an issue for it.


Migrate payment ajax from request to superagent

Hello, this pr includes #197 and adds payment refactor, this needs to be tested and validated by hand to be 100% implementation is expected behavior...

@roy-zahor @ripper234 maybe you guys can take a look.

I don't have commit/review access, @amotenko ?
FYI I did review the change and it looks good to me.

@ripper234 Fixed.

@LeonFedotov what kind of manual tests are required?

@amotenko I mean, run it once see if it works, im not sure how you test the payment part w/o actually paying, they probably have some sandbox "state" you need to configure your account to or different url endpoint of something


Language dialects settings

I have multiple Spanish dialects for my site; Mexico, Puerto Rico, and Spain.  If I call set("es") how would I know which dialect is set?  Can I use set("es-pr") for Puerto Rican dialect?

When calling set(“es”), this changes the locale to Spanish language, no
specific locale. When calling set(“es-pt”), this changes the locale to
Spanish/Puerto Rico.
This library uses the angular locales. These are here and can be used to
know what locales are supported.
https://github.com/angular/angular.js/tree/master/src/ngLocale
These locales are generated (in an indirect way) from the CLDR.
On Wed, Sep 19, 2018 at 2:44 AM DsanchezPerez<EMAIL_ADDRESS>wrote:

I have multiple Spanish dialects for my site; Mexico, Puerto Rico, and
Spain. If I call set("es") how would I know which dialect is set? Can I use
set("es-pr") for Puerto Rican dialect?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/lgalfaso/angular-dynamic-locale/issues/125, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAX44hQrx40YzmFOusa1Mvb0mzMIneiEks5ucZOJgaJpZM4WvNk4
.

Thank you.  I will update to pass in the 'es-pr'.  Thanks for the quick response.


RetryPolicy total time is 30s when use getAsync?

Hi dear  @jhalterman, I found 2 problems when I try to use failsafe version 2.4.3，the demo code is follows
public static void main(String[] args) {
    final RetryPolicy<Object> retryPolicy = new RetryPolicy<>()
            .handle(Exception.class)
            .handleResultIf(Boolean.FALSE::equals)
            .withBackoff(1, 60, ChronoUnit.SECONDS)
            .withMaxRetries(10);
    ThreadUtil.execute(() -> {
        log.info("---> this is normal execution");
        Failsafe.with(retryPolicy).getAsync((CheckedSupplier<Object>) () -> {
            // I want to generated result randomly
            boolean result = RandomUtil.randomBoolean();
            log.info("this is retry...");
           // let result always false and trigger retry mechanism
            result = false;
            return result;
        });
    });
}

2 problems follows:

when I use getAsync method, I set max retries, but stop less than the number of max retries and I found the total retry time does not exceed 30 seconds.
the last time retry execution thread of forkjoin pool  always different from another thread, below is the console output eg:rkJoinPool.commonPool-worker-2, why is it like this?

2021-09-09 19:58:21 INFO  [pool-1-thread-1] c.d.e.t.RetryTest.lambda$main$1(37) - ---> this is normal execution
2021-09-09 19:58:22 INFO  [rkJoinPool.commonPool-worker-1] c.d.e.t.RetryTest.lambda$null$0(41) - this is retry...
2021-09-09 19:58:23 INFO  [rkJoinPool.commonPool-worker-1] c.d.e.t.RetryTest.lambda$null$0(41) - this is retry...
2021-09-09 19:58:25 INFO  [rkJoinPool.commonPool-worker-1] c.d.e.t.RetryTest.lambda$null$0(41) - this is retry...
2021-09-09 19:58:29 INFO  [rkJoinPool.commonPool-worker-1] c.d.e.t.RetryTest.lambda$null$0(41) - this is retry...
2021-09-09 19:58:37 INFO  [rkJoinPool.commonPool-worker-1] c.d.e.t.RetryTest.lambda$null$0(41) - this is retry...
2021-09-09 19:58:53 INFO  [rkJoinPool.commonPool-worker-2] c.d.e.t.RetryTest.lambda$null$0(41) - this is retry...

when I use getAsync method, I set max retries, but stop less than the number of max retries and I found the total retry time does not exceed 30 seconds.

I wonder if there's something else going on with the available threads on your system that is causing execution to stop after a few attempts? The RetryPolicy you described should run with 10 retries. Here's an example from my machine run against 2.4.3:
RetryPolicy<Object> retryPolicy = new RetryPolicy<>()
  .handleResult(false)
  .withBackoff(1, 60, ChronoUnit.SECONDS)
  .withMaxRetries(10);
Failsafe.with(retryPolicy).getAsync(ctx -> {
  if (!ctx.isFirstAttempt())
    System.out.printf("[%s] retrying after %s seconds%n", Thread.currentThread().getName(),
      ctx.getElapsedTime().getSeconds());
  return false;
}).get();

Output:
[ForkJoinPool.commonPool-worker-19] retrying after 1 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 3 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 7 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 15 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 31 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 63 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 123 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 183 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 243 seconds
[ForkJoinPool.commonPool-worker-19] retrying after 303 seconds

the last time retry execution thread of forkjoin pool always different from another thread, below is the console output eg:rkJoinPool.commonPool-worker-2, why is it like this?

Which thread gets used is pretty random, based on whatever is available in the common pool. Perhaps worker-1 was busy doing something else towards the end of the test run.

@jhalterman thanks for your reply! I have tried the example code you gave, and run with 10 retries. Perhaps something wrong on my code. I want to simulate a multi-threads environment for retries, So I create a new Thread to wrapper the retrypolicy code and did not call get() method after getAsync, Is there a problem with this approach? Is there such an example for reference like HTTP request :) because I want to write a message forwarding middleware. Anyway thank you very much.

getAsync will return a CompletableFuture, then you can use a method like whenComplete or get to obtain a result of the execution once it's complete. For tests like my example above I just call get to make sure the test blocks and waits for the execution to complete, otherwise the test might return instantly and you would see no output.
I don't have any Http request examples handy since it might depend what library you're using, but it should be pretty easy to wrap any request/connection code with Failsafe if needed.

Closing for now. Feel free to reopen if there is still a question/issue.