Regression test fails

We're seeing a lot of tests failing in the cluster with the error Could not execute pack.
time="2018-09-21T00:22:00.241093523Z" level=error msg="Could not execute pack" borges="/cache/binaries/borges.v0.17.4-rc.1" error="exit status 1" output="unknown flag `file'
Usage:
  borges [OPTIONS] pack [pack-OPTIONS] path

Help Options:
  -h, --help                       Show this help message

[pack command options]
          --queue=                 queue name (default: borges) [$BORGES_QUEUE]
          --broker=                broker service URI (default:
                                   amqp://localhost:5672) [$BORGES_BROKER]
          --locking=               locking service configuration (default:
                                   local:) [$BORGES_LOCKING]
          --workers=               number of workers, 0 means the same number
                                   as processors (default: 1) [$BORGES_WORKERS]
          --timeout=               deadline to process a job (default: 10h)
                                   [$BORGES_TIMEOUT]
          --root-repositories-dir= path to the directory storing rooted
                                   repositories (can be local path or hdfs://)
                                   (default: /tmp/root-repositories)
                                   [$BORGES_ROOT_REPOSITORIES_DIR]
          --bucket-size=           if higher than zero, repositories are stored
                                   in bucket directories with a prefix of the
                                   given amount of characters from its root
                                   hash (default: 0) [$BORGES_BUCKET_SIZE]
          --temp-dir=              path of temporary directory to clone
                                   repositories into (default: /tmp/borges)
                                   [$BORGES_TEMP_DIR]
          --temp-dir-clean         clean temporary directory before starting
                                   [$BORGES_TEMP_DIR_CLEAN]

    Log Options:
          --log-level=             Logging level (info, debug, warning or
                                   error) (default: info) [$LOG_LEVEL]
          --log-format=            log format (text or json), defaults to text
                                   on a terminal and json otherwise
                                   [$LOG_FORMAT]
          --log-fields=            default fields for the logger, specified in
                                   json [$LOG_FIELDS]
          --log-force-format       ignore if it is running on a terminal or not
                                   [$LOG_FORCE_FORMAT]

    Profiler Options:
          --profiler-http          start HTTP profiler endpoint [$PROFILER_HTTP]
          --profiler-block-rate=   runtime.SetBlockProfileRate parameter
                                   (default: 0) [$PROFILER_BLOCK_RATE]
          --profiler-mutex-rate=   runtime.SetMutexProfileFraction parameter
                                   (default: 0) [$PROFILER_MUTEX_FRACTION]
          --profiler-endpoint=     address to bind HTTP pprof endpoint to
                                   (default: <IP_ADDRESS>:6061) [$PROFILER_endpoint]

[pack command arguments]
  path:                            file with repositories to pack, one per line
" repo=cangallo source="go-log.v1/logger.go:37" url="git://localhost:9418/cangallo"
panic: exit status 1

goroutine 1 [running]:
main.main()
	/home/travis/gopath/src/github.com/src-d/regression-borges/cmd/regression/main.go:76 +0x5a7

Thanks! There was a change in CLI options and environment variables for borges and we are working on fixing tooling around. The change is still not released but regression tests with master. For reference here's the PR with the changes:
https://github.com/src-d/borges/pull/338


fix two benchmarks

BenchmarkCompaction will always OOM even in Prometheus test machine
BenchmarkCreateSeries has a high probability to fail

most likely because of the genSeries , can you check if we can optimize it or if not will merge this change.

@krasi-georgiev yes, while benchmarking compaction recently myself I found that creation of blocks takes a lot of memory. I plan to optimize it in the future.

@codesome is it ok to merge this change or shall @naivewong try to optimize genSeries instead?

@krasi-georgiev It can be merged now. We can visit that later.


Yaml fixes

Some improvements to the yaml files.

Hi, thanks for merging the other small PR's. I've answered your questions below.

1. What method did you use to transform the files and to validate the quotes were redundant?

I used a tool called Trunk which a colleague pointed out to me. It is free for public repos. It bundles many linters and code quality tools and has a nice extension for VSCode.
For the yaml quoted strings in particular yamllint was used, and I checked the documentation to verify that the quotes were redundant.

2. Why did you add the permission line to the deployment (it was working fine)?

This was a warning by checkov, CKV2_GHA_1 in particular. GitHub defaults to write-all, and checkov warns about that (GitHub docs). Tighter permissions are better in general, but I can drop the commit if you are not interested in this practice.


Navigation - LM - logo size

After testing in on a non-retina screen, the logo at this size is a bit illegible.
Can we enlarge it to 60px height?

no logo for M? in mockups, the logo can fit in.

Logo appears in the new navigation on M, so I think this is resolved.


Sometimes the emoji native is just blank box

Hello, first of all thanks for this wonderful library.
Currently i integrated your library to my app and i manage to make it work, but the problem is, some of the icons it renders on my Input as "Empty Box"
as you can see some of them are empty box, do you have any idea how to fix this?

This is my code
  public addEmoji(event) {
        const message = this.inquiryMessageForm.value;
        const emoji = event.emoji.native;
        const wholeMessage = `${message}${emoji}`;
        this.inquiryMessageForm.patchValue(wholeMessage);
    }

HTML code
<emoji-mart set="facebook" [sheetSize]="16" (emojiClick)="addEmoji($event)"></emoji-mart>

should no longer be an issue


Pure Cool Auto setting not sticking when triggered by scenes

First off, thank you, this is great and I genuinely appreciate the work you've put into it.
I'm running into a problem with the new fan control after updating to 1.7 (from 1.3), where trying to set a fan to auto mode using a HomeKit scene will briefly set the Pure Cool to auto mode at speed 4 (like it usually starts at in auto mode), but then after a half second auto mode deactivates and it remains at speed 4. I've attached a chunk of my Homebridge log where it was doing it. During this timeframe in the log, the device was controlled exclusively by the Home app, and not the Dyson Link app, the remote, or any scheduled activity.
Thanks!
homebridge.log

Hey, is there any news about this? I'm having the same issue with all the scenes. Is there any way to intercept the change in the homebridge plugin and not actually send the command to the dyson?

it seemed that there was some issue with the FanV2 on how it stores and sets the Auto/Manual mode.
I have moved the auto mode back as separate switch for now for Dyson cool device in v1.8 and you may try if that works for you


[docs] Expose heading links in a11y tree

Preview:
https://deploy-preview-25861--material-ui.netlify.app/components/buttons/
https://deploy-preview-25861--material-ui.netlify.app/api/button/
These were visible on hover but not exposed to the a11y tree. Visible elements should be exposed to the a11y tree.
Used this opportunity to get rid of an empty anchor element which is unneccessary.
Closes https://github.com/mui-org/material-ui/pull/25832
Clicking a header link in nvda:
next: "empty"; "clickable heading level 2"
https://github.com/mui-org/material-ui/pull/25861 (this PR): "contained buttons, visited link, heading level 2"; "heading level 2 contained buttons visited link contained buttons"
https://github.com/mui-org/material-ui/pull/25832:  "contained buttons, visited link, heading level 2"; "heading level 2 clickable"
Clicking a header link in VO:
next: "visited, link, buttons"
https://github.com/mui-org/material-ui/pull/25861 and https://github.com/mui-org/material-ui/pull/25832:  "visited, link, contained buttons"
Notice how https://github.com/mui-org/material-ui/pull/25832 just announces the heading as clickable but  does not say what this click would do. In this PR we get the announcement that there is a link.

I have noticed a regression in the search experience from these changes.

open https://mui.com/components/alert/
type "performance" on the search box
click on the first option
notice the hash used by Algolia: #heading-performance, not #performance, the header is not visible, destabilizing developers

cc @siriwatknp
I had a quick look at a possible solution. It seems that we could try scroll-margin-top and kill the .anchor-link elements.


⚠ Slack has degraded performance

In 4f65faf, Slack (https://status.slack.com/api/v2.0.0/current) experienced degraded performance:

HTTP code: 200
Response time: 333 ms

Resolved: Slack performance has improved in ae97cec after 1 hour.


StaticFileContext.ValidateMethod sometimes couldn't get correct http request method

I have an admin website,when I debug and publish website using Kestrel,some js or css is not loaded correctly,it shows 404 error randomly.If I debug and publish website using IIS,it is good.
The Asp.Net core version is 2.2.
My website loads about 50 requests at the same time.I will show your the screenshot below .

After digging source code in for several days,I find StaticFileContext.ValidateMethod return empty,so http response return 404.Also I log some useful data.

The solution is here stackoverflow.com/questions/50661923
So I close this issue.


Removing manifest files, not need for actual image build

These manifests are not need for building the image.
They are only relevant when using Java developer tools to deploy the project.

wrong repo - sorry


⚠ Bofrost.at has degraded performance

In 840c2bd, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 4249 ms

Resolved: Bofrost.at performance has improved in 041cd3b.


Jadx debugger couldn't connect to Nox emulator via ADB

Jadx debugger couldn't connect to Nox emulator via ADB.

@Alireza-Razavi did you resolve the problem?

@musaulker Not yet unfortunately :(

As far as I know NOX ships an own version of adb. Make sure to use nox_adb.exe which came with NOX.
ADB problems with NOX seem to be common. See e.g. https://stackoverflow.com/questions/51214825/adb-cant-connect-to-nox


Kronos WFC Connector - Time Off Request Syncing Teams to Kronos Not Supported

There is a class in the code base (TimeOffRequestsController in the Microsoft.Teams.Shifts.Integration.API project)that attempts to synchronize time off requests created in Teams with Kronos WFC, however, in order to get the time off requests from Teams it uses the following API call:
_https://graph.microsoft.com/v1.0/teams/{teamId}/schedule/timeoffrequests?$filter=state eq 'pending'_
However, this API always returns an empty array and the Graph API documentation:
https://docs.microsoft.com/en-us/graph/api/timeoffrequest-get?view=graph-rest-1.0&tabs=http
States that a time off request id path parameter is required and also says: "This method does not support OData query parameters to customize the response."
Consequently, the connector is unable to sync time off requests in the direction from Teams -> Kronos in the way intended by the original authors as per their implementation.

Actually I am wrong, the method does actually work and the requests created in Teams are properly synced to Kronos, so I will close the issue.


Black Myth Wukong Question: Does it support 16:10 display?

May I ask whether this mod supports 16:10 screen display?

Sincerely wish that the mod can support 16:10. That would be awesome!

Gonna direct you to this project. I will see if it's possible to add 16:10 support to that. If you have any further requests or anything related to Wukong, put them in the issues section of that repository.


Gopay test server url change

Thanks. I've merge #7, do you think it's oukey now?

Yeah, i guess. Thanks


Issues running on linux? SEE HERE

I worked through this, so here are a few things that made it work on Ubuntu 24.04
Add a version field with a valid SemVer version to avoid the "App version is not a valid semver version: '0.0'" error. Add this line to the package.json:
"version": "1.0.0"

Run these commands:
sudo chown root:root /home/$USER/agent.exe/node_modules/electron/dist/chrome-sandbox
sudo chmod 4755 /home/$USER/agent.exe/node_modules/electron/dist/chrome-sandbox

@corbt Hopefully this helps out any Ubuntu/Linux users.

I had an issue too and doing this fixed it in my ubuntu 22.04, thanks

@blevlabs I feel so silly, I saw that error and thought it was an unrelated warning. This work, thanks

Adding a version definitely removed the initial errors, but I'm not sure what the chown and chmod commands are for? I'd rather not make anything have root permissions (cautious people should probably be using a sandbox for this anyway...).
I found I  had to add app.disableHardwareAcceleration() in main.ts to avoid the error ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed, but maybe that's just my machine.
Even then, something isn't working right, it keeps repeatedly asking for screenshare permissions even when I click "remember my decision", and the mouse clicking doesn't seem to work properly. It also ended up in some strange loop and crashed.
This is on Ubuntu 22.04, maybe Wayland doesn't play well with whatever libraries this uses!

I'm not sure what the chown and chmod commands are for
see https://linuxconfig.org/understanding-linux-permissions-the-differences-between-chmod-and-chown

Even then, something isn't working right, it keeps repeatedly asking for screenshare permissions even when I click "remember my decision", and the mouse clicking doesn't seem to work properly. It also ended up in some strange loop and crashed.

having same issue


Create the sqoop-hive sharelib without hive-cli

Workaround for Sqoop actions importing into hive table failing
mysteriously.
The hardwired strings are intentional since this is supposed to be a
workaround.

Thanks @vt0r . Done with the octal bit changes


Minimum data line length is too long

You calculate the min_data_line_length as if it is the length of the whole line, but it is used for the length of the data in the line.
So I suggest either setting the min_data_line_length to 8 (easiest way) or use the min_data_line_length for limiting the whole line length.
bool compose(std::ostream& os, size_type data_line_length=0)
  {
    if(!good() || !validate()) {
      return false;
    } else {
      size_type min_data_line_length = (2+(2*(1+type()))+8+2); // Sx+len+(adr)+((min 4 data bytes ))+cksum
     ...

Ok, pushed a potential fix, brief test code that I used below. Could you double check with your compiler and close the issue if it is resolved for you? Cheers, -
#include <sw/srecord.hh>
#include <cstdint>
#include <vector>
#include <string>
#include <iostream>
#include <iomanip>

int test_issue2()
{
  // read
  using namespace std;
  sw::srecord srec;
  if(!srec.parse(string("S309FFFFFFFC0200E0FF1C"))) {
    cout << "error-msg: " << srec.error_message() << endl;
    cout << "error-adr: " << srec.error_address() << endl;
    return 1;
  } else {
    srec.dump(cout);
  }
  // verify
  if(!srec.validate()) {
    cout << "error-msg: " << srec.error_message() << endl;
    cout << "error-adr: " << srec.error_address() << endl;
    return 1;
  } else {
    cout << "ok: srec.validate()" << endl;
  }
  // data access:
  auto& block = srec.blocks().front();
  cout << "block size: " << block.size() << endl;
  cout << "block sadr: 0x" << std::hex << block.sadr() << endl;
  cout << "block eadr: 0x" << std::hex << block.eadr() << endl;
  return 0;
}

Yes this works now but a little bit unusual to include the record field to the line size. And leads to a different behaviour when programs update to the new definition.
And you mixed up the test code for issue #2 and #4. Litte bit confusing :D.

Hi, agreed, in the original old code (I once made for c++98) the line size was actually meant to be the text line size, which could be specified as max line size for embedded parsers. The c++11 porting was actually a hobby/training project - not hard to detect due to the low unit test depth ;-). I would for this purposes leave the change, it should not be critical for applications.


Create a transition plan for new Front End

In the near future @kylemh is going to be nearly finished with the @OperationCode/front-end project and we'll need the ability to test deploys and an easy way to switch over instance in the front end.
I'm not sure if this should be done at the kube deployment.yaml file, or done within the application deploy scripts. Our issue right now within the deployment scripts is that we promote any push to master to production. So when we activated these scripts we'd have to work on a secondary branch.

@kylemh have you already thought this one through? Do you have something written up, since you said you're targeting Monday?

I honestly don't know what's involved.
I was assuming we could still manage infrastructure for the back-end, drop the front-end from the load balancer, and then I'd hijack DNS via Now.sh and our registrar/domain service.

Closing this since the transition plan has been figured out and we are doing it now.


README link to neurodiversity.wiki

Hello! I love the idea for this project and would love to contribute!
I noticed that the link to neurodiversity.wiki in the README.md file was linking to https://github.com/jtorreggiani/neurodiversity/blob/main/neurodiversity.wiki. I updated the markdown to fix url's formatting.
I opened a pull request with the fix https://github.com/alvarlagerlof/neurodiversity/pull/100. Excited to contribute!

Thanks for the fix! I've approved and merged your pull request!


Remove runPromiseSequence method from util.js

Codecov Report

Merging #722 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #722      +/-   ##
==========================================
- Coverage   97.08%   97.07%   -0.01%
==========================================
  Files          29       29
  Lines        2536     2670     +134
  Branches      215      382     +167
==========================================
+ Hits         2462     2592     +130
+ Misses         74       65       -9
- Partials        0       13      +13

Impacted Files
Coverage Δ

browser/model/helpers/util.js
100% <ø> (+3.03%)
:arrow_up:

browser/pages/confirm/controller.js
78.88% <0%> (-2.93%)
:arrow_down:

browser/model/helpers/downloader.js
96.94% <0%> (-1.52%)
:arrow_down:

browser/services/componentLoader.js
98.78% <0%> (-1.22%)
:arrow_down:

browser/services/data.js
97.29% <0%> (-0.77%)
:arrow_down:

browser/pages/start/controller.js
100% <0%> (ø)
:arrow_up:

browser/model/kompose.js
100% <0%> (ø)
:arrow_up:

browser/model/helpers/hash.js
100% <0%> (ø)
:arrow_up:

browser/model/devstudio.js
100% <0%> (ø)
:arrow_up:

browser/directives/pathValidator.js
100% <0%> (ø)
:arrow_up:

... and 17 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 191aacb...384a0ce. Read the comment docs.


r.get('foo') returns b'bar

I'm just testing the package and followed the example at the readme docs like making connection, setting a value on 'foo' with 'bar' and getting it. But the return value is different it says it should return just 'bar' but in mine it returns "b'bar" . I don't know if that's normal though. anyway I also tried accessing the data through redis-cli and it just returns me bar

Sounds like you're on Python 3. You should specify decode_responses=True as an additional argument when creating the connection if you want string values to automatically be decoded for you.
Apologizes that this isn't in the docs anywhere.

Nope it's fine.


chore(avm): Gas alignments with simulator

Resolves #6860

Benchmark results
Metrics with a significant change:

protocol_circuit_proving_time_in_ms (base-rollup): 65,136 (-18%)
protocol_circuit_proving_time_in_ms (root-rollup): 19,422 (-17%)
pxe_database_size_in_bytes (3): 7,774 (-16%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Proof generation
Each column represents the number of threads used in proof generation.

Metric
1 threads
4 threads
16 threads
32 threads
64 threads

proof_construction_time_sha256_ms
5,727
1,551
709
761 (+1%)
781 (+1%)

proof_construction_time_sha256_30_ms
11,868
3,176
1,407 (-1%)
1,429
1,469

proof_construction_time_sha256_100_ms
44,966
11,770
5,443
5,442 (+1%)
5,356

proof_construction_time_poseidon_hash_ms
78.0
34.0
34.0
57.0 (-2%)
88.0

proof_construction_time_poseidon_hash_30_ms
1,517
419
202
233 (+5%)
271 (+2%)

proof_construction_time_poseidon_hash_100_ms
5,751
1,565
724
794 (+3%)
798

L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
4 txs
8 txs

l1_rollup_calldata_size_in_bytes
1,412
1,412

l1_rollup_calldata_gas
9,464
9,444

l1_rollup_execution_gas
608,000
607,980

l2_block_processing_time_in_ms
708 (-2%)
1,301 (+2%)

l2_block_building_time_in_ms
22,243 (-1%)
45,788

l2_block_rollup_simulation_time_in_ms
22,119 (-1%)
45,437

l2_block_public_tx_process_time_in_ms
18,998 (-1%)
42,025

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 8 txs.

Metric
3 blocks
5 blocks

node_history_sync_time_in_ms
6,003 (+2%)
8,597 (+2%)

node_database_size_in_bytes
9,498,704
12,771,408

pxe_database_size_in_bytes
:warning: 7,774 (-16%)
15,127

Circuits stats
Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Circuit
simulation_time_in_ms
witness_generation_time_in_ms
proving_time_in_ms
input_size_in_bytes
output_size_in_bytes
proof_size_in_bytes
num_public_inputs
size_in_gates

private-kernel-init
134 (+1%)
494 (+7%)
12,346 (-5%)
20,634
64,614
89,536
2,731
524,288

private-kernel-inner
409 (+1%)
1,106 (-2%)
45,352 (-9%)
92,326
64,614
89,536
2,731
2,097,152

private-kernel-tail
579
2,796 (+7%)
46,987 (-9%)
96,545
68,261
11,648
297
2,097,152

base-parity
6.60 (+2%)
1,772 (+6%)
2,598 (-7%)
128
64.0
2,208
2.00
131,072

root-parity
49.5 (-7%)
48.6 (-24%)
33,740 (-15%)
27,100
64.0
2,720
18.0
2,097,152

base-rollup
6,008
2,330 (-4%)
:warning: 65,136 (-18%)
119,738
756
3,648
47.0
4,194,304

root-rollup
115 (+6%)
63.5 (-20%)
:warning: 19,422 (-17%)
25,309
620
3,456
41.0
1,048,576

public-kernel-app-logic
569
3,535 (-1%)
38,737 (-14%)
108,073
86,550
116,768
3,582
2,097,152

public-kernel-tail
1,142 (+1%)
22,214 (+2%)
155,023 (-15%)
403,238
7,646
11,648
297
8,388,608

private-kernel-reset-small
593 (+1%)
2,105 (-1%)
40,965 (-10%)
120,737
64,614
89,536
2,731
2,097,152

public-kernel-setup
677 (+3%)
2,676 (-2%)
37,783 (-13%)
108,073
86,550
116,768
3,582
2,097,152

public-kernel-teardown
579 (+3%)
3,544
39,090 (-14%)
108,073
86,550
116,768
3,582
2,097,152

merge-rollup
30.5 (+1%)
N/A
N/A
16,542
756
N/A
N/A
N/A

private-kernel-tail-to-public
N/A
8,631 (-3%)
86,209 (-14%)
N/A
N/A
116,768
3,582
4,194,304

Stats on running time collected for app circuits

Function
input_size_in_bytes
output_size_in_bytes
witness_generation_time_in_ms
proof_size_in_bytes
proving_time_in_ms
size_in_gates
num_public_inputs

ContractClassRegisterer:register
1,344
9,944
465 (+1%)
N/A
N/A
N/A
N/A

ContractInstanceDeployer:deploy
1,408
9,944
41.9 (+3%)
N/A
N/A
N/A
N/A

MultiCallEntrypoint:entrypoint
1,920
9,944
1,798 (+3%)
N/A
N/A
N/A
N/A

SchnorrAccount:constructor
1,312
9,944
1,462 (+3%)
N/A
N/A
N/A
N/A

SchnorrAccount:entrypoint
2,304
9,944
2,870 (+2%)
16,768
50,592 (-9%)
2,097,152
457

Token:privately_mint_private_note
1,280
9,944
1,654 (+6%)
N/A
N/A
N/A
N/A

FPC:fee_entrypoint_public
1,344
9,944
1,128 (+10%)
16,768
10,008 (-10%)
524,288
457

Token:transfer
1,376
9,944
5,666 (+6%)
16,768
47,573 (-9%)
2,097,152
457

Benchmarking:create_note
1,344
9,944
1,398
N/A
N/A
N/A
N/A

SchnorrAccount:spend_private_authwit
1,280
9,944
77.4
N/A
N/A
N/A
N/A

Token:unshield
1,376
9,944
3,952 (+1%)
N/A
N/A
N/A
N/A

FPC:fee_entrypoint_private
1,376
9,944
4,808
N/A
N/A
N/A
N/A

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
256 leaves
512 leaves
1024 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.5 (+1%)
17.0
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.7
31.7
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.607 (+1%)
0.521 (+1%)
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
48.9 (+1%)
77.0 (+1%)
138 (+4%)
247
473
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
95.9
159
288
543
1,055
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.500 (+1%)
0.475 (+1%)
0.471 (+3%)
0.448 (+1%)
0.441
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
58.6 (+1%)
113
184
351 (+1%)
628
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
107
208
355
686
1,263
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.506 (+1%)
0.505
0.487
0.481 (+1%)
0.471
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
59.0 (+1%)

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
101

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.551 (+1%)

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
79,470
665,267

Transaction size based on fee payment method
| Metric |  |
| - |  |


TODOs [Nov 25 to Dec 3]

[x] Flavio tries running count_freq_vocab.py on Nov 26.

If it works, it solves the good vocab n observations question from CBS.
If it doesn't work, we drop the good vocab file from the export.
[ ] The export goes out hopefully tomorrow provided Ana's evaluation runs end.

[x] Flavio makes a reservation for 2 GPU nodes for 2 days starting from Dec 2 morning (Monday).

[ ] With the GPUs, the first priority is to get the inferences done.

[ ] Tanzir tests out the inference code on Snellius and checks how to create the input data for inference.
[ ] Afterwards, Tanzir writes down detailed steps for running inference and creating input data for inference for the whole Netherlands population.
This happens by Nov 26.

[ ] Flavio checks if everything is good for inference on Snellius by Nov 29.

[ ] The second priority is to resume training for small and medium2x models, as well as start training for medium and large models.

This should be fairly straightforward, and Flavio will start this on Dec 2 morning.

[ ] The third priority is to start training small and medium2x models using training data from data-driven-approach.

[ ] Flavio needs to first go through steps 3 to 5 codes on Snellius and verify he understands the process.
[ ] Afterwards, he will try running it on the work environment.
This needs to happen by Nov 29.
If the work environment runs out of memory, Flavio can run it using the GPU reservation next week.

[ ] The fourth priority is to do the same as the previous task but using medium and large models.

This happens on Dec 2 or Dec 3.

[ ] The fifth priority is to run inference using all the four models from the data-driven-approach (the previous two tasks).

This happens on Dec 3.

the count_freq_vocab.py does not work, indices is not defined. I dropped the vocab file from the export.

This is on me. I will fix it and will get it ready before our 2nd export.

@tanzir5 ,  I tried to run pipeline.py without MLM encoding for inference. What I did

copied scripts from your directory into mine: pipeline.py, new_code/constants.py, new_code/custom_vocab.py, new_code/utils.py, tasks/mlm.py
moved data files; the config file now looks like

"DATAPATH": "[homedir]/data/HandPicked/",
"SEQUENCE_PATH": "[homedir]/data/llm/gend_data/people_4mil_random_v1.parquet",
"VOCAB_PATH": "[homedir]/data/llm/gen_data/good_vocab_4mil_v1.csv",
"ENCODING_WRITE_PATH": "[homedir]/data/llm/gen_data/no_mlm_4mil/",
"DO_MLM": false,
[rest unchanged]

The code fails with
in line 169 of pipeline.py, in encode_documents
table = parquet_file.read_row_groups(...)
pyarrow.lib.ArrowNotImplementedError: Nested data conversions not implemented for chunked array outputs

it also happens when I do mlm encoding, and when I do not parallel (parallel = false in the config). It happens when tryong to load the people_4mil_random_v1.parquet

This is related to this error in the pyarrow library: https://github.com/huggingface/datasets/issues/5695
The summary is: pyarrow fails to load parquet files when the individual row_group_size is very big (1 perosn said > 1 gb).
I faced the same issue before and what I did was breaking the parquet file into multiple smaller row_groups to decrease the row_group_size. If the parquet file is raising this error, then most likely I did not use this parquet file in the first place. The parquet file I used must have been a different one inside [homedir]/data/llm/gen_data/
Please try the following code on all the candidate parquet files in that directory:
 import pyarrow.parquet as pq pf = pq.ParquetFile(path) print(pf.metadata.row_group(0).total_byte_size/(1024*1024*1024))
This should print the size of individual row_groups on average. This needs to be low enough to make the code work. Hopefully there is a different file that has a small enough row_group size that works for the pipeline.py code.

If this does not work, then it may be the case that the right file got removed or overwritten somehow.
In any case, it is possible to generate the right file by running step4 i.e. pop2vec/llm/src/new_code/create_life_seq_parquets.py
Please double-check https://github.com/odissei-lifecourse/life-sequencing-dutch/blob/8028f1e8c8499459a84b3e2d204bef9f4d7c1239/pop2vec/llm/src/new_code/create_person_dict.py#L276
This line dictates the number of rows per row_group. Please check this line still exists on OSCC and also check if number of rows = (len(people_df)//65)  is smaller than 1 GB.


Message is not moved to _error queue in AWS until service is restarted.

Is this a bug report?
Yes
Can you also reproduce the problem with the latest version?
Yes
Environment

Dotnet version: .NET Core 3.1
Operating system: Linux(AWS) docker
IDE (Rider, VS Code, Visual Studio): Visual Studio

Steps to Reproduce

Send message to queue with inappropriate body
Get serialization exception

Expected Behavior

Message should be moved to _error queue.
Actual Behavior

Message is not moved to _error queue but _error queue is created. Application is trying to process it again and again. I get next exception until service is restarted:
Amazon.SQS.AmazonSQSException: The specified queue does not exist for this wsdl version.\n ---> Amazon.Runtime.Internal.HttpErrorResponseException: Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.\n   at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)\n   at Amazon.Runtime.Internal.HttpHandler`1.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.SQS.Internal.ValidationResponseHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)\n   --- End of inner exception stack trace ---\n   at GreenPipes.Caching.Internals.NodeValueFactory`1.CreateValue()\n   at GreenPipes.Caching.Internals.NodeTracker`1.AddNode(INodeValueFactory`1 nodeValueFactory)\n   at MassTransit.Transports.ReceivePipeDispatcher.Dispatch(ReceiveContext context, ReceiveLockContext receiveLock)\n   at MassTransit.Transports.ReceivePipeDispatcher.Dispatch(ReceiveContext context, ReceiveLockContext receiveLock)\n   at MassTransit.AmazonSqsTransport.Pipeline.AmazonSqsMessageReceiver.HandleMessage(Message message)

After restart service works as expected and message is moved to _error queue.
Reproducible Demo

It is just a project that create queue in AWS. I can't reproduce problem when I run application in Visual Studio in Windows. It is reproduced only when service is started in AWS linux docker environment.
https://github.com/viktorshevchenko210/MassTransitDeadLetterDemo

Sounds like permissions.


need to remove a gap between elements of stacked bar

Expected behavior
Hi, it was expected that there would be no gap between elements of bar when adding property "minBarLength"
Current behavior

In January bar the gap appears. it happens after adding property "minBarLength"
Reproducible sample
https://stackblitz.com/edit/github-f6olvx?file=src%2FchartConfig.ts
Optional extra steps/info to reproduce
No response
Possible solution
No response
Context
No response
chart.js version
v4.3.0
Browser name and version
No response
Link to your project
No response

Dear ,
I'm Anuj Varshney, experienced in resolving such issues efficiently. Kindly assign it to me. I'll work diligently and keep you updated. Excited to contribute.

If you set the barPercentage and categoryPercentage both to 1 the space will disappear.
https://www.chartjs.org/docs/3.7.1/charts/bar.html#barpercentage-vs-categorypercentage
https://stackblitz.com/edit/github-f6olvx-1mtrxz?file=src%2FchartConfig.ts

Please assign this issue to me.

Hello would like to fix is this still required can you assign me?

If you set the barPercentage and categoryPercentage both to 1 the space will disappear.
https://www.chartjs.org/docs/4.4.0/charts/bar.html#barpercentage-vs-categorypercentage
https://stackblitz.com/edit/github-f6olvx-1mtrxz?file=src%2FchartConfig.ts

No. The gap has still exist in the first column.

Same issue here

+1

any updates?

Chart.js v4.4.3 still same problem. Can't adjust (completely remove) gap/space between columns

Oh, I figured it out:

the
categoryPercentage: 1.0,
barPercentage: 1.0,
needs to be used inside of the dataset definition.
datasets: [
{
label: "Run",
data: runData,
backgroundColor: "#00b94b",
borderColor: "#00b94b",
borderWidth: 0,
categoryPercentage: 1.0,
barPercentage: 1.0,
},


[Enhancement]: Update Action to Node.js v20 to remove GitHub deprecation warning

What changes would you like?
As far as I understand, this GitHub Action still uses Node.js v16, which is deprecated according to GitHub's blog: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/
I suggest updating this GitHub Action to Node.js v20 and releasing a new version (e.g., v2.0.0) to fix the warning.
Any extra information?
The warning can be seen, e.g., here: https://github.com/VSCodium/vscodium/actions/runs/8253791641

I can confirm the warning. Also getting:
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: diddlesnaps/snapcraft-multiarch-action@v1. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.

@lucyllewy could you create a new release? I see that this has been resolved in the main branch. 😊


Debug.Log() and Log() should be replaced by Logger.Log()

suggested that bc i will implement my own Logger class. nothing fishy here ;)


Reuse indexes with full sweep

Re-use beacon chain indexes
Assign new deposits to existing validator records that have withdrawn long ago
Motivation
Withdrawn indexes are dead weight that adds cost to the protocol:

Beacon state size is roughly proportional to validator count
Some epoch transition steps require a full sweep over all validators
Higher tree-hashing cost / complexity

Safe to reuse epochs constant
TBD
From @djrtwo : Tentatively ~3x WS period, so 1 year
Attack: not slashable poisoned aggregates
Assume a 1/3 attacker. It exits N keys, where N is a small fraction of the validator set. These keys leave the queue and are withdrawable within a few days. Now N new deposits come in and overwrite the keys.
Now 1/3 attacker has a secret chain where those validators are not exited. Those N keys are on average in every committee. The attacker makes a double spend chain from a couple of days ago and mixes in one of those keys to each revealed attestation on that chain (the individual attestations are unavailable, only aggregates). Those attestations are now not slashable on main chain with the current val index version of slashable messages)
If those keys can't be overwritten for at least the weak subjectivity period, then we can not have attestations that are poisoned within the security window we care about
Note that if slashable messages included the pubkey, this would not be an issue. However in that case the data requirements to slash a large amount of validators would increase by a factor of 6 and potentially become unsafe.
Strategy A: Full-sweep
def assign_index_to_deposit(state: BeaconState) -> uint64:
    for index, validator in enumerate(state.validators):
        if is_reusable_validator(...):
            return index
    return len(state.validators)

Most efficient, always allocate re-usable indexes to validators
Requires a cache to be efficient, see full sweep cache

Strategy B: Bounded sweep
def compute_reuse_index(state: BeaconState) -> uint64:
    index = state.next_reuse_sweep_index
    bound = min(len(state.validators), MAX_VALIDATORS_PER_REUSE_SWEEP)
    for _ in range(bound):
        if is_reusable_validator(...):
            state.next_reuse_sweep_index = index + 1
            return index
        index = ValidatorIndex((index + 1) % len(state.validators))
    state.next_reuse_sweep_index = index
    return len(state.validators)

Similar to withdrawals sweep, boundness should prevent the need a cache.
Will not allocate all potentially re-usable indexes to validators, see bounded sweep reuse efficiency

Full sweep cache
Define reusable_indexes(state) as the set of all validator indexes in state that satisfy predicate is_reusable_validator.
Reusable indexes must satisfy conditions:

validator.withdrawable_epoch < epoch - REUSE_VALIDATOR_INDEX_DELAY: epoch is constant through an epoch (duh) and validator.withdrawable_epoch can only change if this validator is reused. Re-using is an irreversible action during an epoch. So the set reusable_indexes(state_0) includes all possible sets reusable_indexes(state_child) where state_child is a descendant of state_0 in the same epoch.
balance == 0. Balance may not be zero if there's remaining balance from active duties (in extreme configurations). Balance can only be increased with a deposit topup. Balance can only be decreased to zero with a full withdrawal (if EPOCHS_PER_SLASHINGS_VECTOR < REUSE_VALIDATOR_INDEX_DELAY)

Cache strategy

Once per dependent root after applying an epoch transition, compute the list of all validator indexes with validator.withdrawable_epoch < epoch. That set includes all possible reusable indexes on that epoch. Store that list as immutable referenced by all child states in epoch
On apply_deposit, some reusable index may be consumed. Indexes are consumed sequentially from the available pool. Forking states only need to track that they consumed reusable_indexes_ptr re-usable indexes from the list.
(extra) If last finalized < MIN_VALIDATOR_WITHDRAWABILITY_DELAY the cached list is guaranteed to be the same for all states at epoch N.

def on_epoch_process(state: BeaconState, cache):
    # Immutable shared cache for all child states in same epoch
    cache.potential_reusable_indexes = []
    # Per state set of indexes reused
    cache.reused_indexes = set()
    for index, validator in enumerate(state.validators):
        if validator.withdrawable_epoch < get_current_epoch(state) - REUSE_VALIDATOR_INDEX_DELAY:
            cache.potential_reusable_indexes.push(index)

def compute_reuse_index(state: BeaconState, cache) -> int:
    for index in cache.potential_reusable_indexes:
        if state.balances[index] == 0:
            cache.reused_indexes.add(index)
            return index
    return len(state.validators)

Bounded sweep reuse efficiency
Define efficiency as the ratio of re-used indexes with partial sweep by re-used indexes with full sweep (theoretical maximum). We want to maximize efficiency.
We also want to bound computational cost on block processing, such that avg deposits per block * MAX_VALIDATORS_PER_REUSE_SWEEP << len(state.validators). Note that after EIP6110, deposits per block is bounded only by gas, and could be much higher than current MAX_DEPOSITS = 16.
Note that this two goals oppose each other. Also note that missing the opportunity to re-use an index results on a significant long term cost (until new index withdraws) of an extra validator record.
Toy examples
Consider the following patterns of validator records:

Pattern ------YY means 6 non-reusable indexes, 2 reusable indexes
Assume MAX_VALIDATORS_PER_REUSE_SWEEP = 2

Reuse eff.
Computational eff.

Concentrated
------YY
Very low
some wasted sweeps

Sparse
-Y-Y-Y-Y
ok
ok

None
--------
ok
all wasted sweeps

All
YYYYYYYY
ok
ok

There's another instance of dead validator records not covered by this PR: incomplete deposits. If there's a valid deposit for a validator for 1ETH, that index will stay taken forever with current design. Should we tackle that case too? This feels more like an attack to bloat space than byproduct of honest usage, so not sure if it's relevant given how un-economic it is.

There's another instance of dead validator records not covered by this PR: incomplete deposits. If there's a valid deposit for a validator for 1ETH, that index will stay taken forever with current design. Should we tackle that case too? This feels more like an attack to bloat space than a by-product of honest usage, so not sure if it's relevant given how un-economic it is.

I'd say that's very definitely a different discussion to have. You'd have to burn the deposited funds to be able to reuse those indices and that seems unreasonable (at minimum it will be controversial).

I'd say that's very definitely a different discussion to have. You'd have to burn the deposited funds to be able to reuse those indices and that seems unreasonable (at minimum it will be controversial).

One way of not punching holes in the validator registry (but still keeping the same storage space used) is to not assign indices to validators until they are on the activation queue. This is equivalent to having a cache. There's no real reason to have an index assigned until the validator is ready to be included

Another way of employing the same attack is to deposit 1 ETH to the balance of already withdrawn validator. This is a dead end for this ETH but even in this case overwriting this validator record would be controversial as it is still burning one's ETH.

Another way of employing the same attack is to deposit 1 ETH to the balance of already withdrawn validator. This is a dead end for this ETH but even in this case overwriting this validator record would be controversial as it is still burning one's ETH.

Wouldn't this result in a withdrawal, so the attack window would be from the time of the deposit until the withdrawals clock ticked around to reduce the validator's index back to 0?

Another way of employing the same attack is to deposit 1 ETH to the balance of already withdrawn validator. This is a dead end for this ETH but even in this case overwriting this validator record would be controversial as it is still burning one's ETH.

Wouldn't this result in a withdrawal, so the attack window would be from the time of the deposit until the withdrawals clock ticked around to reduce the validator's index back to 0?

I think this attack is impossible at all. The overwriting will happen only to the validators with no balance. So if there is 1 ETH in the balance of some already withdrawn validator, that withdrawn validator will never be overwritten.
So no attack window at all.
def is_reusable_validator(validator: Validator, balance: Gwei, epoch: Epoch) -> bool:
    """
    Check if ``validator`` index can be re-assigned to a new deposit.
    """
    return (
        epoch > validator.withdrawable_epoch + REUSE_VALIDATOR_INDEX_DELAY
        and balance == 0
    )

Merging the core here, please use #3335 for follow-up discussions


[BUG] incorrect floating window closed in case multiple floating previews are opened

Describe the bug
I noticed that the change implemented in #115 made neovim close incorrect floating preview window. In case I have two floating windows open, :q will close the second one instead of the current floating window.
To Reproduce
Steps to reproduce the behavior:

go-to definition preview
from the floating window open another definition preview
try to close the newest floating window

Expected behavior
the currently focused floating window is closed
Screenshots
If applicable, add screenshots to help explain your problem.
Baseline (please complete the following information):

OS. e.g uname -a: MacOS
Neovim version nvim --version: NVIM v0.10.0-dev-2422+g0760d9868
URL to your current config (if public): https://github.com/embe221ed/scripts/tree/main/configs/nvim

commenting out the code from #115 fixes the issue for me

@Tebro have you experienced the issue above at all?

I have not seen this, but I use <C-w>c to close windows. I however just tested using :q instead and I cannot reproduce.

For the record, I can't reproduce this either. I'm on MacOS and Neovim built from master.

Stale


Question: Are Spatial Types like Geometry and Geography supported?

I tried to fully switch from System.Data.SqlClient to Microsoft.Data.SqlClient and I am getting a NULL response when calling the DbDataReader.GetFieldType(ordinal) method.
Where, the ordinal corresponds to the index of any of the columns with Data Types (Geography or Spatial) from the database.
To the extent, my tests are failing with the following information below.
The weird thing is, why the System.Data.SqlClient is in the picture of the exception?
I only referenced the Microsoft.Data.SqlClient and have no references at System.Data.SqlClient.
Please advise and thanks.
Stack Trace:
 TestBaseRepositorySpatialsCrud
   Source: BaseRepositorySpatialsTest.cs line 39
   Duration: 959 ms

  Message:
    Test method RepoDb.IntegrationTests.Types.Spatials.BaseRepositorySpatialsTest.TestBaseRepositorySpatialsCrud threw exception:
    System.IO.FileNotFoundException: Could not load file or assembly '_System.Data.SqlClient, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a_'. The system cannot find the file specified.

Also confirm did you cover all namespace changes when transitioning, as documented here: porting-cheat-sheet

Hi, I have revisited the cheat sheet and it seems all necessary changes for the namespaces were covered by my changes. The version is on .NET Standard 2.0. Basically, the existing working Integration Tests of my ORM library is not working when I completely changed all the references from System.Data.SqlClient and to Microsoft.Data.SqlClient.
I have give up debugging it due to its weird loading of System.Data.SqlClient.

Could you verify your tests don't reference any old NuGet packages related to System.Data.SqlClient as well?
Maybe you can list your test dependencies loaded in test runtime that we can look into?

Here is my current solution that is failing.
Btw, when I tried to reference back the System.Data.SqlClient, the exception has changed to a conversion problem (Convertible Exception) (ie: SqlHeirarchyId to IBinarySerializer and SqlGeography to IBinarySerializer etc).

The exception is:
 TestSqlConnectionOthersCrudAsync
   Source: SqlConnectionOthersTest.cs line 149
   Duration: 17 ms

  Message:
    Test method RepoDb.IntegrationTests.Types.Others.SqlConnectionOthersTest.TestSqlConnectionOthersCrudAsync threw exception:
    System.AggregateException: One or more errors occurred. (Could not load file or assembly 'System.Data.SqlClient, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.) ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Data.SqlClient, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
  Stack Trace:
    RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type, ObjectHandleOnStack keepAlive)
    RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
    TypeNameParser.ResolveType(Assembly assembly, String[] names, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
    TypeNameParser.ConstructType(Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
    TypeNameParser.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
    Type.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError)
    SqlConnection.CheckGetExtendedUDTInfo(SqlMetaDataPriv metaData, Boolean fThrow) line 1870
    SqlDataReader.GetValueFromSqlBufferInternal(SqlBuffer data, _SqlMetaData metaData) line 2778
    SqlDataReader.GetValue(Int32 i) line 2668
    lambda_method(Closure , DbDataReader )
    DataReader.ToEnumerableAsync[TEntity](DbDataReader reader, IDbConnection connection, IDbTransaction transaction) line 66
    DbConnectionExtension.ExecuteQueryAsyncInternal[TEntity](IDbConnection connection, String commandText, Object param, Nullable`1 commandType, Nullable`1 commandTimeout, IDbTransaction transaction, Boolean skipCommandArrayParametersCheck) line 408
    DbConnectionExtension.QueryAsyncInternalBase[TEntity](IDbConnection connection, IEnumerable`1 fields, QueryGroup where, IEnumerable`1 orderBy, Nullable`1 top, String hints, String cacheKey, Int32 cacheItemExpiration, Nullable`1 commandTimeout, IDbTransaction transaction, ICache cache, ITrace trace, IStatementBuilder statementBuilder) line 1336
    --- End of inner exception stack trace ---
    Task`1.GetResultCore(Boolean waitCompletionNotification)
    SqlConnectionOthersTest.TestSqlConnectionOthersCrudAsync() line 169

Interesting!
That does lead to a possibility of your tests referencing System.Data.SqlClient or related types.
Mostly I would expect problems when your tests reference classes from Microsoft.SqlServer.Server namespace as we changed ours to Microsoft.Data.SqlClient.Server namespace to avoid clash, as also mentioned to porting-cheat-sheet attached above.
I see you're working on RepoDb, could you provide me link me to your branch where you have your app changes and some basic scripts to reproduce the problem, if you may allow me to review those?

You are welcome to do so examining RepoDb branches, however just last night I have resumed the support to System.Data.SqlClient. So my Core library is now again referencing that librart.
After doing that, my tests are still using Microsoft.Data.SqlClient and the exception has changed to Conversion problem. The problem only occurs to Spatials type.
Please allow me to reproduce it in a very few lines of codes so you guys can debug it. Thanks for the attention on this.

A clean standalone repro would be ideal :)

Hi @mikependon
Just checking in, do you still need support on this issue?

Please have a look at here. My first issue was actually replicated here.

Now, without doing anything, just create a DB which is also attached on the solution. Then maybe fix the ConnectionString and simply run the solution.
I am targeting 3 problems here.
You will encounter this problem.

Then, install the Microsoft.SqlServer.Types and re-run again. You will encounter the issue below.

Lastly, install the System.Data.SqlClient. You will encounter the issue below.

RepoDb completely mimic this problem on my own compiler. Please advise.

@mikependon
I see you're using .NET Core as target framework where the driver doesn't support Geometry, Geography and HierarchyId types yet. We have issues open for the same: https://github.com/dotnet/SqlClient/issues/30 and https://github.com/dotnet/SqlClient/issues/322
But when targeting .NET framework, you should have no issues.. and I also tested with your repro, it seems to works well!

When are you supporting such Data Types?

@mikependon In case it helps, EF Core supports SQL Server spatial columns on .NET Core by mapping them to types from the community NTS project
These aren't the same native SQL Server types exposed on .NET Framework, but a lot of the same functionality is supported. Docs: https://docs.microsoft.com/en-us/ef/core/modeling/spatial

@mikependon Just to clarify again before I start digging, there is SQL to generate a schema in the code you posted. Is this a fixed schema? That is, you're trying to map EF to this schema without changing the schema?

Is this a fixed schema?

Yes.
Please remove EF in the picture, it is a plain ADO.NET actually. Though I caught the exceptions from the Integration Tests of my own ORM when I started to support MDS.

In case it helps, EF Core supports SQL Server spatial columns on .NET Core by mapping them to types from the community NTS project

I am planning to use the plain  Microsoft.SqlServer.Types here. It has been acknowledge that it is not yet supported in Core framework (ie: NetStandard?). Though I will look at this.

@mikependon Sorry, my last comment about the schema was intended for a different issue. I posted it here by mistake.

@ajcvickers no worries. Thanks

@mikependon
These types currently do not exist in .NET Core in the same namespace hence they are not supported by the driver. SMO Package exposes them only for .NET Framework and not .NET Core.
Our issues are kept open to probably implement them internally in a different namespace, which is not prioritized yet.

Right. This is noted. I will revisit this issue moving forward once the type is present in .Net Core. Maybe, just leave this one open.

Hi @mikependon
We have issues #30 and #322 open for the missing types requirement. You may track the same in future.

You cannot use those types with Microsoft.Data.SqlClient, because they build against System.Data.SqlClient and use types declared here.
Only solution is to manually build dotMorten.Microsoft.SqlServer.Types against  Microsoft.Data.SqlClient
Ideally Microsoft could fix it by providing more flexible mechanims to load UDT types


chore: Updating invite user event

Description

Updating invite user event

Fixes #16152
Type of change

Updating analytics

How Has This Been Tested?

Tested local browser consoles.

Manual

Checklist:
Dev activity

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Test plan has been approved by relevant developers
[ ] Test plan has been peer reviewed by QA
[ ] Cypress test cases have been added and approved by either SDET or manual QA
[ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
[ ] Added Test Plan Approved label after reveiwing all Cypress test

/ok-to-test sha=daa5be4


[BUG] ruleMatchCache match error

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
2023-11-09 17:56:51 [shenyu-netty-kqueue-5] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector match success from default strategy
2023-11-09 17:56:51 [shenyu-netty-kqueue-5] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector success match , selector name :test-selector
2023-11-09 17:56:51 [shenyu-netty-kqueue-5] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule success match , rule name :default

Expected Behavior
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector match success from default strategy
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector success match , selector name :test-selector
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule match path from default strategy
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule success match , rule name :test-rule

Steps To Reproduce

2023-11-09 17:51:33 [shenyu-netty-kqueue-4] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector match success from default strategy
2023-11-09 17:51:33 [shenyu-netty-kqueue-4] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector success match , selector name :default
2023-11-09 17:51:33 [shenyu-netty-kqueue-4] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule match path from default strategy
2023-11-09 17:51:33 [shenyu-netty-kqueue-4] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule success match , rule name :default

1. add a selector and rule，request

2023-11-09 17:56:51 [shenyu-netty-kqueue-5] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector match success from default strategy
2023-11-09 17:56:51 [shenyu-netty-kqueue-5] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector success match , selector name :test-selector
2023-11-09 17:56:51 [shenyu-netty-kqueue-5] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule success match , rule name :default

2. restart shenyu，request
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector match success from default strategy
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign selector success match , selector name :test-selector
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule match path from default strategy
2023-11-09 17:58:07 [shenyu-netty-kqueue-2] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - sign rule success match , rule name :test-rule

Environment
ShenYu version(s): 2.6.0

Debug logs
No response
Anything else?
No response

/ means match all, the privilege is highest.

/ means match all, the privilege is highest.
In same configuration
Before restarting shenyu, match selector name :test-selector and rule name :default
After restarting shenyu, match selector name :test-selector and rule name :test-rule

because findFirst when data sync to gateway

thank you for your reply. I suggest that the logic for clearing the rule match cache can be cleared through path matching.

thank you for your reply. I suggest that the logic for clearing the rule match cache can be cleared through path matching.

you can modify the ruhe to adapt the service, and avoid using /, /**

thank you for your reply. I suggest that the logic for clearing the rule match cache can be cleared through path matching.

you can modify the ruhe to adapt the service, and avoid using /, /**

ok


WIP: re-enable put_mutable_diff

this test stills sometimes segfault, which is when this assertion is violated:
...put_mutable...
    anemone_block_t *thing = pool->last;\
    ARRAY_PAYLOAD(t,x)[ix] = v;\
    assert (thing == pool->last);\

pretty weird...

Would be interesting to try:
#if ICICLE_ASSERT
if (thing != pool->last) {
  // print out thing + pool->last
}
#endif

oh.. so I only enabled icicle assertions (-DICICLE_ASSERT=1) for the Sea/Psv tests. might be worth enabling them here and elsewhere if you haven't already

this should be good now too (the problem was in the test, poking an array from haskell to C without allocating a rounded up number of bytes)

👍


Upgrade webmock and vcr

Merge after: #303

Coverage decreased (-33.2%) to 63.18% when pulling 7a7a65075dff6837046fd75244c8a73e0fcf9d20 on samphilipd:upgrade_webmock_and_vcr into fb31976794c2ca87af767d626c7b8edeafeca704 on piotrmurach:master.

Coverage decreased (-33.2%) to 63.18% when pulling 7a7a65075dff6837046fd75244c8a73e0fcf9d20 on samphilipd:upgrade_webmock_and_vcr into fb31976794c2ca87af767d626c7b8edeafeca704 on piotrmurach:master.

Coverage decreased (-33.9%) to 62.508% when pulling 7a7a65075dff6837046fd75244c8a73e0fcf9d20 on samphilipd:upgrade_webmock_and_vcr into fb31976794c2ca87af767d626c7b8edeafeca704 on piotrmurach:master.


rtadduser is broken on debian 8

when adding user, gets stuck in infinite loop in
/usr/local/bin/rtadduser line :104 & 107
edit: was issue with pryroscope addition.

Will look into this if you can explain more fully your edit. I am not familiar with pryoscope, is it standard part of debian 8 or something you have added, and any information on how it is impacting the script.

pyroscrope is a rtorrent addon to enable some additional features, once i had it configured i am no longer able to create a new user due to a bug in the rtadduser script.
here is the diff.
/usr/local/bin/rtadduser is modified
rtadduser is from here.
root@GIGA:~# diff /usr/local/bin/rtadduser rtadduser
10,11c10,11
< cronline1="@reboot sleep 10; /usr/local/bin/rtcheck rtorrent"
< cronline2="*/10 * * * * /usr/local/bin/rtcheck rtorrent"

cronline1="@reboot sleep 10; /usr/local/bin/rtcheck irssi rtorrent"
cronline2="/10 * * * * /usr/local/bin/rtcheck irssi rtorrent"
102,103c102,103
<        base_low=$(grep "port_range" /home/$base_user/rtorrent/rtorrent.rc | sed 's/[^0-9-]//g' | cut -d- -f1)
<        base_high=$(grep "port_range" /home/$base_user/rtorrent/rtorrent.rc | sed 's/[^0-9-]*//g' | cut -d- -f2)

   base_low=$(grep "port_range =" /home/$base_user/.rtorrent.rc | sed 's/[^0-9-]*//g' | cut -d- -f1)
   base_high=$(grep "port_range =" /home/$base_user/.rtorrent.rc | sed 's/[^0-9-]*//g' | cut -d- -f2)

123,124c123,124
<              compare_low=$(grep "port_range =" /home/$compare_user/rtorrent/rtorrent.rc | sed 's/[^0-9-]//g' | cut -d- -f1)
<              compare_high=$(grep "port_range =" /home/$compare_user/rtorrent/rtorrent.rc | sed 's/[^0-9-]//g' | cut -d- -f2)

         compare_low=$(grep "port_range =" /home/$compare_user/.rtorrent.rc | sed 's/[^0-9-]*//g' | cut -d- -f1)
         compare_high=$(grep "port_range =" /home/$compare_user/.rtorrent.rc | sed 's/[^0-9-]*//g' | cut -d- -f2)

283c283
< get_scripts .rtorrent.rc $home/rtorrent/rtorrent.rc

get_scripts .rtorrent.rc $home/.rtorrent.rc
295,297c295,297
< sed -i "s//$user/g" $home/rtorrent/rtorrent.rc
< sed -i "s/port_range = 51001-51250/port_range = $newrange/g" $home/rtorrent/rtorrent.rc
< sed -i "s/network.scgi.open_port = <IP_ADDRESS>:5000/network.scgi.open_port = <IP_ADDRESS>:$newscgi/g" $home/rtorrent/rtorrent.rc

sed -i "s//$user/g" $home/.rtorrent.rc
sed -i "s/port_range = 51001-51250/port_range = $newrange/g" $home/.rtorrent.rc
sed -i "s/network.scgi.open_port = <IP_ADDRESS>:5000/network.scgi.open_port = <IP_ADDRESS>:$newscgi/g" $home/.rtorrent.rc

This is not a bug in the script.
It seems pyroscope has made changes to the script. Use the original script and you should not have any problems.


Error logic and multi components

Multicomponents should be possible now, although that has not been tested, yet.
The error computation and rating now is the same as for numdiff without extra options.

@endJunction, please have a look.


Make OrderedCollection an extension trait of BTreeMap...

...instead of a wrapper struct. Also remove pop() because it's just remove(), and find() because it's just get().
I figured I'd at least make the change so you could compare the before/after. It's not a vast improvement or anything, but I think it's a little bit nicer.

Thanks!
Since this trait is only used by UniquePriorityQueue whose context makes the underlying intention wrt invariants clear (i.e. all keys are unique and will be pop'ed in order).
Given that the trait is so small, it could even be included in unique_priority_queue.rs ...
Is there a reason for not including update_value and find_min in the trait?

OK, I see that update_min and find_min ARE in the trait (I must have missed them).
I'd say this is an improvement in readability, and I'd like to merge it. Feel free to add yourself to the CONTRIBUTORS file as well, if you don't mind.
And thanks for the cleanup! :+1:

Cool, thanks! Sorry, I'm not very good at keeping up-to-date with Github notifications. Regarding your previous comment/question, I agree that it could be included in unique_priority_queue.rs.


Anti-Aliasing causes white pixels at the edge of objects

Happens on every AA level, seems to only happen with "Remove Color Banding" turned on. (Thanks runeite for posting this solution)

Turning "Remove Color Banding" on fixes it for me

Fixed in #9354


A way to reset list-group-horizontal back to being vertical

The responsive horizontal list group classes are great, however it seems like they are limited in that all lists must default to being vertical, and then can only become horizontal at certain breakpoints going up.
Current Non-Ideal Solution
if I want a list group to appear horizontal by default, and then appear vertical at the MD+ sizes, I have to do this and duplicate my HTML

 ...

 ...

Proposed Solutions
Ideally, I'd love to see something like this that adds some responsive list-group-vertical-{size} classes

 ...

or possibly even list-group-horizontal-{size}-only classes to be more explicit about when it should be horizontal

 ...

Going to close as a won't fix—this just gets messy on our side as we'd end up having two sets of classes that do the opposite of one another. I don't see the usefulness in adding all that just yet.

I can understand that reasoning for sure.  So right now is the best way to do this what i have above with hiding/showing the two different list groups?
It's just strange to me that I can only make the list group vertical by default, and then become horizontal as screen size increases - no other way


Restore Apache License back to unmodified original

Please see https://github.com/kubernetes/kubernetes/commit/d30db1f9a915aa95402e1190461469a1889d92be
Gist is that the appendix on the bottom should be left unmodified and only modified when that notice is added to individual files.

This change was added in a different commit.


404 error requesting timeout middleware page

Hi,
when requesting timeout middleware page at this link:
http://expressjs.com/en/resources/middleware/connect-timeout.html
Express web site return 404 page

This page is at http://expressjs.com/en/resources/middleware/timeout.html. Fixed the link.  Thanks for reporting!


Update to multipath draft04

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


Fix doxygen

Original report (archived issue) by Louise Poubel (Bitbucket: chapulina, GitHub: chapulina).

Documentation generation is broken right now.
I started porting the documentation from ign-math in branch doxygen, but it's still incomplete.

API docs look good now: https://ignitionrobotics.org/api/common/3.5/classes.html


Reset: Incorrect line height for body

Info
In our reset.css we are setting the line-height property to --goa-line-height-2. It should be set to goa-line-height-3
Acceptance Criteria:

Default line height in our body text, so a standard <p> tag with no styling, is goa-line-height-3, or 28px

:tada: This issue has been resolved in version 1.17.0-alpha.60 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 4.17.0-alpha.29 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 1.21.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 4.21.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 3.0.0-alpha.4 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 3.0.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


CFP: Support PROXY Protocol from L2 Aware LB and CNI

非常开心看到新版中新增了L2 Aware LB功能，让cilium可以原生支持LoadBalancers类型，想询问一下下一步有没有支持PROXY Protocol的计划，大多L7层的应用比如nginx、traefik已经支持了PROXY Protocol，但是cni转发时会把来源ip给弄丢，所以我认为PROXY Protocol还是很有必要的，希望能看到下一步的支持计划
I am very happy to see that the L2 Aware LB function has been added in the new version, so that cilium can natively support the LoadBalancers type. I would like to ask if there is any plan to support the PROXY protocol in the next step, mainly because L7 layer applications such as nginx and traefik already support the PROXY protocol. , but the source ip is lost when cni forwards, so I think PROXY Protocol is still necessary, and I hope to see the next support plan

cc @dylandreimerink FYI


Fix 4357: Optimize logs for shenyu-admin

Optimize logs for shenyu-admin

Codecov Report

Merging #4358 (940caac) into master (20eebb7) will decrease coverage by 0.10%.
The diff coverage is 15.90%.

@@             Coverage Diff              @@
##             master    #4358      +/-   ##
============================================
- Coverage     68.35%   68.25%   -0.10%
+ Complexity     7505     7499       -6
============================================
  Files          1020     1020
  Lines         28787    28783       -4
  Branches       2566     2562       -4
============================================
- Hits          19677    19646      -31
- Misses         7573     7596      +23
- Partials       1537     1541       +4

Impacted Files
Coverage Δ

...dmin/listener/AbstractNodeDataChangedListener.java
92.95% <0.00%> (ø)

.../apache/shenyu/admin/listener/etcd/EtcdClient.java
59.25% <0.00%> (ø)

...tener/http/HttpLongPollingDataChangedListener.java
5.88% <0.00%> (ø)

...nyu/admin/listener/nacos/NacosDataChangedInit.java
70.00% <0.00%> (ø)

...admin/listener/nacos/NacosDataChangedListener.java
58.82% <0.00%> (ø)

...u/admin/listener/websocket/WebsocketCollector.java
78.57% <0.00%> (ø)

...dmin/listener/websocket/WebsocketConfigurator.java
36.36% <0.00%> (ø)

...yu/admin/listener/websocket/WebsocketListener.java
70.00% <0.00%> (ø)

...u/admin/service/impl/DashboardUserServiceImpl.java
75.21% <0.00%> (ø)

.../shenyu/admin/service/impl/SandboxServiceImpl.java
7.93% <0.00%> (-0.27%)
:arrow_down:

... and 30 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

LOG.error("duplicate key exception {}", exception.getMessage()); can not print stackTrace.

pls resolved conflicts

LOG.error("duplicate key exception {}", exception.getMessage()); can not print stackTrace.

Modified

pls resolved conflicts

Resolved

what about others?


Question related to increasing number of label id and task number

When I create new task with labels, the CVAT will automatically create new id for each label I created. I deleted the task after annotation was finished.
Then, when I create new task with same set of labels' name, the label id will increase which ignores the fact that those old labels already exist. There is another problem. When I have deleted the old tasks, the task number keeps increasing. I would like to know if there is any proper way to delete old task and old label without completely deleting all the volumes ?
Thanks.

Please use Gitter for such questions next time.
IDs for the task (and labels) are generated by the database and it's expected behavior: explanation is here https://wiki.postgresql.org/wiki/FAQ#Why_are_there_gaps_in_the_numbering_of_my_sequence.2FSERIAL_column.3F_Why_aren.27t_my_sequence_numbers_reused_on_transaction_abort.3F
Task and label linked with one to many relationship, so each label can be related only with one task. So, increasing of label ID is expected behavior too.
So, deleting the task with UI is the proper way to delete it and it removes all related data from the filesystem and the database.
Does it answer your question?

Please use Gitter for such questions next time.
IDs for the task (and labels) are generated by the database and it's expected behavior: explanation is here https://wiki.postgresql.org/wiki/FAQ#Why_are_there_gaps_in_the_numbering_of_my_sequence.2FSERIAL_column.3F_Why_aren.27t_my_sequence_numbers_reused_on_transaction_abort.3F
Task and label linked with one to many relationship, so each label can be related only with one task. So, increasing of label ID is expected behavior too.
So, deleting the task with UI is the proper way to delete the task and it removes all related data from the filesystem and the database.
Does it answer your question?

Thank you very much for your answering. It is highly appreciated !


[Bug] doesn't rebuild when translation files change

🐛 Bug
Describe the bug
doesn't rebuild when translation file change

this patch only available in nightly builds


Fix readFile in Cardano.Node.Configuration.Topology

We should catch and render IOExceptions that may be thrown from the use of readFile. There are other readFiles in the repo that I will get to when I start removing exception throwing.
Style changes.

bors r+


Use prettier 1/n (2nd try)

Summary
This diff uses prettier 0.19, which has some improvements over the previous release. In this PR, I mostly only included stylistic changes that we already enforce in Jest but somehow aren't enforced properly through eslint.  I think we should merge this one, even if we aren't fully adopting prettier yet.

Ran node_modules/.bin/prettier --write "packages/*/src/**.js" --single-quote --trailing-comma=all --bracket-spacing=false
See https://github.com/facebook/jest/pull/2975 for the first PR
Found a bug: https://github.com/prettier/prettier/issues/795
Found a bug: https://github.com/prettier/prettier/issues/794

To fully adopt prettier the project needs to make a bunch more fixes and decisions. Running the command from above rewrites a ton of files that I manually reverted.
Test plan
yarn test

Let's do it!


Compatible Devices

Hello, the tk102b device coban, it is compatible with traccar?

Yes, it is. See following page:
https://www.traccar.org/ports-for-tk-gt-and-other-gps-devices/


null metadata returned from websites api

Steps to Reproduce
Visit https://ocw-studio-rc.odl.mit.edu/api/websites/?type=course in an incognito window
Expected Behavior
Courses without any metadata are not returned
Actual Behavior
They are returned, and the resulting courses break the use of home_course_cards.html in ocw-hugo-themes as they have no metadata set

Part of the issue here is that imported OCW courses get a populated Website.metadata field, which is what's returned in the API url above.  But new courses in ocw-studio will have metadata as a separate WebsiteContent object of type sitemetadata, and their Website.metadata field is never populated.  There should be more consistency.
When OCW sites are imported, a WebsiteContent of type sitemetadata should be created instead, and the Website.metadata field should be removed.  The serializer used in the API query could then return the contents of that WebsiteContent object as the website metadata, and exclude any websites that don't have it.
However, if the metadata objects for new websites don't have expected fields (and currently none do), then the API response would still break home_course_cards.html in ocw-hugo-themes.  This could be avoided by also filtering websites by the WebsiteStarter specific to OCW, if that starter config accurately specified the content of the metadata (which again it currently does not).
The short term fix, which would eventually have to be reversed, is to filter the API results by website.metadata__isnull=False, which would limit the results to imported OCW sites.

@mbertrand What if we could add website.metadata_isnull as a filterable query string parameter, like type? This way, API queries that require metadata can intentionally filter out results that don't have it.

@gumaerc That would be the temporary quick fix, but longer term that website.metadata field should probably just go away because the metadata for all new sites are stored in a WebsiteContent object of type sitemetadata.  Currently, only imported OCW sites have a populated metadata field; that import process should be changed to store the metadata in a WebsiteContent object as well, but I don't think it's possible yet because we don't have the proper site config for it.

I'll make a PR for the bandaid approach but it will have to be reversed eventually.


Show only user variables in Variable explorer

From<EMAIL_ADDRESS>on 2013-12-10T22:21:42Z
Is it possible to list only user-created variables in the explorer? If the "Exclude unsupported data types" tick is checked, I don't see objects like, for example, an xaml.objectify output, while if this is tick unchecked, there are tons of other symbols making the explorer really hard to use. I'm a newbie to Python so I don't know how hard it is to implement the filter I want but at least I think an acceptable and implementable solution would be to keep a list of symbols that were created on startup or by subsequent import calls.
Spyder 2.2.4, Python 2.7.5, Windows 7 x64
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=1676

From ccordoba12 on 2013-12-11T17:20:05Z
It won't be so easy but you are making a good point here. We'll see what we can do about it.
Labels: Cat-VariableExplorer MS-v2.4

Hi !
I know this is a bit of an old request, but I do agree with Peter. A filter would be really a plus, as long as user's classes cannot be accepted as 'supported'. I intensively use the variable explorer and create my own classes, and have the 'Exclude unsupported data types' un-ticked literally overcharge the explorer.

We're working to improve this for Spyder 4.0 (which we hope to release in June/July 2017)


[Fix] Invalid typing for BufferReader/Writer options.

Fixes #15

This looks really nice, thank you for that quick fix!


Update README.md, make "What did we do" clearer

Lifting @woutdp's answer from here!

Thank you :fire:


fix:34329-fixed upload svg logo in the workspace api

Fix-34329

Fixed the workspace setting upload logo api to accept the svg type.

Implemented a method isSvgSafe to validate svg. If svg is safe it will be uploaded else, we will show Please provide valid svg message to the user.

Added the unit test case for the api to accept the svg.

Snapshot:

Before:

After:

In case of invalid svg(containing script tag):

Summary by CodeRabbit

New Features

Added support for uploading SVG images as workspace logos with enhanced security checks for malicious code patterns.

Tests

Implemented tests to ensure valid and invalid SVG uploads are correctly handled and validated.

Hi @somangshu , @riteshkew:  Could you please add the reviewer for this PR.

Hi @abhvsn, @nidhi-nair, Could you please review the PR.

Hi @raushan3737 ! Apologies for not being able to pick up this PR for review. We're currently backed up on tasks in our backlog but we've put this PR into the backlog and will be getting to this soon. Appreciate your patience with us. 🙏🏽

Hi @nidhi-nair, Can you please review this PR if possible. It has been opened since last 2 month.
Thank you.


poetry: update inspire-schemas to v61.3.7

This should have been part of inspirehep/inspirehep#1132, but seems to have been forgotten for some reason.

BTW, this will require remigration (I don't know how we keep track of this now).

@michamos you can add it in the commit message


Unable to create record: No 'To' number is specified

If I make an outbound call using the docs way of doing it and enter a To phone number in the form input and use the following code I get the following error and traceback. Strangely, the outbound call goes through successfully to the typed in To number and the TwiML gets executed if the To number you call presses any key.
account_sid = 'XXXXXXXXXX'
auth_token = 'XXXXXXXXXXX'
client = Client(account_sid, auth_token)

if request.method == 'POST' and request.POST.get('To') is not None:
    call = client.calls.create(twiml='<Response><Say>Ahoy there!</Say></Response>',to=request.POST.get('To'),from_='+12345678909')

Traceback (most recent call last):
  File "/home/name/.local/share/virtualenvs/project_name/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/name/.local/share/virtualenvs/project_name/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/name/.local/share/virtualenvs/project_name/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/name/project_name/phone/views.py", line 148, in phone
    call = client.calls.create(twiml='<Response><Say>Ahoy there!</Say></Response>',to=request.POST.get('To'),from_='+12345678909')
  File "/home/name/.local/share/virtualenvs/project_name/lib/python3.8/site-packages/twilio/rest/api/v2010/account/call/__init__.py", line 146, in create
    payload = self._version.create(method='POST', uri=self._uri, data=data, )
  File "/home/name/.local/share/virtualenvs/project_name/lib/python3.8/site-packages/twilio/base/version.py", line 205, in create
    raise self.exception(method, uri, response, 'Unable to create record')
twilio.base.exceptions.TwilioRestException:

Hm. I think I would need to see your app.py and quickstart.js files to find out what's going on here, but I'll give you some recommendations for what I think may be going on.
I'm assuming by 'the docs way of doing it' you are referring to this page?
With this Quickstart, we're calling device.connect() when you're attempting to make an outbound call. This will then trigger a request to the TwiML application you created. The TwiML application is pointed to your application's /voice endpoint (you configured this in your Twilio Console).
It may be helpful to use a print() command within your /voice endpoint in your app.py file to check out what's being sent over from that device.connect() call. Since your code above is expecting a To: field, make sure that you're sending over a To: field from your device.connect({ params }) invocation in makeOutgoingCall in quickstart.js.
There is an open PR right now that has the updates we discussed last week. I'd check out the makeOutgoingCall function in quickstart.js and notice how we're passing the To: parameter to your TwiML application (and thereby your /voice endpoint). You may need to change your project's makeOutgoingCall method to use To: rather than phone: so that it matches your code above.

I am using the newer version of the quickstart.js code that you made an update to where it uses To. Quickstart.js is the same as yours except the token url path. The token python function is the same as yours and the other voice function to make the call just contains just the code from the docs which is what you see above.
Yes I am referring to that page of the docs.
The To field phone number does get printed when I make the call in my terminal when I do print(request.POST.get('To')) and print(call.sid) also shows something.

Hm... Can you push your project up to a public GitHub repo? Or can you copy and paste your app.js and quickstart.js files here? Alternatively, you can email me at the Twilio email in my GitHub profile.

Webhooks are setup to /phone/ which is where function phone() lives.
def token(request):
    #This should be a phone number from the user from the database
    identity = 'user'

    # Create access token with credentials
    #account sid, api sid, api secret
    access_token = AccessToken('XXXXXXXXX', 'XXXXXXXXX', 'XXXXXXXXXx', identity=identity)

    # Create a Voice grant and add to token
    #outgoing_application_sid = twiml application for webhooks
    voice_grant = VoiceGrant(
        outgoing_application_sid='XXXXXXXXXx',
        incoming_allow=True, # Optional: add to allow incoming calls
    )
    access_token.add_grant(voice_grant)

    token = access_token.to_jwt()

    return JsonResponse({'token': token.decode('utf-8'), 'identity':identity})

@csrf_exempt
def phone(request):
    form = PhoneForm()

    account_sid = 'XXXXXXXX'
    auth_token = 'XXXXXXXX
    client = Client(account_sid, auth_token)

    if request.method == 'POST' and request.POST.get('To') is not None:
        client = Client('XXXXXXXXXX','XXXXXXXXX')
        call = client.calls.create(url=request.build_absolute_uri() + '/phone/',to=str(request.POST.get('To')),from_='+12345678909')
        print(call.sid)

    return render(request, 'phone.html', { 'form': form })

<script>

$(function () {
  const speakerDevices = document.getElementById("speaker-devices");
  const ringtoneDevices = document.getElementById("ringtone-devices");
  const outputVolumeBar = document.getElementById("output-volume");
  const inputVolumeBar = document.getElementById("input-volume");
  const volumeIndicators = document.getElementById("volume-indicators");
  const callButton = document.getElementById("button-call");
  const outgoingCallHangupButton = document.getElementById("button-hangup-outgoing");
  const callControlsDiv = document.getElementById("call-controls");
  const audioSelectionDiv = document.getElementById("output-selection");
  const getAudioDevicesButton = document.getElementById("get-devices");
  const logDiv = document.getElementById("log");
  const incomingCallDiv = document.getElementById("incoming-call");
  const incomingCallHangupButton = document.getElementById(
    "button-hangup-incoming"
  );
  const incomingCallAcceptButton = document.getElementById(
    "button-accept-incoming"
  );
  const incomingCallRejectButton = document.getElementById(
    "button-reject-incoming"
  );
  const phoneNumberInput = document.getElementById("phone-number");
  const incomingPhoneNumberEl = document.getElementById("incoming-number");
  const startupButton = document.getElementById("startup-button");
const muteButton = document.getElementById("button-mute");

  let device;
  let token;

  // Event Listeners

  callButton.onclick = (e) => {
    e.preventDefault();
    makeOutgoingCall();
  };
  getAudioDevicesButton.onclick = getAudioDevices;
  speakerDevices.addEventListener("change", updateOutputDevice);
  ringtoneDevices.addEventListener("change", updateRingtoneDevice);

  // SETUP STEP 1:
  // Browser client should be started after a user gesture
  // to avoid errors in the browser console re: AudioContext
  startupButton.addEventListener("click", startupClient);

  // SETUP STEP 2: Request an Access Token
  async function startupClient() {
    log("Requesting Access Token...");

    try {
      const data = await $.getJSON("/phone/token/");
      log("Got a token.");
      token = data.token;
      setClientNameUI(data.identity);
      intitializeDevice();
    } catch (err) {
      console.log(err);
      log("An error occurred. See your browser console for more information.");
    }
  }

  // SETUP STEP 3:
  // Instantiate a new Twilio.Device
  function intitializeDevice() {
    logDiv.classList.remove("hide");
    log("Initializing device");
    device = new Twilio.Device(token, {
      debug: true,
      answerOnBridge: true,
      // Set Opus as our preferred codec. Opus generally performs better, requiring less bandwidth and
      // providing better audio quality in restrained network conditions. Opus will be default in 2.0.
      codecPreferences: ["opus", "pcmu"],
    });

    addDeviceListeners(device);

    // Device must be registered in order to receive incoming calls
    device.register();
  }

  // SETUP STEP 4:
  // Listen for Twilio.Device states
  function addDeviceListeners(device) {
    device.on("registered", function () {
      log("Twilio.Device Ready to make and receive calls!");
      callControlsDiv.classList.remove("hide");
    });

    device.on("error", function (error) {
      log("Twilio.Device Error: " + error.message);
    });

    device.on("incoming", handleIncomingCall);

    device.audio.on("deviceChange", updateAllAudioDevices.bind(device));

    // Show audio selection UI if it is supported by the browser.
    if (device.audio.isOutputSelectionSupported) {
      audioSelectionDiv.classList.remove("hide");
    }
  }

  function toggleMute(call) {
    if (call && call.status() === "open") {
        call.mute(!call.isMuted());
        log(`Call is muted: ${call.isMuted()}`)
     }
  }

  // MAKE AN OUTGOING CALL

  async function makeOutgoingCall() {
    var params = {
      // get the phone number to call from the DOM
      To: phoneNumberInput.value,
    };

    if (device) {
      log(`Attempting to call ${params.To} ...`);

      // Twilio.Device.connect() returns a Call object
      const call = await device.connect({ params });

      // add listeners to the Call
      // "accepted" means the call has finished connecting and the state is now "open"
      call.on("accept", updateUIAcceptedOutgoingCall);
      call.on("disconnect", updateUIDisconnectedOutgoingCall);
      call.on("cancel", updateUIDisconnectedOutgoingCall);
      call.on("reject", updateUIDisconnectedOutgoingCall);

      outgoingCallHangupButton.onclick = () => {
        log("Hanging up ...");
        call.disconnect();
      };

  muteButton.onclick = () => {
     toggleMute(call);
   }

    } else {
      log("Unable to make call.");
    }
  }

  function updateUIAcceptedOutgoingCall(call) {
    log("Call in progress ...");
    callButton.disabled = true;
    outgoingCallHangupButton.classList.remove("hide");
    volumeIndicators.classList.remove("hide");
    bindVolumeIndicators(call);
  }

  function updateUIDisconnectedOutgoingCall() {
    log("Call disconnected.");
    callButton.disabled = false;
    outgoingCallHangupButton.classList.add("hide");
    volumeIndicators.classList.add("hide");
  }

  // HANDLE INCOMING CALL

  function handleIncomingCall(call) {
    log(`Incoming call from ${call.parameters.From}`);

    //show incoming call div and incoming phone number
    incomingCallDiv.classList.remove("hide");
    incomingPhoneNumberEl.innerHTML = call.parameters.From;

    //add event listeners for Accept, Reject, and Hangup buttons
    incomingCallAcceptButton.onclick = () => {
      acceptIncomingCall(call);
    };

    incomingCallRejectButton.onclick = () => {
      rejectIncomingCall(call);
    };

    incomingCallHangupButton.onclick = () => {
      hangupIncomingCall(call);
    };

muteButton.onclick = () => {
  toggleMute(call);
}

    // add event listener to call object
    call.on("cancel", handleDisconnectedIncomingCall);
    call.on("disconnect", handleDisconnectedIncomingCall);
    call.on("reject", handleDisconnectedIncomingCall);
  }

  // ACCEPT INCOMING CALL

  function acceptIncomingCall(call) {
    call.accept();

    //update UI
    log("Accepted incoming call.");
    incomingCallAcceptButton.classList.add("hide");
    incomingCallRejectButton.classList.add("hide");
    incomingCallHangupButton.classList.remove("hide");
  }

  // REJECT INCOMING CALL

  function rejectIncomingCall(call) {
    call.reject();
    log("Rejected incoming call");
    resetIncomingCallUI();
  }

  // HANG UP INCOMING CALL

  function hangupIncomingCall(call) {
    call.disconnect();
    log("Hanging up incoming call");
    resetIncomingCallUI();
  }

  // HANDLE CANCELLED INCOMING CALL

  function handleDisconnectedIncomingCall() {
    log("Incoming call ended.");
    resetIncomingCallUI();
  }

  // MISC USER INTERFACE

  // Activity log
  function log(message) {
    logDiv.innerHTML += `<p class="log-entry">>  ${message} </p>`;
    logDiv.scrollTop = logDiv.scrollHeight;
  }

  function setClientNameUI(clientName) {
    var div = document.getElementById("client-name");
    div.innerHTML = `Your client name: <strong>${clientName}</strong>`;
  }

  function resetIncomingCallUI() {
    incomingPhoneNumberEl.innerHTML = "";
    incomingCallAcceptButton.classList.remove("hide");
    incomingCallRejectButton.classList.remove("hide");
    incomingCallHangupButton.classList.add("hide");
    incomingCallDiv.classList.add("hide");
  }

  // AUDIO CONTROLS

  async function getAudioDevices() {
    await navigator.mediaDevices.getUserMedia({ audio: true });
    updateAllAudioDevices.bind(device);
  }

  function updateAllAudioDevices() {
    if (device) {
      updateDevices(speakerDevices, device.audio.speakerDevices.get());
      updateDevices(ringtoneDevices, device.audio.ringtoneDevices.get());
    }
  }

  function updateOutputDevice() {
    const selectedDevices = Array.from(speakerDevices.children)
      .filter((node) => node.selected)
      .map((node) => node.getAttribute("data-id"));

    device.audio.speakerDevices.set(selectedDevices);
  }

  function updateRingtoneDevice() {
    const selectedDevices = Array.from(ringtoneDevices.children)
      .filter((node) => node.selected)
      .map((node) => node.getAttribute("data-id"));

    device.audio.ringtoneDevices.set(selectedDevices);
  }

  function bindVolumeIndicators(call) {
    call.on("volume", function (inputVolume, outputVolume) {
      var inputColor = "red";
      if (inputVolume < 0.5) {
        inputColor = "green";
      } else if (inputVolume < 0.75) {
        inputColor = "yellow";
      }

      inputVolumeBar.style.width = Math.floor(inputVolume * 300) + "px";
      inputVolumeBar.style.background = inputColor;

      var outputColor = "red";
      if (outputVolume < 0.5) {
        outputColor = "green";
      } else if (outputVolume < 0.75) {
        outputColor = "yellow";
      }

      outputVolumeBar.style.width = Math.floor(outputVolume * 300) + "px";
      outputVolumeBar.style.background = outputColor;
    });
  }

  // Update the available ringtone and speaker devices
  function updateDevices(selectEl, selectedDevices) {
    selectEl.innerHTML = "";

    device.audio.availableOutputDevices.forEach(function (device, id) {
      var isActive = selectedDevices.size === 0 && id === "default";
      selectedDevices.forEach(function (device) {
        if (device.deviceId === id) {
          isActive = true;
        }
      });

      var option = document.createElement("option");
      option.label = device.label;
      option.setAttribute("data-id", id);
      if (isActive) {
        option.setAttribute("selected", "selected");
      }
      selectEl.appendChild(option);
    });
  }
});

</script>

Thanks for posting those!
In our quickstart.js file, when we call device.connect(), we are sending a POST request to our TwiML application, which is configured to send a POST request to our /voice endpoint.
Twilio is expecting TwiML (XML) in response to that POST request to the /voice endpoint. This is why you see  return Response(str(resp), mimetype="text/xml") in the /voice endpoint.
The SDK takes care of creating a Call for you. You don't need to create a new call like in those docs above. Those are just for server-side only creation of calls. You just need to return TwiML using the VoiceResponse() method from the helper library. The image below from the Voice SDK Docs may help:

So I should ignore the docs method and do what I have showed you in other issues on this github project and always return TwiML?
I would only use the docs way of doing it if I did not have the javascript SDK?
The whole objective I am trying to accomplish is operate calls in the browser. So I always need to use javascript SDK?
What is the point of making calls server side with the docs method if you cannot directly answer them on the browser?

Yes, if you only want to use the browser, the SDK is the way to go, meaning you should always return TwiML.
Some reasons someone may want to use the server-side only tools would be: sending automated messages to customers or setting up a phone-tree ("Press 3 to reach HR, press 4 to reach Engineering" or something like that) or setting up a SIP interface.
I'm not sure you'd be able to make a browser phone with just Django without a lot of lifting. The SDK does the work of creating WebRTC connections and handling audio devices in the browser, and JavaScript is kind of a necessary evil when it comes to web browsers.
You might, however, be able use Twilio's SIP functionality to connect a soft phone like Zoiper. Not browser-based, but still a soft phone that you can manage with Twilio's server-side functionality.


GUI: Adding/naming a CAT wallet from Manage Token List spins for a while a doesn't always work

Adding a CAT wallet from the Manage Token List drawer seems to take several steps. When finding a discovered CAT that can be added as a wallet, setting the name doesn't cause the name change to stick. Usually it requires setting the name again and then flipping the switch to add the wallet.

I believe you were taking a look at this @seeden

Fixed in 1.5.1