ofp_send / ofp_sendto poor performance

With ofp sitting on top of odp_dpdk, the performance of ofp_send /ofp_sendto is pretty poor (UDP). In a while loop running nothing but ofp_send, the performance caps out at about 110Kpps.
This while loop is running in its own thread, but was not spawned with odp_thread api, but did run the odp/ofp local thread init in order to be able to use the ofp fastpath apis. The ODP/OFP has two dispatch threads running on their own cores.
Is the ofp_send/to family of APIs supposed to not be part of the fast path? i.e. is it on the slow path? Are the pktio interfaces the only ones supposed to be fast? Just curious as to what I might be doing wrong.
Using vanilla dpdk on the same NIC, 4-5Mpps is achievable with little effort or tuning.
Why not use plain DPDK? Was hoping to make use of OFP networking stack capabilities.... Rather not have to populate layer 2-3-4 headers and perform arp resolution, etc etc.

Hi,

I don't have exact numbers but it looks low (maybe Matias has some results).
As you suspect, socket API is not accelerated: simply putted, it requires at least one memcpy() and lots of locks to send or receive data.
Instead, other mechanism were consider:

'zero-copy' and packet hooks are designed to have direct access to the information from received packets (to the actual packet).
on send part, probably ofp_udp_pkt_sendto() may be used.

But main usecase for OFP was packet processing and not generator: receive a packet, process it, send it.
If a pure packet generator is your usecase then maybe odp_generator from odp_dpdk will be more useful.

Design of your application has a lot of impact: there are control threads and worker threads.

Worker threads can receive packets (access to interface RX queues) and send packets (access to TX queues).
Control threads can receive data through socket API and send packets (access to TX queues).
Now, when you are running ofp_send/ofp_sendto in a loop (in a control thread), the traffic is not using the workers: it is just one (your) thread using one TX queue.
If your thread happens to run on the same core as a worker thread (that tries to use 100% of the core), you will get poor performance.
So, a little bit of thread per core planing is needed.

OFP configuration and network card capabilities are important:

using scheduled workers (fpm example) vs. direct mode (udp_fwd_socket example) + 1 scheduled worker
number of RX and TX queues available: if threads have to share queues then locks are needed.
specific OFP configuration flags (like burst size), etc.

Usually when planning to use OFP, you have to start with filling a list:

What CPU architecture: x86 64 or arm, etc.
How many cores can/want to use
Capabilities of the network card: number of TX and RX queues, offload capabilities.
what kind of processing and how to split it per cores.

So, tell us more ...
Merci,
Bogdan

Hi Bogdan,
Thank you for the detailed response. I was able to improve the performance 5X changing the NIC (mellanox card) to not use the igb_uio driver since it seems DPDK has direct support for the NIC via ibverbs and the mlx poll mode driver. However performance is still well under what we were hoping to achieve.
Anyway, I definitely ensured the send thread was not using the same threads as the worker threads as they were bound to different cores. Initially the control thread was on cpu 0 (I think the default core for control threads), but I put it on cpu 1 since I think a lot of linux processes use cpu 0 for handling interrupts and other things. I think that stuff was negligable because it didn't matter whether I ran on cpu 1 or 0. The worker threads I put on 2 and 3, but it doesn't matter which ones it seems they run on (the system I was testing on has 16 cores). Since I was only doing transmit, I wasn't sure how useful to have more than one thread.
I think I understand the purpose of the hook, but was hoping to avoid that as it seems like it is sort of global hook for the port. Meaning, I could have several udp sockets open sending to different destinations, but all flows would go through the same hook, so that I wouldn't really know which packet belonged to which flow without doing some packet parsing... Seems like there is added complexity there.
Anyway, if there are some benchmarks you might have, especially with the socket api, that would be very useful to know what is possible or what one might expect to be able to achieve.

Hi,
You can try this:

Put on core 0 the worker thread: since you are doing mostly send operations it will not be used much (timers, etc. will run on it)
Core 1-N: create multiple control threads (one per core) with your send loop (different sockets per thread, bound, etc.).
For your configuration, probably it will make sense to increase OFP_PKT_TX_BURST_SIZE (include/api/ofp_config.h) to 16 or 32.
Hyperthreads (x86): use only one virtual core per processor core else you will see no increase in performance

Hooks are points where you can access packet as is processed by ofp: you can inspect the packet or take ownership of the packet and do what you want with the it.
Alternatively, you can use "zero-copy" api.. that is basically a hook per socket: see example/udp_fwd_socket/udp_fwd_socket.c line 63
That are many optimizations possible (e.g: use multiple TX queues (one per used core) without Multithread safe) but above points should improve performance.
Maybe I'll try myself this scenario on my setup.
Btw, if DUT and packet destination are in the same network you can add a direct route.
e.g.
in CLI:
route add <IP_ADDRESS>/32 gw <IP_ADDRESS> dev fp1
Merci,
Bogdan

So I made a setup as described above.
I change SHM_PKT_POOL_NB_PKTS to 102400
I've added route and static arp
With OFP_PKT_TX_BURST_SIZE == 1 I am getting:
1 sendloop: 1.763 mpps
2 sendloop: 2.391 mpps
3 sendloop: 2.583 mpps
With OFP_PKT_TX_BURST_SIZE == 16 I am getting:
1 sendloop: 1.827 mpps
2 sendloop: 2.850 mpps
3 sendloop: 4.354 mpps
And this is with regular socket API (ofp_sendto() ).... and without multiple TX queues, etc.
I am using a couple of 82599ES connected through DAC on a setup with two I5 (Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz).

Hi,
My first idea would be or you to test udpecho and udp_fwd_socket examples, to check if the numbers are still low. We tested these before and we had better performance than the one you reported.
You can also set OFP_PKT_TX_BURST_SIZE to a higher value, such as 16, in case of line rate traffic and see if the numbers are getting better.
BR, /Iulia


Change not to use tempfile to avoid PermissionError in WIndows

Hello,
recipes/_common/no2/utils/ust2lab makes use of tempfile.NamedTempFile, and in windows, we can't open the file which is created by tempfile.NamedTempFile doubly[1] and this results in PermissionError.

https://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFile

This PR will fix this problem

Thanks for this PR! Looks good. CI is currently failing but let me fix it after merging this PR.


bench new-site prompts for MySQL superuser manually even with automatic configurations

Issue: bench new-site prompts for MySQL superuser credentials manually
Description
When I run bench new-site on the container configured by Codespaces, the process stops by manually asking for MySQL superuser credentials with the message:

Actual Behavior
The command halts and does not proceed beyond the prompt for MySQL superuser credentials, effectively leaving the process stuck.
This issue occurred today, even though in November the same setup executed successfully without any interruptions.

Console Message

Files

Environment Details

Operating System: Debian GNU/Linux 12 (bookworm)
Frappe Version: 15.x.x-develop

Solution  bench new-site
The issue of bench new-site interactively requesting the MySQL root password was resolved by removing manual interaction through specific script adjustments.

Implemented Solution

Repository Cloning:
The base repository was cloned to apply the necessary modifications. The changes are available at the following link:
View changes on GitHub

Script Permissions:
Ensures that the script is executable.
SCRIPT_PATH="$(realpath "$0")"
chmod +x "$SCRIPT_PATH"
echo "Permissions set for: $SCRIPT_PATH"

Automated bench new-site Execution:
Configures the root user and other necessary parameters to create the site without manual intervention.
create_site_with_root() {
  echo "Trying to create site with root user..."
  if ! bench new-site dev.localhost
  --mariadb-root-username root
  --mariadb-root-password 123
  --admin-password admin
  --db-host mariadb
  --mariadb-user-host-login-scope=%; then
    echo "Critical error: Failed to create site using root."
    exit 1
  else
    echo "Site created successfully."
  fi
}

create_site_with_root

Results

The setup process now runs seamlessly without requiring manual input for MySQL credentials.
All changes are tracked and documented in the GitHub repository linked above.


Implemented trace library based on the autogen, gax only

Implemented the veneer layer of the trace library based on the auto-generated code. This will provide the trace and span context managers and simplify the API for users who want to manually instrument their code. Sample usage in the gist: https://gist.github.com/liyanhui1228/20ac515d74e134ea39b0e63a9d0524bf

Ready for another review.

@lukesneeringer @dhermes this mostly looks good to me. I have a few outstanding questions for you two and I would like one of y'all to do a final review.

@duggelz Should be the first one, actually the order doesn't matter. As lone as we patch a list of spans to the trace API, the cloud trace console will show the trace graph according to the parent_span_id in each span.

Ready for another review.

@lukesneeringer Can I merge this to the auto-gen branch now? Or wait for the autogen code to be updated?


iOS physical device shows no SVG images, Android works

The iOS simulator works exactly as intended. However, the SVG images are not shown when loaded on Expo on a physical iOS device. It works on Android however.
I have a project where this error is shown:
https://exp.host/@fullhdpixel/groenteboer
Test it here:
https://expo.io/appetize-simulator?url=https://expo.io/@fullhdpixel/groenteboer
Usage in App
<Product source={Images.peren}/>
Here is the styled component
import styled from 'styled-components'
import normalize from '../Helpers/normalizeSize'

export const Product = styled.Image`
  flex: 1;
  width: null;
  height: ${normalize(130)}px;
  width: 100%;
`

Images.js
peren: require('../Assets/Images/Products/peren.png'),

@rahulpatel I'm experiencing the same issue, I think it is because the image is imported from another file, here is an example:
// images.js
export default {
  MY_IMAGE: require('../path_to_svg_image'),
};

// MyComponent.js
import { MY_IMAGE } from '../config/images';
// ...
<Image source={MY_IMAGE} /> // this won't work
<Image source={require('../path_to_svg_image')} /> // this will work

put <meta name="viewport" content="width=device-width, initial-scale=1">
between  in node_modules/react-native-remote-svg/SvgImage.js

put <meta name="viewport" content="width=device-width, initial-scale=1">  between  in node_modules/react-native-remote-svg/SvgImage.js

@Vatia13 For running in local we can manually add in node modules. But how could we achieve this in staging environments and production ?

@vatichild Thank you very much for this fix.
Do you plan to make a pull request with this change?


msys-2.0.dll was not found

Thank you so much for doing this!
Unfortunately, I'm not able to build/install msys on my machine either.
Could you include the DLLs, too? Or, perhaps link directly to where I could download the DLL.
Program error from emacsql-sqlite.exe:
The code excution cannot proceed because msys-2.0.dll was not found. Reinstalling the program may fix this problem.

Have you installed msys2?

Or are you talking about the compiled .exe file? sorry i am missing the context.

I compiled the executable in a different way.
This time I followed this.
It should not require msys2.dll.
The file now have different hash and length as below.
SHA256: E3589CFD5836C07971AE2EFB8137891C07AD747C0012C75ED058EA693D190502
Length: 1613868
Name: emacsql-sqlite.exe
It's working on my machine -- I replaced my executable with this new one.

E3589CFD works for me, too!
This is on a work machine that I have very little rights to do anything on, so installing libraries.
Thank you so much for figuring this out!

Thank you for confirming that the new binary works for you :)


[TF] build: update checkout for swift-driver.

apple/swift-driver does not have swift-DEVELOPMENT-SNAPSHOT-* tags, so its commit hash needs to be manually updated with every master -> tensorflow merge.

Fixes a build error due to outdated apple/swift-driver version:
+ swift-driver/Utilities/build-script-helper.py clean --package-path /Users/swiftninjas/s4tf/swi
ft-driver --build-path /Users/swiftninjas/s4tf/build/buildbot_osx/swiftdriver-macosx-x86_64 --configuration release --to
olchain /Users/swiftninjas/s4tf/swift/swift-nightly-install/Library/Developer/Toolchains/swift-tensorflow-DEVELOPMENT-20
20-09-02-a.xctoolchain/usr --ninja-bin /Users/swiftninjas/s4tf/build/buildbot_osx/ninja-build/ninja --verbose
usage: build-script-helper.py [-h] action ...
build-script-helper.py: error: argument action: invalid choice: 'clean' (choose from 'build', 'test', 'install')

Merging to unblock progress.


Not compatible with Cordova projects?

I have been using JSLint for a while in javascript projects edited with VS2013. But I am now experimenting with the  Cordova plugins for VS2013 (and later VS2015), and JSLint won't run with any of the .js files in the project. I get the error message "The directory name [project path]\mymap.jsproj is invalid". But 'mymap.jsproj' isn't a directory, it's the VS project definition file.
However if I load a .js file that's not part of the project into the same IDE, jslint runs on that OK. It also runs OK on a javascript project that isn't based on Cordova.
It's not a problem with my particular project setup; the same issue occurs with a simple 'empty' project created by VS.

Thanks for the report. I'll look into it.

@benquarmby - feel free to ping me if you have questions about the Cordova project configuration in Visual Studio. I'm a member of the Visual Studio team that works on this project type.

@jmatthiesen Thank you, I'll probably take you up on that. At this point I believe the problem is related to finding the project root directory. I'll test that theory and come back if I need any more help.

The fix is in master and will be rolled into a stable release soon. It's also in the beta release today.

Ben, that's great, many thanks. Just installed the beta and it's working fine with my Cordova project.
Regards Chris


Please create a branch in the flutter recipes

Please create a branch in the flutter recipes project using:
flutter branching commit: a0abb7e89e1b5f2b5996110b523a66e56a774eb5
branch name: flutter-2.11-candidate.7
Gardener instructions section
Use the date of the provided flutter commit to find the oldest commit in the
recipes repository whose creation date is less than or equal to the creation
date of the flutter commit. Please ensure there were no reverts after the
selected commit.
Once the commit has been identified run the following commands on a clean checkout
of the recipes folder:

git clone git checkout -b <branch name>. Branch name will look like flutter-2.8-candidate.16
git reset --hard <commit>.
git push origin <branch name>

The next step is verify the testing_ref regex for beta|stable configurations match
the new branch. Failing to do this will prevent from running postsubmit builds.
The last step in the process is to update the engine and flutter infra configurations for the release channel(only needed for new beta|stable releases). You can run the following commands
to do that:

mkdir $HOME/infra_checkout && cd $HOME/infra_checkout
git clone https://flutter.googlesource.com/infra && cd infra && git checkout -b configs
alias generate_jspb="dart $HOME/flutter_checkouts/cocoon/app_dart/bin/generate_jspb.dart"
generate_jspb <flutter|engine> <release_branch> > $HOME/infra_checkout/infra/config/generated/ci_yaml/<flutter|engine>_<beta|stable>_config.json
./config/main.star
git commit
git push origin HEAD:refs/for/main
Wait for the PR to be reviewed and submitted

\cc @itsjustkevin FYI this is the bug to create a new branch, let's get the workflow tested.

Located commit here:
git log a0abb7e89e1b5f2b5996110b523a66e56a774eb5
Creation date is:
Date:   Mon Jan 31 16:05:20 2022 -0500
Searched through recipes commits here
https://flutter.googlesource.com/recipes/+log/refs/heads/main
Found oldest commit whose creation date is less than or equal to the creation
date of the flutter commit:
https://flutter.googlesource.com/recipes/+/4b5e5592b66e7ee9f7228bb2382e83b9c48aa510
Running commands:
git checkout -b flutter-2.8-candidate.16.  (NOTE: Removed git clone prefix, that seems in error)
git reset --hard 4b5e5592b66e7ee9f7228bb2382e83b9c48aa510
git push origin flutter-2.8-candidate.16
Getting the following error:
$ git push origin flutter-2.8-candidate.16
To https://flutter.googlesource.com/recipes
 ! [rejected]          flutter-2.8-candidate.16 -> flutter-2.8-candidate.16 (non-fast-forward)
error: failed to push some refs to 'https://flutter.googlesource.com/recipes'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Those commands are part of the template. The branch name needs to be replaced with: flutter-2.11-candidate.7 and the commit needs to be replaced with a good commit from recipes/main that is contemporary to flutter/flutter/a0abb7e89e1b5f2b5996110b523a66e56a774eb5

Fixed the branch name in the commands:
git checkout -b flutter-2.11-candidate.7
git reset --hard 4b5e5592b66e7ee9f7228bb2382e83b9c48aa510
git push origin flutter-2.11-candidate.7
I need permissions to push:
! [remote rejected]   flutter-2.11-candidate.7 -> flutter-2.11-candidate.7 (prohibited by Gerrit: not permitted: create)

Trying to create new branch via UI (https://flutter-review.googlesource.com/admin/repos/recipes,branches) also, throws a permissions error.

Permissions granted.
Created the branch flutter-2.11-candidate.7 at 4b5e5592b66e7ee9f7228bb2382e83b9c48aa510 in the UI (https://flutter-review.googlesource.com/admin/repos/recipes,branches)

Manually verified that flutter-2.11-candidate.7 matches the beta branch regex here: https://flutter.googlesource.com/infra/+/refs/heads/main/config/lib/release_branches/branches.json#9

Since this is a beta release, updating the flutter and engine infra configs:
mkdir $HOME/infra_checkout && cd $HOME/infra_checkout
git clone https://flutter.googlesource.com/infra && cd infra && git checkout -b configs
alias generate_jspb="dart $HOME/flutter_checkouts/cocoon/app_dart/bin/generate_jspb.dart"
generate_jspb flutter flutter-2.11-candidate.7 > $HOME/infra_checkout/infra/config/generated/ci_yaml/flutter_beta_config.json

Some gotchas, make sure flutter/dart versions are as expected. Incorrect versions resulted in errors like:
../.pub-cache/hosted/pub.dartlang.org/github-8.5.0/lib/github.dart:1:1: Error: The specified language version is too high. The highest supported language version is 2.12.
export 'package:github/src/common.dart';
^

And when pushing the commit, if you get:
missing Change-Id in message footer
follow the instructions in the error message to install the hook and resubmit.

PR: https://flutter-review.googlesource.com/c/infra/+/26901

Would also be helpful to determine what the branch name is going to be and how to tell which type (beta, etc.) it is.

Note: once changes to ci.yaml were updated, running the process to update the engine and flutter infra configurations yielded no diffs, so the task is complete at this stage.

Just adding some more context:
We may want to refine the documentation for this kind of bugs as we needed several cherry picks to get the recipes for branch flutter-2.11-candidate.7 to a working state.
This is the list of additional cherrypicks:

https://flutter-review.googlesource.com/c/recipes/+/27040
https://flutter-review.googlesource.com/c/recipes/+/27081
https://flutter-review.googlesource.com/c/recipes/+/27100
https://flutter-review.googlesource.com/c/recipes/+/27101
https://flutter-review.googlesource.com/c/recipes/+/27102

AI:

Modify the docs to accept the target commit and the target branch as parameters


native bindings

https://github.com/brianc/node-postgres#native-bindings
having issues on linux:
$ npm i pg-native -S
-
><EMAIL_ADDRESS>install /home/lms/src/Level/postgresdown/node_modules/pg-native/node_modules/libpq
> node-gyp rebuild

find: `/usr/pg*': No such file or directory
gyp: Call to 'which pg_config || find /usr/bin /usr/local/bin /usr/pg* /opt -executable -name pg
_config -print -quit' returned exit status 1. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-g
yp/lib/configure.js:355:16)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.2.0-27-generic
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bi
n/node-gyp.js" "rebuild"
gyp ERR! cwd /home/lms/src/Level/postgresdown/node_modules/pg-native/node_modules/libpq
gyp ERR! node -v v4.3.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm ERR! Linux 4.2.0-27-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "i" "pg-native" "-S"
npm ERR! node v4.3.1
npm ERR! npm  v2.14.12
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the libpq package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls libpq
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/lms/src/Level/postgresdown/npm-debug.log

Apparently we can't use pg-native yet because it doesn't have support for cursors. It would also be nice to have prebuilt binaries to ease the installation process, see https://github.com/brianc/node-pg-native/issues/39

FWIW I've got a plan to move away from cursors completely -- pg's really stingy w/ its db connections, and cursors eat one, or force you to do some otherwise expensive stuff if you take the WITH HOLD approach. This ought to allow us to move to pg-native at some point.


docs: decision record about project structure review

What this PR changes/adds
Add decision record about project structure review
Why it does that
To keep track of this decision
Further notes

Linked Issue(s)
Closes #1807
Checklist

[ ] added appropriate tests?
[ ] performed checkstyle check locally?
[ ] added/updated copyright headers?
[ ] documented public classes/methods?
[ ] added/updated relevant documentation?
[x] assigned appropriate label? (exclude from changelog with label no-changelog)
[x] formatted title correctly? (take a look at the CONTRIBUTING and styleguide for details)

+1 from me

+1


Auto corrected by following Lint Ruby Layout/HeredocIndentation

Auto corrected by following Lint Ruby Layout/HeredocIndentation
Click here to configure it on awesomecode.io

Coverage remained the same at 77.536% when pulling 560884144e7bab014a033063882f3f96932c2190 on awesomecode-lint-ruby-layout-heredocindentation-48715 into 2bbda3457754aeaff15ffd1785e4494c6b5eeb10 on master.


fix(after): check parentNode is not null

Hi Angular team,
I have been through an error raised by JQLite, lastly, using ngInclude in a uiView node (from ui-router).
Version The error is raised in my ionic project (angular 1.4.3) but also with the last version of Angular 1.4.8 (at the time being).
Browser I could reproduce the case with both Chrome and Firefox.
System Linux (Debian 8.2), Windows (8.1 and 10)
Reproducable Always
TypeError: Cannot read property 'insertBefore' of null
    at forEach.after (https://code.angularjs.org/1.4.8/angular.js:3498:13)
    at Object.JQLite.(anonymous function) [as after] (https://code.angularjs.org/1.4.8/angular.js:3582:17)
    at domInsert (https://code.angularjs.org/1.4.8/angular.js:5095:35)
    at Object.enter (https://code.angularjs.org/1.4.8/angular.js:5258:9)
    at https://code.angularjs.org/1.4.8/angular.js:24404:26
    at publicLinkFn (https://code.angularjs.org/1.4.8/angular.js:7610:29)
    at boundTranscludeFn (https://code.angularjs.org/1.4.8/angular.js:7749:16)
    at controllersBoundTransclude (https://code.angularjs.org/1.4.8/angular.js:8362:18)
    at https://code.angularjs.org/1.4.8/angular.js:24402:27
    at processQueue (https://code.angularjs.org/1.4.8/angular.js:14792:28)

Demo Here is a plunker reproducing the issue: http://plnkr.co/jLspFZOTvkevx25KgxEp
And the case is as follows:
Using a ngInclude node in a uiView node in order to display a default content.

Ther error is raised (in Angular's JQLite) when navigating to a route displaying an other content for the uiView.

I signed it!

Since this bug happens only in ui-router (or does it happen in ng-view too?) you should probably report this to ui-router, too. In any case we also need a test for this behavior.
I'm also not to happy to "fix" this in the after method itself. I suspect there must be something else going on before it gets there.

I'm gonna close this as there are no tests and we don't know where this bug is actually coming from (especially since we don't know if it is even caused by angular core)


[BUG] K3d not able resolve dns

What did you do?
k3d create
Logs
docker logs c -f
E1112 01:13:16.354329       7 kuberuntime_sandbox.go:68] CreatePodSandbox for pod "helm-install-traefik-pp2cl_kube-system(af91145b-441d-41ba-9ef4-7eab9950754a)" failed: rpc error: code = Unknown desc = failed to get sandbox image "k8s.gcr.io/pause:3.1": failed to pull image "k8s.gcr.io/pause:3.1": failed to pull and unpack image "k8s.gcr.io/pause:3.1": failed to resolve reference "k8s.gcr.io/pause:3.1": failed to do request: Head https://k8s.gcr.io/v2/pause/manifests/3.1: dial tcp: lookup k8s.gcr.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:37126-><IP_ADDRESS>:53: i/o timeout
E1112 01:13:16.354347       7 kuberuntime_manager.go:710] createPodSandbox for pod "helm-install-traefik-pp2cl_kube-system(af91145b-441d-41ba-9ef4-7eab9950754a)" failed: rpc error: code = Unknown desc = failed to get sandbox image "k8s.gcr.io/pause:3.1": failed to pull image "k8s.gcr.io/pause:3.1": failed to pull and unpack image "k8s.gcr.io/pause:3.1": failed to resolve reference "k8s.gcr.io/pause:3.1": failed to do request: Head https://k8s.gcr.io/v2/pause/manifests/3.1: dial tcp: lookup k8s.gcr.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:37126-><IP_ADDRESS>:53: i/o timeout
E1112 01:13:16.354411       7 pod_workers.go:191] Error syncing pod af91145b-441d-41ba-9ef4-7eab9950754a ("helm-install-traefik-pp2cl_kube-system(af91145b-441d-41ba-9ef4-7eab9950754a)"), skipping: failed to "CreatePodSandbox" for "helm-install-traefik-pp2cl_kube-system(af91145b-441d-41ba-9ef4-7eab9950754a)" with CreatePodSandboxError: "CreatePodSandbox for pod "helm-install-traefik-pp2cl_kube-system(af91145b-441d-41ba-9ef4-7eab9950754a)" failed: rpc error: code = Unknown desc = failed to get sandbox image "k8s.gcr.io/pause:3.1": failed to pull image "k8s.gcr.io/pause:3.1": failed to pull and unpack image "k8s.gcr.io/pause:3.1": failed to resolve reference "k8s.gcr.io/pause:3.1": failed to do request: Head https://k8s.gcr.io/v2/pause/manifests/3.1: dial tcp: lookup k8s.gcr.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:37126-><IP_ADDRESS>:53: i/o timeout"
What did you expect to happen?
get a k3d single node cluster
Which OS & Architecture?
↑6% ❯ uname -a
Linux work 5.3.10-arch1-1 #1 SMP PREEMPT Sun, 10 Nov 2019 11:29:38 +0000 x86_64 GNU/Linux

Which version of k3d?
↑8% ❯ k3d --version
k3d version v1.3.4

Which version of docker?
↑8% ❯ docker --version
Docker version 19.03.4-ce, build 9013bf583a

Hi @rjshrjndrn , thanks for opening this issue. Can you please exec into the k3d node container (docker exec -it  shand see if you can pull the image manually viactr image pull k8s.gcr.io/pause:3.1. Then please check if you can connect to it / lookup the domain name and how name lookups work for you in there (e.g. cat /etc/resolv.confornslookup k8s.gcr.io`).
I cannot reproduce this issue with k3d  version v1.3.4, Docker version 19.03.3, build a872fc2f86 on Linux trv3181 5.3.0-19-generic #20-Ubuntu SMP Fri Oct 18 09:04:39 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux, so I guess it's something with your specific environment. You're on Arch Linux, right?

I got the issue. I had one entry in /etc/systemd/network/en0.networking

I'm running into the same problem, but I don't have any files in /etc/systemd/network/.
When I exec into k3d-k3s-default-server, /etc/resolv.conf has the line nameserver <IP_ADDRESS>. That line isn't in my host's resolv.conf, so I'm guessing it's written there by k3d.
If I change that line to nameserver <IP_ADDRESS>, images are successfully pulled from docker.io.
But I'm not sure if I'm messing anything up by changing that line. I haven't found any documentation on DNS in k3d. Can anyone help me understand how DNS is configured and why my configuration isn't working?

@mac9416 <IP_ADDRESS> is docker's resolver.

@mac9416

When I exec into k3d-k3s-default-server, /etc/resolv.conf has the line nameserver <IP_ADDRESS>. That line isn't in my host's resolv.conf, so I'm guessing it's written there by k3d.

Nope, k3d does not manage any networking apart from creating a separate docker network for each cluster that you create (Or attaches to existing networks). But that also does not affect networking inside the cluster (that's k3s' part).
As @rjshrjndrn said correctly, <IP_ADDRESS> is docker's internal resolver which will try to resolve to docker service VIPs and forwards request to the default DNS if it can't. See https://success.docker.com/article/ucp-service-discovery-swarm#servicediscoverywithdns

If I change that line to nameserver <IP_ADDRESS>, images are successfully pulled from docker.io.
This can lead to other failures, since now the containers (k3d nodes) cannot resolve other docker service names. E.g. nodes may loose connection to each other.

But I'm not sure if I'm messing anything up by changing that line. I haven't found any documentation on DNS in k3d. Can anyone help me understand how DNS is configured and why my configuration isn't working?

There are 3 levels of DNS here:
1.inside k3s (Kubernetes Level): CoreDNS (configurable deployment, where you can also specify upstream nameservers)
2. inside k3d nodes (Container Level): <IP_ADDRESS> (Docker Resolver) tries to resolve docker service names (in Docker Engine DNS) and forwards requests if it can't
3. your host (whatever you specify in your resolv.conf): this may be different per host system
-> I don't know if there's another layer on Docker for Desktop (the VM)
But nothing of this is influenced by k3d itself.


[Bug] Endless loop when logging public or private key with null value

Describe the bug
When you call toString on a public or private key which _key or _keyBytes are null there is an endless loop from the properties calling each other.
To Reproduce
PublicKey pubKey = new PublicKey("");
pubKey.Key = null;
Debug.Log(pubKey);
Expected behavior
There is no endless loop but instead returned null.
Additional context
Ill make a pr for a fix

Closing as fixed in #13


Fixing double disconnect invocation

Proposed changes

FIxing a bug in next.js example that was caused by double invocation of disconnect command

on @yigiterdev to review & publish

Thank you @aorumbayev! 🎉 I will publish this.


Support binding last result in airb to _

In irb the last result is bound to _, e.g.
irb(main):001:0> 4 + 2
=> 6
irb(main):002:0> _
=> 6

This behavior is currently not implemented in airb

@lopopolo suspect I'm overlooking the right affordance to do this. Given the evaluation result https://github.com/artichoke/artichoke/blob/858b686ed93fa3b23b4e65d0dc64d1ea6e591cb6/src/repl.rs#L253-L261
what's the best way to write that into _? Not convinced some flavor of
let evaluation_result = interp.eval(buf.as_bytes());
// ...
interp.eval(&format("_ = {}",  ??))?

is the right approach, but not spotting the alternative. Is there a more natural place in interp's state maybe to set it?

Thanks for the report @stuarth. Artichoke does not currently support defining local variables in the current VM stack frame.
To add support for this, a trait for getting and setting locals would need to be added to artichoke-core. Implementing it in artichoke-backend will require poking at the mruby internals in ways I'm not familiar with.


Part of the text cannot be recognized

Part of the text in this picture is unrecognizable.

blocks

result

The red part is the missing text

You did not provide:

version info
OS
Commad you used
source of the traineddata

@amitdo sorry，I forgot them, these are infomations.
version info：tesseract 4.1
OS: ubuntu 18.04.5
Commad you used:   tesseract  test0510.png  input0510  -l  vie
source of the traineddat:  vie

What page segmentation mode are you using? This was happening to me until I used -psm 6.


asn1 length

Is there any way to get the asn1 length? It seems to be available in the DerElementHeader

Hi,
The length is not stored (because the header is not kept after reading fields) currently. What is your use case ? Copying it or storing the header would not be difficult, but it would require to change the API

I developed a method to infer the size, so it is not needed. However, how I would access the content (vec) from the DerObject below?
DerObject { class: 0, structured: 0, tag: 2, content: Integer([0, 1, 2 ,3 4, 5]) }

It depends if you need to get the integer, or want to access the bytes.
The integer can be obtained using the as_u32() method (but will return an error if the integer is greater than 2^32) or as_bigint()
If you need to access the raw vector, you need to match the object content, either using a match or a let if:
if let DerObjectContent::Sequence(ref v) = der_obj.content {
  // use v
}

or
match der_obj.content {
  DerObjectContent::Integer(ref v) => { // use v
  },
  _ => (),
}

Thank your for the explanation


Support for literate Haskell

Add support for using arbitrary preprocessor, and parsing stock .lhs files.

Help is needed, right? I can provide it.

It should be easy to support GHC_OPTION -pgmL


Cannot mount the persistent data volume on single node swarm with replicated service

File: docker-for-azure/persistent-data-volumes.md
Please, do specify that in case of a single node swarm (i.e. in a development phase), it is not possible to mount the the same persistent data volume on replicated services. Only one replica will be able to mount the volume, while the other will fail to be deployed with the following error:
"VolumeDriver.Mount: mount failed: exit status 32 output="mount error(16): Resource busy\nRefer to the mount.cifs(8) manual page (e.g. man mount.cifs)\nmount: mounting //XXXXXX.file.core.windows.net/uploaded-files on /mnt/cloudstor/uploaded-files failed: Resource busy\n""

Closing this ticket due to its age, and the impending refactor. If you think this is in error, feel free to reopen. Thanks!


ModuleNotFoundError: No module named 'tgx.io.read_files'! Can you please upload this module?

Hi,
Thanks for your interest in our work. This project is undergoing active development thus syntax and usage might change until a stable version is reached. Please see the starting example to start.
Best,
Andy

Thanks, Huang! I hope the stable version will be released soon. Thanks for your effort and contribution.


PLT-3392: Print list of commands when marlowe-cli is invoked without a command

There is an option for this in the optparse-applicative library.

Pre-submit checklist:

Branch

[ ] Tests are provided (if possible)
[ ] Test report is updated (if relevant)
[x] Commit sequence broadly makes sense
[x] Key commits have useful messages
[x] Relevant tickets are mentioned in commit messages
[ ] Formatting, PNG optimization, etc. are updated

PR

[x] Self-reviewed the diff
[x] Useful pull request description

Review required
[ ] Substantial changes to code, test, or documentation
[ ] Change made to Marlowe validator (@bwbush and @palas must be included as reviewers)
Review not required
[ ] Minor changes to non-critical code, documentation, nix derivations, configuration files, or scripts
[ ] Formatting, spelling, grammar, or reorganization

[ ] Reviewer requested

Note that marlowe-cli format is valid without any arguments (reading from stdin, writing to stdout) and therefore does not display the help text


Update m2s.jp.txt

Typo

Heh, ironically, the macro is straight from Game8, so the typo is in their macro. :)


"cannot use a string pattern on a bytes-like object" with -O encoding

(Original issue 1438 created by cybershadow on 2018-04-11T20:20:45.377846+00:00)
$ echo foo | pygmentize -v -O encoding=utf8

*****************************************************************
An unhandled exception occurred while highlighting.
Please report the whole traceback to the issue tracker at
<https://bitbucket.org/birkenfeld/pygments-main/issues>.
*****************************************************************

Traceback (most recent call last):
  File "/usr/sbin/pygmentize", line 11, in <module>
    load_entry_point('Pygments', 'console_scripts', 'pygmentize')()
  File "/usr/lib/python3.6/site-packages/pygments/cmdline.py", line 543, in main
    return main_inner(popts, args, usage)
  File "/usr/lib/python3.6/site-packages/pygments/cmdline.py", line 408, in main_inner
    lexer = guess_lexer(code, **parsed_opts)
  File "/usr/lib/python3.6/site-packages/pygments/lexers/__init__.py", line 292, in guess_lexer
    ft = get_filetype_from_buffer(_text)
  File "/usr/lib/python3.6/site-packages/pygments/modeline.py", line 35, in get_filetype_from_buffer
    ret = get_filetype_from_line(l)
  File "/usr/lib/python3.6/site-packages/pygments/modeline.py", line 24, in get_filetype_from_line
    m = modeline_re.search(l)
TypeError: cannot use a string pattern on a bytes-like object

(Original issue 1438 last updated on 2019-05-28T05:03:43.608617+00:00)
(Issue automaticaly closed due to status in Bitbucket: resolved)

(Original comment by cybershadow on 2019-05-25T18:04:37.982418+00:00)
Still a problem in 2.4.0.

(Original comment by Anteru on 2019-05-26T19:05:24.936260+00:00)
$ echo foo | pygmentize -v -O encoding=utf8

*****************************************************************
An unhandled exception occurred while highlighting.
Please report the whole traceback to the issue tracker at
<https://bitbucket.org/birkenfeld/pygments-main/issues>.
*****************************************************************

Traceback (most recent call last):
  File "/usr/sbin/pygmentize", line 11, in <module>
    load_entry_point('Pygments', 'console_scripts', 'pygmentize')()
  File "/usr/lib/python3.6/site-packages/pygments/cmdline.py", line 543, in main
    return main_inner(popts, args, usage)
  File "/usr/lib/python3.6/site-packages/pygments/cmdline.py", line 408, in main_inner
    lexer = guess_lexer(code, **parsed_opts)
  File "/usr/lib/python3.6/site-packages/pygments/lexers/__init__.py", line 292, in guess_lexer
    ft = get_filetype_from_buffer(_text)
  File "/usr/lib/python3.6/site-packages/pygments/modeline.py", line 35, in get_filetype_from_buffer
    ret = get_filetype_from_line(l)
  File "/usr/lib/python3.6/site-packages/pygments/modeline.py", line 24, in get_filetype_from_line
    m = modeline_re.search(l)
TypeError: cannot use a string pattern on a bytes-like object

(Original comment by birkenfeld on 2019-05-27T05:33:26.247981+00:00)
Warrants a patch release?

(Original comment by Anteru on 2019-05-27T06:06:58.002120+00:00)
Sounds like it, too bad I just released 2.4.1. If you want to get a 2.4.2 out of the door this week, go for it :slight_smile:

(Original comment by birkenfeld on 2019-05-28T04:39:48.858604+00:00)
Properly decode text in guess_lexer if necessary.
fixes #1438
→ <<cset 76b93403fef7>>

(Original comment by birkenfeld on 2019-05-28T05:03:43.590642+00:00)
2.4.2 is released.


Still incomplete?

tcpdump on the target during a DevOps deploy revealed src IP <IP_ADDRESS>.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: dc5a4cfa-aa84-9f0f-55f4-71ec4861c070
Version Independent ID: d621620a-c924-03b1-8b43-f99c33e58bb8
Content: Add IP addresses and URLs to allow list - Azure DevOps
Content Source: docs/organizations/security/allow-list-ip-url.md
Product: devops
Technology: devops-whitepapers
GitHub Login: @chcomley
Microsoft Alias: jominana

By "Still incomplete", are you referring to !5460?
If so, https://docs.microsoft.com/en-us/azure/devops/organizations/security/allow-list-ip-url?view=azure-devops currently says:

If you need to connect to Git repositories on Azure DevOps with SSH, you need to allow requests to port 22 for the following:
ssh.dev.azure.com
ssh.visualstudio.com
All IP addresses in the "name": "AzureCloud" section of this file (updated weekly): Azure IP ranges and Service Tags - Public Cloud.

The "AzureCloud" section of the linked file includes "<IP_ADDRESS>/16".  That block includes all addresses from <IP_ADDRESS>-<IP_ADDRESS>., which includes the address you mentioned (<IP_ADDRESS>).

Thank you for the response, and I probably should have been more clear about my context. It is not connecting to Git repos on DevOps with SSH, but rather using the "Copy files over SSH" DevOps deploy task. Only after I temporarily allowed "any" and captured the target's traffic during the SSH deploy (which finally succeeded) did I identify the source as <IP_ADDRESS>.

Your asking about the IP address ranges for Microsoft-hosted Windows and Linux Pipelines agents, right 🤞?  If so, that's documented in the "Agent IP ranges" section of the "Microsoft-hosted agents" page:
https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops#agent-ip-ranges
Although that page could be a bit clearer that "name": "AzureCloud.*" (e.g. "name": "AzureCloud.eastus") sections are ones you need to use.
Note that in practice, the IP address ranges for all hosted Pipelines agents matches the range for SSH Git access, but for hosted Pipelines agents.  The only difference is that for hosted Pipelines agents, you can narrow down the ranges by geography based on where your account is hosted.
@chcomley should we add a section right above the "Hosted Mac agents" section, called "Hosted Windows and Linux agents", that links to "Agent IP ranges" section of the "Microsoft-hosted agents" page?  That way all firewall related stuff would be discoverable from a single page.

@congyiwu Yes, and now things are coming into focus. At https://docs.microsoft.com/en-us/azure/devops/organizations/security/allow-list-ip-url?view=azure-devops, I read past the “…connectivity from a user’s machine to Azure DevOps” (outbound) in the second paragraph and assumed the ranges under “Azure DevOps IP addresses” were inbound for hosted agent access to the deploy target (my bad and it did seem strange that there would be relatively few IPs if that was the case…). Regardless, personally I agree with your suggestion about adding https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops#agent-ip-ranges to the doc and for the reason you provided.


Add support for Palm, Claude-2, Llama2, CodeLlama (100+LLMs)

This PR adds support for the above mentioned LLMs using LiteLLM https://github.com/BerriAI/litellm/
Example
from litellm import completion

## set ENV variables
os.environ["OPENAI_API_KEY"] = "openai key"
os.environ["COHERE_API_KEY"] = "cohere key"

messages = [{ "content": "Hello, how are you?","role": "user"}]

# openai call
response = completion(model="gpt-3.5-turbo", messages=messages)

# cohere call
response = completion("command-nightly", messages)

# anthropic call
response = completion(model="claude-instant-1", messages=messages)

addressing: https://github.com/grumpyp/aixplora/issues/128

@grumpyp can you take a look at this pr when possible thanks !

Thanks for the contribution. Would you also implement it from the frontend side? Does this implementation download the LLMs to your machine?
If yes, did you have a look how the other LLMs currently would be stored? So it would make sense to do it in the same way :)
Thx!

can we address the front end in a separate pr ?
this does not download any llms to your machine

Why should we seperate it in another PR?
Ok as far as I understand it just uses the LLMs provided by 3rd party API's?
Thats fine, as long as it is compatible with our current implementation.

@grumpyp
re: provider list,
yes here are the docs - https://docs.litellm.ai/docs/providers
via code:
import litellm

print(litellm.provider_list)

@grumpyp
re: provider list,
yes here are the docs - https://docs.litellm.ai/docs/providers
via code:
import litellm

print(litellm.provider_list)

Feel free to test everything.
If it doesn't break, I'll be happy to merge it


go/types: export a function for representability

Export something like the representableConst function for testing whether a constant.Value is representable by a type.
My use case: I'm writing an API compatibility checker, and I want to report whether a changed constant value can still be used with all the types that it was previously.

@jba I presume you meant this for go/types?
/cc @griesemer

Yes, sorry, go/types. I edited the issue title.
I don't see how those functions could help, since they both take only types.
const c1 = 1 and const c2 = -1 have the same type, so asking if that type is assignable to uint8 must give the same answer for both. But var u uint8 = c1 compiles while var u uint8 = c2 doesn't.
I haven't looked at the std lib checker yet. I will.

Ah, yes, I forgot that the exported AssignableTo doesn't take the value of a constant into account (the internal version operand.assignableTo does). Fair enough, seems like a reasonable request. Is this urgent (for 1.12)?

Not urgent.

I no longer need this. Closing the issue, since there are no other requests.


Errorn when calculating doublet scores

Hi,
Thanks for this nice package.
I am using scrublet in a conda virtual environment. And I got the following error messages in calculating doublet score step
doublet_scores, predicted_doublets = scrub.scrub_doublets(min_counts=2,
                                                          min_cells=3,
                                                          min_gene_variability_pctl=85,
                                                          n_prin_comps=30)
Preprocessing...
Simulating doublets...
Embedding transcriptomes using PCA...
Calculating doublet scores...
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-15-9b9b9e190337> in <module>
----> 1 doublet_scores, predicted_doublets = scrub.scrub_doublets(min_counts=2,
      2                                                           min_cells=3,
      3                                                           min_gene_variability_pctl=85,
      4                                                           n_prin_comps=30)

~/software/anaconda3/envs/scrublet/lib/python3.8/site-packages/scrublet/scrublet.py in scrub_doublets(self, synthetic_doublet_umi_subsampling, use_approx_neighbors, distance_metric, get_doublet_neighbor_parents, min_counts, min_cells, min_gene_variability_pctl, log_transform, mean_center, normalize_variance, n_prin_comps, verbose)
    236
    237         print_optional('Calculating doublet scores...', verbose)
--> 238         self.calculate_doublet_scores(
    239             use_approx_neighbors=use_approx_neighbors,
    240             distance_metric=distance_metric,

~/software/anaconda3/envs/scrublet/lib/python3.8/site-packages/scrublet/scrublet.py in calculate_doublet_scores(self, use_approx_neighbors, distance_metric, get_doublet_neighbor_parents)
    346         '''
    347
--> 348         self._nearest_neighbor_classifier(
    349             k=self.n_neighbors,
    350             exp_doub_rate=self.expected_doublet_rate,

~/software/anaconda3/envs/scrublet/lib/python3.8/site-packages/scrublet/scrublet.py in _nearest_neighbor_classifier(self, k, use_approx_nn, distance_metric, exp_doub_rate, stdev_doub_rate, get_neighbor_parents)
    383         # Bayesian
    384         q=(nd+1)/(N+2)
--> 385         Ld = q*rho/r/(1-rho-q*(1-rho-rho/r))
    386
    387         se_q = np.sqrt(q*(1-q)/(N+3))

TypeError: unsupported operand type(s) for *: 'float' and 'function'

Am I doing anything wrong?
Many thanks!

Hi @YiweiNiu
Can you please give me some additional context? Are you following the PBMC example code (https://github.com/swolock/scrublet/blob/master/examples/scrublet_basics.ipynb), or are you testing this on your own data?

Sorry, I found it was my ignorance. I did not input the expected_doublet_rate when initializing the Scrublet object.


Baro spikes in SITL

For some reason the baro data in SITL (gazebo) is very spiky.

This causes the ekf height checks to fail. @JohannesBrand FYI

They're present in the pressure coming straight from the baro simulator driver, so it must be from gazebo.
https://github.com/PX4/sitl_gazebo/blob/10b0597cd20def97074c6c8eade580a7f294e41d/src/gazebo_mavlink_interface.cpp#L509-L516

@priseborough could you review the gazebo barometer noise?
https://github.com/PX4/sitl_gazebo/blob/10b0597cd20def97074c6c8eade580a7f294e41d/src/gazebo_mavlink_interface.cpp#L518-L532

This is also having consequences on LPE: https://github.com/PX4/Firmware/issues/9713

rand() returns a integer and x1 and x2 are supposed to be from a uniform random distribution between +- 1.0 so so lines  522 and 523 should be
 x1 = 2.0 * ((double)rand() / (double)RAND_MAX) - 1.0;
 x2 = 2.0 * ((double)rand() / (double)RAND_MAX) - 1.0;

If we had ranf() available to us, that would be a more efficient way of generating x1 and x2.
Use of Gaussian/Normal distributions is common in robotics and flight vehicle simulation, so support for this in the math library would be appropriate.

Can you send a PR? Thanks!

Fixed here: https://github.com/Dronecode/sitl_gazebo/pull/43


drivers: timer: implementation cleanups

This PR started as a discussion to remove sys_clock* weak implementations, but I've also taken the opportunity to clean up a bit of other areas, in particular:

Kconfig split
Move init to every driver (no need for weak init/PM functions)
Improve usage of sys_clock_disable() API
Improve usage of SysTick sys_clock_isr() install

A couple of weak functions remain sys_clock_elapsed and sys_clock_set_timeout. By looking at the implementations and docs, I think we can also do better in that area, but I may be missing things:

Simplify sys_clock_elapsed() (provide a default that returns 0 if non-tickless?)
Simplify sys_clock_set_timeout() (no-op if non-tickless?)

LGTM - I think the main purpose of weak global functions is to have a sane fallback when a more specific implementation does not exist. They also override at link time. It's possible to do the same thing at runtime but that does come with a small footprint penalty.
If the system clock is a singleton device such that an implementation must exist and no other implementation may exist, then I think the approach here makes sense.

Can I be a bit cranky here? This obviously isn't a big deal (the weak linkage was originally introduced to support a bunch of drivers being ported over from a previous incarnation of the driver interface), but it seems like this is happening just to paper over a bug with weak linkage on OS X? Maybe that's something we should pay more attention to? This isn't the only spot in Zephyr where we're using default linkage and it probably won't be the last.
Mostly seems like this is a slightly kludgey workaround to a problem whose root cause we really want to fix instead.

I really saw the OS X issue after opening this proposal, so the main purpose was not to fix that problem but discuss if weak symbols make sense in this case.

Can I be a bit cranky here? This obviously isn't a big deal (the weak linkage was originally introduced to support a bunch of drivers being ported over from a previous incarnation of the driver interface), but it seems like this is happening just to paper over a bug with weak linkage on OS X? Maybe that's something we should pay more attention to? This isn't the only spot in Zephyr where we're using default linkage and it probably won't be the last.
Mostly seems like this is a slightly kludgey workaround to a problem whose root cause we really want to fix instead.

I agree for the most part.
With macOS, weak linking (in the ELF sense) simply was never supported - it's not that it's buggy. macOS supports a different weak construct to do with frameworks that is not exactly the same.
I've experienced issues with weak linkage and various vendor toolchains - e.g. IAR (it's been a while, thank the skies). Default link ordering makes weak linking fragile as well.
Beyond all of that, the main reason I'm not a fan of weak linking is because it's not part of ISO C, which is (at least in theory) mostly portable. I would say that Kconfig could probably be used to solve a more general problem that weak linking solves, which is also a build-time solution.

@cfriedt @carlescufi can you re-review?

It seems like a number of large blocks of C code were moved. Was that necessary in every case? Would converting to static work while keeping the code in its original place?

I did that since init function is usually placed at the bottom, but I can drop that change if preferred.

@nashif @carlescufi This PR should now be ready, the 2 test failures are due to https://github.com/zephyrproject-rtos/zephyr/issues/39978

@andyross can you please review this one?


Refactor the windows side too

This builds on top of #10 and adds support for windows behind a common user interface.
Though the code should be the same, as I don't have a windows machine I have not been able to test it. @vmitchell85 is this something you can help with?
merge order

[ ] #10
this PR

@spmaniato FYI


why not use enhance_mosaic in training COO or DOTA?

Hi, thanks for share your azmazing work.
In train_coco.yaml and train_dota.yaml, I notice that the setting of enhance_mosaic is set to False.
According to your paper this method could effectively increases the image richness. Could you please tell me why don't you use enhance_mosaic?
Thanks!

It works well when the number of labels is not enough in single image, but doesn't when it is already enough. It surely can be used when training models in coco dataset, but need some extra tricks to ensure its effect, so we chose to set it disabled for others to use.
Currently our paper and source code are not the final version actually, we will still update them serveral times before next year.


Showcase: Added SurveyEase

Thank you for your contribution to the IC Developer Portal.
Before submitting your Pull Request, please make sure that:

[X] You have updated the .github/CODEOWNERS file according to your changes.
[X] You have registered new documents to /sidebars.js if any.

Hello @awazgyawali Can you please advise if SurveyEase is live yet?

Dear @awazgyawali,
In order to potentially merge your code in this open-source repository and therefore proceed with your contribution, we need to have your approval on DFINITY's CLA.
If you decide to agree with it, please visit this issue and read the instructions there. Once you have signed it, re-trigger the workflow on this PR to see if your code can be merged.
— The DFINITY Foundation

Hello @awazgyawali Can you please advise if SurveyEase is live yet?

No, we are still in the alpha state. We have a lot more to build to be able to take the product to market.

Hello @awazgyawali Can you please advise if SurveyEase is live yet?

No, we are still in the alpha state. We have a lot more to build to be able to take the product to market.

Could we wait until the marketing page is built out before we add to the ecosystem page?

@awazgyawali Can you please create a new PR once you have launched and updated your landing page?


Add "UserID-Enable" to type=zone

Is your feature request related to a problem?
In the Zone util, there is currently no action to enable User ID on the zones which match a filter.
Describe the solution you'd like
Add an action called UserID-Enable (and the inverse of UserID-Disable) to enable or disable user ID on zones in a config.
Describe alternatives you've considered
Alternatives would be using Expedition to do this, but it can be a good quick alternative to use a one liner to update multiple zones at once.
Additional context
One of my team members has a migration that has many contexts (>20), and each context has 7 or 8 interfaces/zones. It would make updating the zones to enable user ID easier.

implemented with PR: #642


Expected array not string.

This should expect a string as the key is already there "label" so it doesn't make much sense to write it like so when you build the query.
$options = [ 'label' = > ['label'=>'Mylabel'] ];

@drakakisgeo Thank you for finding this. I've added your commit and added backwards compatibility so we don't break any existing implementations.


ADD Update font-awesome-4.7.0

Please review this PR. Font-awesome has been updated to version 4.7.0. (Issue: #3329)
Thanks!

Automated message from Dropbox CLA bot
@khantaalaman, it looks like you've already signed the Dropbox CLA. Thanks!

I am extremely sorry that my PR for another bit-size issue got along with the Font Awesome Update. I have created another PR for the aforementioned issue.
This mistake was not intentional by far. I am new to contributing for open source. Please let me know if I need to submit a PR again for Font Awesome update.
Thanks!


No ability to change proxy on per request basis

Guzzle version(s) affected:
6.3.0
Description
Guzzle reuses old curl handler. Code responsible for this located in CurlFactory.
So if you send several requests providing proxy address as a param, like:
$httpClient->send($request, ['proxy' => '<proxy_endpoint1>');
$httpClient->send($request2, ['proxy' => '<proxy_endpoint2>');
$httpClient->send($request3, ['proxy' => '<proxy_endpoint3>');
All three requests will be made via <proxy_endpoint1>

How to reproduce
$client = new GuzzleHttp\Client();
$res1 = $client->request('GET', 'https://httpbin.org/ip', ['proxy' => '<IP_ADDRESS>:3128']);
$res2 = $client->request('GET', 'https://httpbin.org/ip', ['proxy' => '<IP_ADDRESS>:8080']);
$res3 = $client->request('GET', 'https://httpbin.org/ip', ['proxy' => '<IP_ADDRESS>:8080']);
echo $res1->getBody();
echo $res2->getBody();
echo $res3->getBody();

Expected output:
{
"origin": "<IP_ADDRESS>"
}
{
"origin": "<IP_ADDRESS>"
}
{
"origin": "<IP_ADDRESS>"
}

Actual:
{
"origin": "<IP_ADDRESS>"
}
{
"origin": "<IP_ADDRESS>"
}
{
"origin": "<IP_ADDRESS>"
}

Possible Solution
Dirty hack to force it works:
in CurlFactory::create replace
        $easy->handle = $this->handles
            ? array_pop($this->handles)
            : curl_init();

with
        $easy->handle = curl_init();

Additional
Probably this is curl bug, something similar was described here https://github.com/curl/curl/issues/648
So if this issue is caused by curl bug then I think as work around you can compare current proxy with the last one and if they are equal then use new connection $easy->handle = curl_init();

@dzentota, could you tell your PHP and cURL versions?
Because for me your example works just fine, I get different results for each proxy, as expected (PHP 7.2.12, cURL 7.63.0).

PHP 7.1.22 (cli) (built: Sep 15 2018 03:54:08) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.22, Copyright (c) 1999-2018, by Zend Technologies
    with blackfire v1.23.0~linux-x64-non_zts71, https://blackfire.io, by Blackfire

curl 7.38.0 (x86_64-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP

I think you can reproduce my env by using Docker.
In docker-compose.yml I have:

web:
image: thecodingmachine/php:7.1-v1-apache-node8
hostname: 'sugarcrm'
environment:
PHP_INI_ERROR_REPORTING: E_ERROR
MYSQL_NAME: 'mysql'
MYSQL_PORT: 'tcp://mysql:3306'
APACHE_EXTENSION_REWRITE: 1
APACHE_EXTENSION_HEADERS: 1
APACHE_EXTENSION_EXPIRES: 1
APACHE_LOG_DIR: '/var/log/apache2'
PHP_EXTENSIONS: bcmath blackfire calendar dba exif gd gettext gmp imap intl ldap mcrypt memcached mongodb sockets sysvmsg sysvsem sysvshm pcntl tidy xmlrpc xsl
PHP_IDE_CONFIG: "serverName=Docker"
depends_on:
- mongo
ports:
- 8585:80
volumes:
- .:/var/www/html:rw


Build to exe. Using without Python.

Help me please. I want to use this wonderful proxy on the Windows platform, without the Python interpreter installed. How can I build it into a console application with PyInstaller? Or maybe you have already assembled?

Oh, sorry. I found this solution in description.


Securing Open Source Software Act

URL
https://www.hsgac.senate.gov/media/majority-media/peters-and-portman-introduce-bipartisan-legislation-to-help-secure-open-source-software_
When was this post released
No response
Summary
I heard about this a couple of days ago, but I can't find enough information on it to dive deep yet. Adding this as a placeholder for next week. Links:

https://www.hsgac.senate.gov/media/majority-media/peters-and-portman-introduce-bipartisan-legislation-to-help-secure-open-source-software_
https://www.washingtonpost.com/politics/2022/09/22/senators-introduce-bill-protect-open-source-software/

Code of Conduct

[X] I agree to follow this project's Code of Conduct

https://twitter.com/di_codes/status/1574447938054410246


WebView2: Update documentation for 1.0.1243-prerelease

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

File
Status
Preview URL
Details

.openpublishing.publish.config.json
:white_check_mark:Succeeded

1-0-1222-prerelease/icorewebview2.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_10.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_11.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_12.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_2.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_3.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_4.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_5.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_6.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_7.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_8.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2_9.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2acceleratorkeypressedeventargs.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2acceleratorkeypressedeventhandler.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2addscripttoexecuteondocumentcreatedcompletedhandler.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2basicauthenticationrequestedeventargs.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2basicauthenticationrequestedeventhandler.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2basicauthenticationresponse.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2browserprocessexitedeventargs.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2browserprocessexitedeventhandler.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2bytesreceivedchangedeventhandler.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2calldevtoolsprotocolmethodcompletedhandler.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2capturepreviewcompletedhandler.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

1-0-1222-prerelease/icorewebview2clientcertificate.md
:white_check_mark:Succeeded
View (webview2-1.0.1222-prerelease)

This comment lists only the first 25 files in the pull request.
For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Stop links with 0 clicks appearing at the top of the list.

Made a small change to anaytics_importer.rb to prevent the number of clicks
for a given link ever being nil, as when GA shows no clicks for a link it gives
that as nil, this breaks the ordering for the links.
The data migration will be the first of two, there will be a second migration adding a constraint to the analytics column, but's it's safer to add this separately so that will come in a follow up PR.

Have you talked to data to see if this would break any of their tools?


Make transport::Service Debug and add some HTTP constants from libgit2.

This PR adds a dependency on the http crate for the http::Method type, and adds some HTTP related constants defined in libgit2 at https://github.com/libgit2/libgit2/blob/2ecc8586f7eec4063b5da1563d0a33f9e9f9fcf7/src/libgit2/transports/http.c#L68-L95.

This would be useful for users implementing their own git transport using one of rust's http(s) libraries (i.e. ureq, reqwest, etc).
I think it's super fair to not want to add more public dependencies (due to the cost downstream to match the version and have an extra crate to compile).
The solutions here are either to gate anything using/exposing the http crate behind a feature flag (thus making the dependency on the http crate optional, off by default), or replace the use of http::Method with a bespoke enum native to the git2 crate (eliminating the need to depend on http at all).