Failed to lock absl::Mutex dring static storage duration

Describe the bug
I know that static init order is eval, but my company project has copy-and-pasted some files from tensorflow long time ago, if I replace the mutex in the link with absl::Mutex, ASAN fail:
=================================================================
==79194==ERROR: AddressSanitizer: initialization-order-fiasco on address 0x7f0e30e000e0 at pc 0x7f0e30debac4 bp 0x7ffe06a36b90 sp 0x7ffe06a36b88
READ of size 4 at 0x7f0e30e000e0 thread T0
    #0 0x7f0e30debac3 in std::__atomic_base<unsigned int>::load(std::memory_order) const /usr/gcc_toolchain/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/atomic_base.h:419:9
    #1 0x7f0e30debac3 in absl::lts_2020_02_25::base_internal::SpinLock::TryLockImpl() /proc/self/cwd/external/com_google_absl/absl/base/internal/spinlock.h:171:37
    #2 0x7f0e30debac3 in absl::lts_2020_02_25::base_internal::SpinLock::Lock() /proc/self/cwd/external/com_google_absl/absl/base/internal/spinlock.h:85:10
    #3 0x7f0e30debac3 in absl::lts_2020_02_25::base_internal::SpinLockHolder::SpinLockHolder(absl::lts_2020_02_25::base_internal::SpinLock*) /proc/self/cwd/external/com_google_absl/absl/base/internal/spinlock.h:187:8
    #4 0x7f0e30debac3 in absl::lts_2020_02_25::synchronization_internal::NewThreadIdentity() /proc/self/cwd/external/com_google_absl/absl/synchronization/internal/create_thread_identity.cc:102:35
    #5 0x7f0e30debac3 in absl::lts_2020_02_25::synchronization_internal::CreateThreadIdentity() /proc/self/cwd/external/com_google_absl/absl/synchronization/internal/create_thread_identity.cc:129:45
    #6 0x7f0e30deff2b in absl::lts_2020_02_25::synchronization_internal::GetOrCreateCurrentThreadIdentity() /proc/self/cwd/external/com_google_absl/absl/synchronization/internal/create_thread_identity.h:51:12
    #7 0x7f0e30deff2b in absl::lts_2020_02_25::Synch_GetPerThread() /proc/self/cwd/external/com_google_absl/absl/synchronization/mutex.cc:525:30
    #8 0x7f0e30deff2b in absl::lts_2020_02_25::Synch_GetAllLocks() /proc/self/cwd/external/com_google_absl/absl/synchronization/mutex.cc:541:23
    #9 0x7f0e30deff2b in absl::lts_2020_02_25::DeadlockCheck(absl::lts_2020_02_25::Mutex*) /proc/self/cwd/external/com_google_absl/absl/synchronization/mutex.cc:1318:31
    #10 0x7f0e30deff2b in absl::lts_2020_02_25::DebugOnlyDeadlockCheck(absl::lts_2020_02_25::Mutex*) /proc/self/cwd/external/com_google_absl/absl/synchronization/mutex.cc:1401:12
    #11 0x7f0e30def142 in absl::lts_2020_02_25::Mutex::Lock() /proc/self/cwd/external/com_google_absl/absl/synchronization/mutex.cc:1460:16
    #12 0x7f0e3c998231 in absl::lts_2020_02_25::MutexLock::MutexLock(absl::lts_2020_02_25::Mutex*) /proc/self/cwd/external/com_google_absl/absl/synchronization/mutex.h:542:16
    #13 0x7f0e3c998231 in base::FileSystemRegistryImpl::Register(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<base::FileSystem* ()>) /proc/self/cwd/.../env.cc:45:19
    #14 0x7f0e3c999b11 in base::Env::RegisterFileSystem(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<base::FileSystem* ()>) /proc/self/cwd/.../env.cc:92:33
    #15 0x7f0e3c9af6c3 in base::register_file_system::Register<base::PosixFileSystem>::Register(base::Env*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /proc/self/cwd/.../env.h:412:10
    #16 0x7f0e3c9b0b66 in __cxx_global_var_init.1 /proc/self/cwd/.../posix_env.cc:113:1
    #17 0x7f0e3c9b0b66 in _GLOBAL__sub_I_posix_env.cc /proc/self/cwd/.../posix_env.cc
    #18 0x7f0e3cf636f9  (/lib64/ld-linux-x86-64.so.2+0x106f9)

0x7f0e30e000e0 is located 0 bytes inside of global variable 'absl::lts_2020_02_25::synchronization_internal::freelist_lock' defined in 'external/com_google_absl/absl/synchronization/internal/create_thread_identity.cc:35:32' (0x7f0e30e000e0) of size 4
  registered at:
    #0 0x55a6ebd1074d in __asan_register_globals (...)
    #1 0x7f0e30debc0b in asan.module_ctor (/.../libexternal_Scom_Ugoogle_Uabsl_Sabsl_Ssynchronization_Slibsynchronization.so+0xfc0b)

SUMMARY: AddressSanitizer: initialization-order-fiasco /usr/gcc_toolchain/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/atomic_base.h:419:9 in std::__atomic_base<unsigned int>::load(std::memory_order) const
Shadow bytes around the buggy address:
  0x0fe2461b7fc0: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x0fe2461b7fd0: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x0fe2461b7fe0: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x0fe2461b7ff0: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x0fe2461b8000: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
=>0x0fe2461b8010: f9 f9 f9 f9 f9 f9 f9 f9 00 00 00 00[f6]f6 f6 f6
  0x0fe2461b8020: f6 f6 f6 f6 00 f9 f9 f9 f9 f9 f9 f9 00 00 00 00
  0x0fe2461b8030: 04 f9 f9 f9 f9 f9 f9 f9 04 f9 f9 f9 f9 f9 f9 f9
  0x0fe2461b8040: 00 f9 f9 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9
  0x0fe2461b8050: f9 f9 f9 f9 00 00 00 00 00 00 00 00 00 00 00 00
  0x0fe2461b8060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==79194==ABORTING

Steps to reproduce the bug
 bazel test -c dbg --config asan in my project.
What version of Abseil are you using?
lts_2020_02_25
What operating system and version are you using
Linux 4.10.0-42-generic
Ubuntu 16.04.1
What compiler and version are you using?
Ubuntu clang version 11.1.0-++20210314110124+1fdec59bffc1-1~exp1~20210314220751.162
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.5.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
Found CUDA installation: /opt/.../third_party/cuda_artifact/cuda-11.2.tar/content/cuda-11.2, version 11.0

What build system are you using?
bazel 3.7.2

Static/global absl::Mutex objects either need to be absl::ConstInit, or you have to use a safe idiom like
absl::Mutex& GetGlobalMutex() {
  static absl::Mutex* mu = new absl::Mutex;
  return *mu;
}

Thanks for the reply, but in this case, the mutex is a member var of a class, and the static obj of that class is init with safe idiom, the problem is that it also calls a func other than ctor and the mutex is locked in this func

We need a complete reproduction before we can investigate.


Use POWER_SAVING_LEGACY by default

BNO users experience strange delays with new power saving options. Revert to legacy to mitigate the issue and for further investigation.

Closing my pull request in favor of #125.


[F]Fixed README install from Gemfile

There was a mistake in the README concerning the installation from a Gemfile (dashes instead of underscores).

Thanks 👍


How can I make text highlighting permanent?

How can I make text highlighting permanent?
When I close and reopen the app, the highlighted text disappears.

you can use hive or some other local database to save the text

you can use hive or some other local database to save the text

How can I restore the saved texts? I looked in the code and found no such method.


Review README frontend. Ubuntu / Windows

It was necessary to change frontend/src/config.js to change API to backend

Deployment goes through npm run build

src/config.js


allow configurable order for property source locator

Description
Support user to configure the order of AzureConfigPropertySourceLocator , for how to use, refer to the test case configuration.

Codecov Report

Merging #329 into azure-config will increase coverage by 0.12%.
The diff coverage is 100%.

@@                Coverage Diff                 @@
##             azure-config     #329      +/-   ##
==================================================
+ Coverage           55.72%   55.85%   +0.12%
- Complexity            336      338       +2
==================================================
  Files                 107      107
  Lines                1423     1427       +4
  Branches               65       65
==================================================
+ Hits                  793      797       +4
  Misses                590      590
  Partials               40       40

Impacted Files
Coverage Δ
Complexity Δ

...cloud/config/AzureConfigPropertySourceLocator.java
85.36% <100%> (+1.58%)
12 <2> (+2)
:arrow_up:

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 92a7332...5a9bdaa. Read the comment docs.


join merqury input to fasta not fastq fixes #75

small typo, fixes #75
eventually will trickle into subworkflow

nf-core/modules#6905

Fixed typo here 49a21b3.


[RESOLVED] Interface eth0(): High error rate (>2 for 5m)

Problem started at 12:57:29 on 2023.08.03
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Operational data: errors in: 3, errors out: 0
Original problem ID: 34578
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23483&eventid=34578

Problem has been resolved in 15m 0s at 13:12:29 on 2023.08.03
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Original problem ID: 34578


What is the meaning of obs_traj,pred_traj_gt,pred_traj_fake etc ?

obs_traj - observed trajectories (in this case it is 8)
pred_traj_gt - predicted trajectory ground truth (in this case it can be either 8 or 12)
pred_traj_fake - trajectory output from the generator model (same as above - 8 or 12)


look at the first request #1

same for me.. my 27 screen doesn't keep this css @ansonbenny  pls fix
you made a clone yes but it's not precise about certain things.. openai modified certain things about the interface please add

as it should appear for all screens

ok thanks


Update ListProof hashing rules [ECR-3318]

Overview
Update ListProof hashing rules.
Should we add length field to ListProofBranch as a way to pass length of the index?
WIP: length is always 1 when calculating hash right now

See: https://jira.bf.local/browse/ECR-3318
Definition of Done

[x] There are no TODOs left in the code
[x] Change is covered by automated tests
[x] The coding guidelines are followed
[x] Public API has Javadoc
[x] Method preconditions are checked and documented in the Javadoc of the method
[x] Changelog is updated if needed (in case of notable or breaking changes)
[x] The continuous integration build passes

Coverage increased (+0.03%) to 77.892% when pulling 17f3db5744eccab9656f133dadb84187027e0a7f on ECR-3318 into 05c0d956602305d80f56aad2ce8c2c1327b9cde2 on merkledb.

It doesn't build

Fixed that.
Although now it gets 405 from coveralls -_- restarted the job, should work now.

Good, thanks, coveralls had been having some issues, failing all reporting jobs.


What are the ports used by the docker image?

I'm trying to set this up on my local server (not a droplet). It would be helpful if the document mentions port number so that I could set my port-forwarding up.

iirc it's just 443 and 80. This goes into a bit more detail: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/prerequisites.md


Reboot (and probably many other) tests no longer have pods to look at

They used to look at all pods in the default namespace, which used to contain all of the vital infrastructure pods. The purpose of looking at these was to ensure the system was fully healthy after a reboot, restart, upgrade, etc.
However, now I see in the test:
INFO: Wanted all 0 pods to be running and ready. Result: true. Pods: []

I'm guessing this was related to the big namespace change? When moving all of the pods out of the default namespace we must have forgotten to update all of the tests that check the infrastructure pods.
I think this is fairly important because all of these tests are far weaker as a result. (We've caught many bugs in DNS, elasticsearch, kubelet, salt, ... by ensuring pods are running & ready in tests.)
Relatedly, if we switch the minimum here from 0 to 1 in GCE (it was 1 before), we could catch a test regression like this from happening again.

+cc @satnam6502 might this have been you? :-)

Probably. Drat. I thought I had cleared everything before going on vacation!

Argh. I will work on fixing the minimum startup pods value for GCE Jenkins right away.

Thank you @ixdy! The regression in the 1→0 change is largely my fault because I didn't fight back hard enough or make sure it's used in GCE.


Fix broken link to hub cli docs

The link to the CLI docs here at the bottom of this page (https://docs.textile.io/hub/apis/#api-libraries) goes to https://docs.textile.io/hub/hub/cli/hub which 404s, I believe this fixes it.

Lovely! Could you do that DCO step in the checks above? I'll get this in right after.

Done, annoying that you can't do that via the GitHub web UI.

bah... i know, code suggestions in reviews are the worst (as in, if you accept them they break dco in bad ways). thanks for doing it though!


Update Composer dependencies (2024-07-22-00-18)

Visual regression test passed!
View the visual regression test report


Single-channel textures in 1.0 interpreted as alpha instead of luminance

See https://github.com/AnalyticalGraphicsInc/obj2gltf/blob/1.0/lib/loadImage.js#L99.
When using single-channel grayscale textures this can lead to unintended results in Cesium:
Expected:

Actual:

Opening this as an issue instead of a PR because I don't know if there's a case where users would want single channel textures to be interpreted as alpha instead of luminance for gltf 1.0.

It should be fine to always set the format to RGBA.

We just need luminance for single-channel instead of alpha, I think the other cases should be fine. I'll open a PR soon.


Add new LSN field to PartitionKeyRanges

The PartitionKeyRanges struct has a new field LSN, which is resulting in any calls to the partition key endpoint to fail due to json decoding issues.
This fixes it by adding the new struct field.
Long-term, we should consider something like MissingFields which we use in the ARO RP, but short-term, going to go down this path to fix the issue.

I'm going to merge this myself because it's a very small non-functional change.  Will follow-up in the ARO-RP PR to make sure everyone understands the change.


Generalization of MD workflow results

The workflow results (e.g., rdf/msd) are currently calculated in each atomistic parser from the MDA instances created from the corresponding raw files. These calculations should be moved to the normalization step and be computed from a (generalized) MDA instance created directly from the nomad metainfo.
nb - as a side effect, we should store the references to each molecule / molecule group for these observables using the topology structure with the results section.
(NOMAD issue #1199)

@ladinesa: I am mostly done with these changes, just going to do some additional tests tomorrow. I left in a bunch of commented out older sections and some comments. I'm not sure if you want to look at the code first, but at some point I would like to meet with you to discuss a few changes that I have made and make sure that you agree with the overall approach. Perhaps if you have time tomorrow or Mon? I will be on vacation starting next Wed, so it would be good to merge this before then so that you can combine it with your other workflow changes.
Note that there is a corresponding NOMAD branch: 1199  That you will also have to look at.

Can you please make a draft PR for this so I can review it? Thanks. also in gitlab.

Can you please make a draft PR for this so I can review it? Thanks. also in gitlab.

done.


Should pass-through inline styles and className attribute

The way this library handles styling atm is quite backwards: https://github.com/prakhar1989/react-tags#styling
A more appropriate way is to pass through inline style tag for the top component plus the className attribute.
The expected pattern to use this with style-components is as follows:
import styled from "styled-components";
import {WithContext as TagInput} from "react-tags";

const StyledTagInput = styled(TagInput)`
     display: flex;
     flex-direction: row;
`

@episodeyang thank you for the suggestion to use style-components. I am a little buzy so might not be able to pick this up immediately but will try to push soon for sure.

Thanks!
On Sat, Jul 21, 2018 at 12:36 AM Aakansha Doshi<EMAIL_ADDRESS>wrote:

@episodeyang https://github.com/episodeyang thank you for the
suggestion to use style-components. I am a little buzy so might not be able
to pick this up immediately but will try to push soon for sure.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/prakhar1989/react-tags/issues/372#issuecomment-406777881,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAme2p58kDBpi9h6EV7XRfOs8blJyfikks5uItnpgaJpZM4VTdXc
.


npm install fails

Hi - I am unable to install the project as npm install gives:
ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR! network request to http://npm.dev.wixpress.com/jquery failed, reason: connect ETIMEDOUT <IP_ADDRESS>:80
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
I do not have a proxy other projects install no problem, however I have exactly the same issue with https://github.com/wix/yoshi.
Log attached
Can you please advise?
npmerror.txt

Hi - I have fixed this. I do not have a proxy, however the only way I could get this to work was to remove all proxy from npm config and then from an elevated command prompt:
install webpack using npm install webpack
installed webpack-dev-server
ran npm audit fix.
Added this in case it helps someone else.


fix: add gitattributes file to fix linguist

Thank you for contributing to the Universal Blue project!
Guidelines
In this project we follow Semantic PRs and Conventional Commits to describe features and fixes we made. It would be nice if you did too. Not sure what this all means? Here are some examples. Did you already use this? Awesome, thanks again!

One PR per feature please, gitignore and enabling F40 are not the same thing.

One PR per feature please, gitignore and enabling F40 are not the same thing.

Whoops, my bad! I forgot this hadn't merged yet and was using that branch for testing. One moment, reverting.

@bsherman @castrojo removed the unrelated commit


Update for new Tensorflow

Unfortunately the code is horribly outdated.
Adjust code like:
from tensorflow.keras import models

Waiting for Tensorflow to get out of Alpha stage


xtensa: sparse: fix address space mismatch

Fix remaining sparse address space mismatch warnings.

tested in https://github.com/thesofproject/sof/actions/runs/3968370842/jobs/6801454443 - no more sparse warnings on MTL


Allocating shared resources

Much like idle costs today, we want to distribute the cost of shared resources, e.g. kube-system pods, across all tenants. Essentially we will assign zero costs to these resources and then distribute the cost of all idle resources. Here are open design questions:

Should this be enabled by default?
How should we define/track these resources, e.g. by namespace? Should this be configurable?
Should these costs be distributed proportionately or by some weighted metric?

We've discussed within the team and with a number of users. Initial proposal is that this will be disabled by default, allocation will be done by a user-supplied namespace list, and that shared resource cost will be distributed evenly across all tenants.

From our perspective, we'd like to -

Have namespaces included in idle cost by labels (e.g. - all namespaces with label project=system)
It would be better if there is provision to allocate shared resource cost proportionately, i.e. based on total usage cost ratios

Handling #2 should be straight forward.
How big of a priority is #1? Would this just save you from having to type several more namespaces or is there other impact? I ask because most teams we are working with will want to use namespaces directly.

This is now done, and will be in our next release.


Make all private functions in e_afalg.c static [1.1.0]

If you know that there's no afalg engine, don't run this test.
test/recipes/30-test_afalg.t checks this correctly.

This is a backport of the relevant parts of #5270

Why not make afalg_aes_128_cbc() static even in 1.1.0?

Please hold on this for a moment. I want to check something.

 This extends
    the afalg_chk_platform() function to additionally check whether we can
    create an AFALG socket. We also amend the afalgtest to not report a
    failure to load the engine as a test failure. A failure to load is almost
    certainly due to platform environmental issues, and not an OpenSSL problem.

    RT 4434

    Reviewed-by: Andy Polyakov<EMAIL_ADDRESS>
See:
https://rt.openssl.org/Ticket/Display.html?id=4434

@dot-asm, I simply forgot.  Fixed.

@mattcaswell: argh, how infuriating!  And yeah, "due to platform environmental issues" sure hit us (see master).  The irony!

Does that mean we should revert 227a1e3f45bf06fdb00f2bdfb922f6f0d1f1d1de?

Does that mean we should revert 227a1e3?

I think maybe it does.

Darn.  Oh well

This PR is now reduced to making some private functions static

Yes, that's a correct assumption

Merged. db5ec96acd4e65bca886f2ef09316a7fb0aa8cac


Age and Geo infomation

Hi, could we also get the users' age and geo info through the API? They are visible to the public in some other scrapers like this https://hypeauditor.com/.

From what I know, there is no way to get users' age information. For Geo info, I assume the common approach is to fetch information on users' latest uploaded video to use the geo-information on that video as "user's geoinformation". We can fetch those info but it may need much more computing resources and internet resources than we are having now. We need to apply a proxy server on requests first to avoid Tiktok banning us, then we can try to add this feature.


Invalid Backtest Url and --open Does Not Open to Backtest page

(base) PS C:\Users\Alex\Local> lean cloud backtest "RiskAverse2" --push --open
[1/1] Pushing 'RiskAverse2'
Successfully updated cloud file 'RiskAverse/main.py'
Started compiling project 'RiskAverse'
Detected parameters: none
Build Request Successful for Project ID: 10244769, with CompileID:
053f5b0cdd39550264ff5d8cc8724370-08219cfbd61c7f9e413b570308392826, Lean Version: <IP_ADDRESS>.13520
Successfully compiled project 'RiskAverse'
Started backtest named 'Geeky Orange Snake' for project 'RiskAverse'
Backtest url: https://www.quantconnect.com/terminal/#open/10244769/922781a33f82d756c2fa67aa3b6597ab
 ---------------------------------------- 0%
Backtest id: 922781a33f82d756c2fa67aa3b6597ab
Backtest name: Geeky Orange Snake
Backtest url: https://www.quantconnect.com/terminal/#open/10244769/922781a33f82d756c2fa67aa3b6597ab

The https://www.quantconnect.com/terminal/#open/10244769/922781a33f82d756c2fa67aa3b6597ab doesn't open the backtest tab.. It opens that Terminal page instead.

Any updates on this? It has been over 6 months and I'm still encountering the same issue...

I found the line that needs to be changed:
https://github.com/QuantConnect/lean-cli/blob/23a4092543922df5f85e71a9fb6718ecde3320bb/lean/models/api.py#L191
Seems like the backtest itself doesn't have a URL since you have changed the way the terminal works but can you at least change it such that it opens the project?
I believe all that needs to be done is to change the "terminal/#open" with "project" and that will open the project.
@jaredbroad tagging you as I'm not sure who works on that feature. Thank you.


Remaining 1373 updates

As part of anchore/grype#1373, we needed to relabel a number of things. This (hopefully) the last of those relabels.
Changes:

urllib3 (python package) findings changes to FP, in favor of the (actually present) RPM python3-urllib3 in both a sonatype and rhel test image
in centos test image, label a few matches that had no labels; the change in Grype removes enough spurious matches that the percentage of unknown matches got high because the denominator went down.

🎉


ta-lib giving "undefined symbol TA_IMI"

This might be out of scope but I couldn't find info elsewhere - when trying to run with talib (on Linux, x86_64) I am getting:

Error: /user/gitrepos/gekko/node_modules/talib/build/Release/talib.node: undefined symbol: TA_IMI
    at Object.Module._extensions..node (module.js:598:18)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /user/gitrepos/gekko/core/pluginUtil.js:28:19
    at Function.forEach (/user/gitrepos/gekko/node_modules/lodash/dist/lodash.js:3298:15)
    at Object.cannotLoad (/user/gitrepos/gekko/core/pluginUtil.js:26:9)
    at Object. (/user/gitrepos/gekko/core/baseTradingMethod.js:18:33) '\n\n'

Meta debug info:

Gekko version: v0.3.4
Nodejs version: v7.5.0

Did you author an indicator?

And exactly which indicator where you trying to use? Could you please test if it works with the develop branch?

I haven't authored an indicator. Just went with most of the defaults. I was testing it with the MACD indicator. I'll test the development branch and check back in.

Unless I'm mistaken I think you need to create a method, add it to the config and then you can run it. How are you trying to call the method?

@thegamecat,

If the issue persists on develop, please reopen!

@thegamecat

Unless I'm mistaken I think you need to create a method, add it to the config and then you can run it. How are you trying to call the method?

it appeared to be an issue with talib using methods that came with Gekko.

Ok, just tried it on develop - exactly the same issue. I haven't changed much in the config, basically all I did was to set config.tradingAdvisor.talib.enabled to true. And, if it matters - I am using postgresql.
The backtrace is exactly the same.
I can't reopen the issue - not enough permissions - so hope you can do that for me @askmike. Cheers.

When you said:

basically all I did was to set config.tradingAdvisor.talib.enabled to true.

So exactly what trading method were you trying to run? The error you posted comes from TAlib, which is not used when using the default 'MACD' trading method.

I see. That might be it then. I'm not sure - this is all a bit new to me as you probably guessed. Here is the relevant portion of the config:
config.tradingAdvisor = {
  enabled: true,
  method: 'MACD',
  candleSize: 60,
  historySize: 25,
  adapter: 'postgresql',
  talib: {
    enabled: true,
    version: '1.0.2'
  }
}

Could you turn debug on and post the full log?

I assume you mean config.debug = true. When I set that the output is not much different. The only lines marked [DEBUG] are related to connecting with the postgresql database succesfully. The rest, until the error (posted above):
(INFO):     Setting up:
(INFO):              Trading Advisor
(INFO):              Calculate trading advice
(WARN):              Config already has MACD parameters. Ignoring toml file
(INFO):              Using the trading method: MACD
(ERROR):    ERROR LOADING DEPENDENCY talib

You can disable TAlib in your config: TAlib is a library that has a lot of indicators. But Gekko won't use it unless you use a trading method that relies on a talib indicator (the only method that comes with gekko is talib-macd. Simply enabling it will only load the module (which is failing for you).
If you do want to create your own method using talib indicators, we can debug this further: could you try to installing node 6.6.0 (that is what I am running without any talib problems).

Alright, I just did. Node 6.6.0, removed my node_modules dir, and reinstalled using npm install, followed by<EMAIL_ADDRESS>irc pg talib. Then when I tried to execute, I got exactly the same issue. I've also added feedback to an already existent issue ticket over at the talib github: https://github.com/oransel/node-talib/issues/39 So far no response there though, sadly.

Ah darn,
So to reiterate: you only need talib if you want to run a method that relies on a talib indicator, which is only a problem when running your own methods.
As for other possible solutions: There is another low level library supporting a lot of indicators: https://tulipindicators.org/ We could try to integrate that in gekko as well (using this wrapper for example)


Delete local maven repository before starting in case the machine is not clean

Issues Resolved

#510

Check List

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #511 (a5b1b7b) into main (757a225) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #511   +/-   ##
=======================================
  Coverage   70.25%   70.25%
=======================================
  Files          59       59
  Lines        1553     1553
=======================================
  Hits         1091     1091
  Misses        462      462

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 757a225...a5b1b7b. Read the comment docs.


feat: add arguments to profile

in order to support more verbose data in the profile, changed the diff output to include full path of every value.
also introduced a way to configure the profiler,
in this case to discard noisy args

example:
https://github.com/itaysk/actionstest/blob/main/profile-config.json
https://github.com/itaysk/actionstest/pull/9/files

I think the basic flow works ok. we probably need to move action related files into a .tracee-action directory. will do tomorrow

added another commit that organizes all files under .tracee dir


Issue #4 :Feature Multimarker

Hi,
I have made changes to integrate multiple markers.
Best regards

How does this feature work?
This doesn't seem to be the right syntax:
{{ leaflet( {'id': 'leaflet', 'class': 'leaflet', 'zoom': 13, 'markers': [['Place 1', '50', '10'],['Place 2', '50', '10']]}) }}


feat: align Classical.choose and Classical.choose_spec

classical.some and classical.some_spec become Classical.choose and Classical.choose_spec.
Lean 3:
https://github.com/leanprover-community/lean/blob/741670c439f1ca266bc7fe61ef7212cc9afd9dd8/library/init/classical.lean#L19-L23
Lean 4:
https://github.com/leanprover/lean4/blob/e80028b7d1be11b190e5439fab33f9a034f6babf/src/Init/Classical.lean#L19-L23

bors r+


2.4.0: Api value no longer used as tag name?

2.4.0 / Migration from 2.2.0 to 2.4.0
from https://github.com/springfox/springfox/issues/1228
One additional thing I noted when switching between 2.4.0 and 2.2.0 (pls let me know if I should post a separate question):
In 2.4.0 the @Api(value="mycontrollername") is no longer used as tag name, instead the controller class name is always used as a tag name.
Is it still possible to change the tag name?

I believe tag name infected from value before it was introduced in swagger models. You should now be able to use tags to define tags. Additional you can supply tags with descriptions in the docket as well

The tag feature works perfectly.
However, the @Api.description is currently marked @Deprecated, but it is still displayed in the API (and it appears logical to me to add the description there, consistent to @ApiModel at least (see #1228)


[WIP] Add machine translation section

This PR adds best practices for building MT systems for new languages.
It's still a work in progress. Help is specially appreciated in the "collecting data" section.

I removed the section on how to improve the models since I mentioned multilingual models in training section. I can create an issue to add it later (still need to do some more research before I write it)
Also, I didn't add references for papers in most places, I can add them if needed.


Fatal error encountered

I'm trying to test the Arabic translation, but the app failed to load after I logged in.
Traceback (most recent call last):
21:58:58:   File "D:\User\Downloads\Compressed\TwitchDropsMiner\main.py", line 175, in main
21:58:58:     await client.run()
21:58:58:   File "D:\User\Downloads\Compressed\TwitchDropsMiner\twitch.py", line 768, in run
21:58:58:     await self._run()
21:58:58:   File "D:\User\Downloads\Compressed\TwitchDropsMiner\twitch.py", line 810, in _run
21:58:58:     await self.fetch_inventory()
21:58:58:   File "D:\User\Downloads\Compressed\TwitchDropsMiner\twitch.py", line 1648, in fetch_inventory
21:58:58:     _("gui", "status", "adding_campaigns").format(counter=f"({i}/{len(campaigns)})")
21:58:58: KeyError: 'Counter'

Hello there o/
There's no Arabic translation available in the app. If you're trying to add your own translation, it seems that you've replaced one of the format fields by accident, specifically: {counter} was replaced by {Counter} (first letter was capitalized), leading to this error.
The relevant translation key, per what the error says, is "gui" -> "status" -> "adding_campaigns", so that's where you should be able to find the messed up translation string, and fix it.
Please let me know if you'd be having any further troubles.

Hello there o/
There's no Arabic translation available in the app. If you're trying to add your own translation, it seems that you've replaced one of the format fields by accident, specifically: {counter} was replaced by {Counter} (first letter was capitalized), leading to this error.
The relevant translation key, per what the error says, is "gui" -> "status" -> "adding_campaigns", so that's where you should be able to find the messed up translation string, and fix it.
Please let me know if you'd be having any further troubles.

Thank you for pointing me to where the issue is. Also, would it be possible to add support for RTL languages?

And, as you can see in the last image, the text in "How It Works" and "Getting Started" is not showing properly, and the size of those sections is limited.

Also, wouldn't it be easy to avoid these mistakes in the future by hosting this project on a translation service like Crowdin or Hosted Weblate?

I'm not interested in either of those options, translations are already an extra feature that was "glued in" to the application, so you have to use the existing system. LTR languages were never expected nor tested, nor the application was ever prepared to support them in any remote way, so they won't be supported.
Regarding text being cut off, you can insert new lines with \n, the limit should only be horizontal, but not vertical.

I'm not interested in either of those options, translations are already an extra feature that was "glued in" to the application, so you have to use the existing system. LTR languages were never expected nor tested, nor the application was ever prepared to support them in any remote way, so they won't be supported.
Regarding text being cut off, you can insert new lines with \n, the limit should only be horizontal, but not vertical.

Got it.


internal: Skip tagging example projects

Figured out how to prevent tagging the example packages. Lerna will skip over those that are private and without version.

Hmm, apparently this doesn't work either https://github.com/yarnpkg/yarn/issues/6371
I really dont know why lerna is creating tags for things that aren't published.


[EVENT OUTCOME] 4xx status codes are always reported as errors

Describe the bug:
For any calls to services, all 4xx status codes are reporting as error. This includes expected 401 / 403 / 404 codes, which just indicate an issue with the requester (not an error in code).
This causes our alerts to be useless since we cannot tell if something is an error (to alert every time to fix) or just an invalid request (to alert for anomalies).
To Reproduce

Set up monitoring for a project with GCS
Have code call to GCS bucket to check for existence on a file that doesn't exist (GCS will return 404)
Pull up dashboard (or alerts)
See that it is reported as an error

Environment (please complete the following information)

OS: Linux
Python version: 3.8
Framework and version [e.g. Django 2.1]: Django 3.8
APM Server version: 7.15
Agent version: 6.14.0

Additional context

requirements.txt:

Click to expand
google-cloud-storage==1.42.0

Observations
It seems to be handled differently on different parts of code:

in traces.py it is looking for 5xx's to error
in instrumentation it is looking for 4xx's to error

Suggestions
Could we have 4xx's return as invalid request or warning levels instead? We could still be able to monitor and alert for them, but differently than 5xx's

I come across this issue when using Python Celery (Another library with APM instrumentation provided) and using S3 as the results back end. Celery will query S3 for the results as a HEAD request. If the celery task hasn't completed yet, S3 will return the 404. For longer running tasks, there's a fair number of failures on those 404s.
I don't have a clean suggestion as in some cases a 404 really is a failure. In others, it's not.


[SPARK-21714][CORE][YARN] Avoiding re-uploading remote resources in yarn client mode

What changes were proposed in this pull request?
With SPARK-10643, Spark supports download resources from remote in client deploy mode. But the implementation overrides variables which representing added resources (like args.jars, args.pyFiles) to local path, And yarn client leverage this local path to re-upload resources to distributed cache. This is unnecessary to break the semantics of putting resources in a shared FS. So here proposed to fix it.
How was this patch tested?
This is manually verified with jars, pyFiles in local and remote storage, both in client and cluster mode.

Test build #80734 has started for PR 18962 at commit 6e30931.

I will also add some UTs to partially verify the changes.
Ping @tgravescs @vanzin to help to review the changes, thanks a lot!

Test build #80734 has finished for PR 18962 at commit 6e30931.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/80734/
Test PASSed.

Test build #80951 has started for PR 18962 at commit 16ce99f.

Test build #80951 has finished for PR 18962 at commit 16ce99f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/80951/
Test PASSed.

Few minor things but looks good.

Test build #81014 has started for PR 18962 at commit cad4c70.

Test build #81014 has finished for PR 18962 at commit cad4c70.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
   *        (4) the main class for the child

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/81014/
Test PASSed.

Merged build finished. Test PASSed.

also I just realized on our original discussion of "Spark on YARN doesn't support upload remote resources from http, https or ftp server"  I think the feature to download without this change would have actually made that work  because it would have downloaded from the http/https/ftp server to local and then uploaded it to yarn.  The question is do we want to break that here.
If we don't then we need to conditionalize and only do for for HDFS or other hadoop supported filesystems.

If we don't then we need to conditionalize and only do for for HDFS or other hadoop supported filesystems.

I thought in the previous discussion we chose to treat that as a separate issue and revert to the previous behavior here?

Sorry, you are right we talked about both there.  I was just thinking of the hadoop not supporting it case.   Still agree to split out to another jira.

Yes @tgravescs if we download everything to local and then upload to yarn, http/https/ftp should be unrelated here. But still in yarn cluster mode, if we specify remote http jars, then yarn client will be fail to handle this jar, so the issue still exists. And I'm going to create a separate JIRA to track this issue.

Merging to master, will also try 2.2.

@jerryshao there are conflicts in 2.2, will need a separate PR.

@jerryshao did you have a chance to put up a 2.2 PR?

Sorry I missed the comments, I will file another PR against branch 2.2.


How do I turn off fresh's automatic redirect from /page/ to /page?

How do I turn off fresh's automatic redirect from /page/ to /page?

https://github.com/denoland/fresh/issues/2343

Please don't open multiple issues for the same thing.

Perhaps they intended to make a duplication to increase the search keyword?


Update TrainingData and TrainingDataChunk

related to #6836
Reorganize TrainingData and TrainingDataChunk. Currently TrainingDataChunk is a subclass of TrainingData. However, TrainingDataChunk should not make use of all the functionality available in TrainingData. Also TrainingDataChunk should not have responses set. It should just have training_examples.
Switch the inheritance (e.g. TrainingDataChunk is subclass of TrainingData) and ideally rename TrainingData to FullTrainingData (or something similar). Don't forget to add a deprecation warning for TrainingData as this is a public interface.

@tabergma do you have an idea to figure out which methods are shared and which are not? E.g. which should go into super class and which should stay in FullTrainingData?

Actually not sure about that. I guess I would go with trail and error.

@dakshvar22 maybe you remember? 🙏

@Ghostvv I mainly used them in this PR. Ones that I can remember and were useful were lazy properties like intents, etc. and utility methods like filter_training_examples and split_nlu_examples.


[Sample] [Media] - Implementation of "UltraHDR to HDR Video"

Description
This CL contains sample code for converting a series of UltraHDR images into an HDR video using GPU hardware acceleration. When rendering an UltraHDR image into a 10-bit frame, the gain map is considered.
This implementation is very detailed as there is many moving parts of it, do excessive notes have been added to guide developer through the various steps needed to make this a reality.
How Has This Been Tested?
Test Configuration #1 - Pixel 7 Pro
Test Configuration #2 - Pixel 7
Checklist:

[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation

Dem
https://github.com/android/platform-samples/assets/5649571/f27f59c7-462a-4c16-9661-1c6fa5a5a72a
Resulting File
This file have been taken from device and depending on the device you view it on, you will see it in true 10-bit HDR HLG.
https://github.com/android/platform-samples/assets/5649571/934421b8-6059-4828-8686-b3bec05a26d8

Will add a second PR what uses the same logic that will split video processing from sample @mmoczkowski @marcelpinto :)


feat: add support for DSCP and TTL / Hop Limit

What does this PR do
This PR improves the support for setting and retrieving of IP headers values for

Incoming packets IPv4 TTL (IP_RECVTTL)
Incoming packets IPv6 Hop Limit (IPV6_RECVHOPLIMIT)
Outgoing and incoming packets IPv4 DSCP (IP_TOS)
Outgoing and incoming packets IPv6 DSCP (IPV6_RECVTCLASS)

It includes the socket options and the appropriate control messages for sendmsg and recvmsg.
Note: I am not 100% sure I understand correctly the cfg values and feature flags of nix, so they could be set wrongly in the PR.
Checklist:

[x] I have read CONTRIBUTING.md
[x] I have written necessary tests and rustdoc comments
[x] A change log has been added if this PR modifies nix's API

Note: I am not 100% sure I understand correctly the cfg values and feature flags of nix, so they could be set wrongly in the PR.

For the cfg for targets (OSes), see https://github.com/nix-rust/nix/blob/5fde28e209032e1714e726b3c38ac787315a6e52/build.rs#L20-L27

Hi, thanks for the PR! Sorry for the late response!

Thanks a lot for the review and don't worry about the timing :)
I'll address the comments and publish a new version!

Note: I am not 100% sure I understand correctly the cfg values and feature flags of nix, so they could be set wrongly in the PR.

For the cfg for targets (OSes), see
https://github.com/nix-rust/nix/blob/5fde28e209032e1714e726b3c38ac787315a6e52/build.rs#L20-L27

The code we have right now does not build on freebsd 14 because
error[E0531]: cannot find unit struct, unit variant or constant `IP_RECVTTL` in crate `libc`
    --> src/sys/socket/mod.rs:1018:38
     |
1018 |             (libc::IPPROTO_IP, libc::IP_RECVTTL) => {
     |                                      ^^^^^^^^^^ help: a constant with a similar name exists: `IP_RECVTOS`
     |
    ::: /.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/mod.rs:3685:1
     |
3685 | pub const IP_RECVTOS: ::c_int = 68;
     | ----------------------------- similarly named constant `IP_RECVTOS` defined here

I think we need to enable RECVTTL only on linux.

The code we have right now does not build on freebsd 14 because
error[E0531]: cannot find unit struct, unit variant or constant `IP_RECVTTL` in crate `libc`
    --> src/sys/socket/mod.rs:1018:38
     |
1018 |             (libc::IPPROTO_IP, libc::IP_RECVTTL) => {
     |                                      ^^^^^^^^^^ help: a constant with a similar name exists: `IP_RECVTOS`
     |
    ::: /.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/mod.rs:3685:1
     |
3685 | pub const IP_RECVTOS: ::c_int = 68;
     | ----------------------------- similarly named constant `IP_RECVTOS` defined here

I think we need to enable RECVTTL only on linux.

On FreeBSD, IP_RECVTTL should be used, it is available on FreeBSD, our CI says it does not exist because the Rust libc crate does not include it, we need to add this constant to the libc crate.

I am moving this back to draft, while I find some time to finish to implement the changes and fix all the tests.

HI @crisidev, would you like to finish this? That type thing should be easy to deal with as we know the type used by the OS kernel:)

Hey, sorry, life got in the middle.. I'd love to finish this, but I am finally on holidays for a couple of weeks. I will be able to restart working on this in the second week of August if that's ok..

but I am finally on holidays for a couple of weeks. I will be able to restart working on this in the second week of August if that's ok..

Yeah, that is totally fine, enjoying you holiday, we all have a life😁

but I am finally on holidays for a couple of weeks. I will be able to restart working on this in the second week of August if that's ok..

Yeah, that is totally fine, enjoy you holiday, we all have a life😁

I found some time during a lazy Sunday and I am trying to finish this 😄
CI is making my life very hard right now, I'll try to fix it and move this to non draft.

I think I am done fixing CI issues. I had to disable the tests for IPTOS / IPV6TCLASS on mips since they return bogus values and I don't have a good way to troubleshoot it.

@SteveLauC first of all, thanks for all the patient comments, I really appreciate the help. I think this is ready for review now!

Well, sorry for so many comments, I hope they won't affect your holiday:)
Most of them are trivial cfg issues, so should be easy to fix

Please don't you worry about this. I am quite new to this crate and without your help, I would be able to make a meaningful contribution. At the end, you did most of the work, I am really glad this is moving forward thanks to your help.
I'll try to fix everything today, I think it start to look good, apologies for the mess I did with cfg flags.

I think I could use another review now :)

Thanks!


Missing files

Can you upload the files domain_embedding.gz and protein_domain.gz so i can prepre the fasta file ?

domain_embedding.gz  is available at http://www.csbio.sjtu.edu.cn/bioinf/ToxDL/Data.htm, you can also directly use our webserver

And where i can find the file protein_domain.gz?


Support automatic failover for Egress

Describe what you are trying to solve
Currently the Egress feature requires the Egress IP must be assigned to an arbitrary interface of one Node manually, and users have to reassign the IP to another Node if the previous one becomes unavailable. This is not ideal for production where automatic failover is desired. The proposal describes a solution that supports automatic failover for Egress.
Describe how your solution impacts user flows
When creating an Egress, user can specify its failover policy, which has two options: "None" and "Auto". By "None", the Egress will just work like before. By "Auto", Antrea will take care of selecting a Node from eligible Nodes and assigning the Egress's IP to the Node's network interface, and moving it to another Node if the current Node becomes unavailable.
Describe the main design/architecture of your solution
API change
Add a new field FailoverPolicy which allows users to specify if the Egress IP should failover to another Node when the Node that holds it becomes unavailable.
+type EgressFailoverPolicyType string
+
+const (
+       // EgressFailoverPolicyTypeNone disables failover for this Egress. The
+       // Egress IP must be assigned to an arbitrary interface of one Node, and be
+       // reassigned to another Node manually in case of Node failure.
+       EgressFailoverPolicyTypeNone EgressFailoverPolicyType = "None"
+       // EgressFailoverPolicyTypeAuto enables auto failover for this Egress. The
+       // Egress IP must not be assigned to any interface of any Node in advance.
+       EgressFailoverPolicyTypeAuto EgressFailoverPolicyType = "Auto"
+)
+
 // EgressSpec defines the desired state for Egress.
 type EgressSpec struct {
        // AppliedTo selects Pods to which the Egress will be applied.
        AppliedTo AppliedTo `json:"appliedTo"`
        // EgressIP specifies the SNAT IP address for the selected workloads.
        EgressIP string `json:"egressIP"`
+       // FailoverPolicy specifies if the Egress IP should failover to another Node
+       // when the Node that holds it becomes unavailable.
+       // The default value is "None".
+       FailoverPolicy *EgressFailoverPolicyType `json:"failoverPolicy"`
+}

The reason why the proposal keeps the "None" failover policy is, there may be such use cases:

There is no available secondary IPs, the Egress IP is the primary IP of a Node, so no failover is desired
The secondary IPs cannot float without manual intervention, for example, on some cloud platforms, the secondary IPs must be unbound from an instance via cloud API/UI first and then it can be bound to another instance, so automatic failover doesn't help

Egress Node failure detection
To support automatic failover, first we need to detect Node failure. There are two kinds of solutions to do it:

Leveraging K8s control plane API, i.e. watching Node events, initiating failover if a Node becomes NotReady.
Having a data plane mechanism to detect Node failover, e.g. using "memberlist" to form a cluster which consists of eligible Egress Nodes and detect Node failure.

In practice, the first approach typically takes around 40 seconds to detect Node failure. It strongly relies on kube-controller-manager's node-monitor-grace-period option, which defaults to 40 seconds. Besides, it requires antrea-controller to be health so that it can observe the failure and initiate failover, i.e. reassigning Egress IPs that were assigned to the failed Node to others.
The second approach relies on neither K8s control plane nor antrea-controller. The antrea-agents will talk to each other directly using specific protocol directly. memerlist is Go library that implements it based on a gossip based protocol. Typically it can detect Node failover in 3 seconds with default configuration, and it can be tuned. The library is quite re-usable, the code that creates and joins a cluster is like below:
// The Node join/leave events will be notified via it.
nodeEventCh = make(chan memberlist.NodeEvent, 1024)

mconfig := memberlist.DefaultLANConfig()
mconfig.Name = nodeName
mconfig.BindAddr = "<IP_ADDRESS>"
mconfig.BindPort = 10351
mconfig.Events = &memberlist.ChannelEventDelegate{Ch: nodeEventCh}
memberlist, err := memberlist.Create(mconfig)
if err != nil {
	klog.Errorf("failed to create memberlist: %v", err)
	return nil, err
}

var nodeIPs []string
nodes, _ := nodeLister.List(labels.Everything())
for _, node := range nodes {
	nodeIP, err := noderoute.GetNodeAddr(node)
	if err != nil {
		klog.Errorf("failed to get address of Node %v: %v", node, err)
		continue
	}
	nodeIPs = append(nodeIPs, nodeIP.String())
}

numSuccess, err := l.memberList.Join(nodeIPs)

memberlist is currently used by MetalLB and Consul as the member failure detection solution.
To provide a faster failover period and have less dependency on control plane, we propose to use the second approach to implement the failure detection.
Egress Node selection && IP assignment
Based on the above Node failure detection mechanism, each agent can get the list of the health Egress Nodes. For each Egress, the agent calculates its owner Node in a deterministic way (hash), and if the Node that the agent it runs on is the owner of the Egress, it assigns the Egress IP to its network interface. In theory, each Egress Node will own num_egresses/num_nodes Egresses.
When determining an Egress's owner Node, simply hashing the Egress and mapping it a Node via a modular operation will cause nearly all Egresses to be remapped when a Node joins or leaves the cluster, which will affect the whole Egress traffic of the cluster. To avoid it, we propose to use consistent hashing for Node selection. In this way, only num_egresses/num_nodes will be remapped when a Node joins or leaves the cluster. One way of doing that is following how MetalLB determines whether a Node should announces a Service's ingress IP: the agent hashes the Egress and each eligible Node, sorts the hashes, and selects the first one as the owner.
Then each agent will do the following:

Join the memberlist cluster on startup if itself is an eligible Egress Node
Get the active members (Nodes) of the memberlist cluster, iterate all Egresses that enables failover, calculate their owner Nodes
If the agent's own Node is an Egress's owner, it assigns the Egress IP to the network interface that has an IP in the same subnet as the Egress IP. Otherwise it removes the Egress IP from the Node's network interfaces if it's present.
Announce the Egress IPs via ARP/NDP protocols to refresh neighbors' cache.

Limit Egress Nodes
In some cases, users may want only certain Nodes to be the Egress Nodes. To support it, there could be 3 options:

Have a per-cluster EgressNodeSelector in the configuration file.
Have a per-Egress NodeSelector in the Spec of Egress.
Define a well-know annotation or label, and ask users to annotate/label Egress Nodes (this is per-cluster too)

Status report (Optional)
To expose Egresses' owner Node to users, we could add EgressStatus to Egress API:
type EgressStatus struct {
	// The name of the Node that holds the Egress IP.
	nodeName string `json:"nodeName"`
}

When an agent assigns an Egress's IP to its own Node, it should update the Egress's status with its own NodeName. In addition, it could create an Event associated with the Egress, so users can see the migration history from K8s API.
Test plan
TBD

@tnqn this looks great to me, thanks for the detailed proposal. A few notes:

does FailoverPolicy have to be a pointer? Or can it be like ExternalTrafficPolicy in the K8s ServiceSpec?
the proposal doesn't give any information about IP address advertisement in case of failover? I suppose we need to send a gratuitous ARP message at least?
for "Limit Egress Nodes", my favorite option would be 2: Have a per-Egress NodeSelector in the Spec of Egress.. I feel like this is the most natural / idiomatic. It works well for the use case I have in mind (cluster with Nodes over multiple AZs, where Nodes are labelled with their AZ; I want to bind an Egress IP to a specific AZ).
a bit of an orthogonal question: do we get any cool feature "for free" if we use the memberlist library? I was thinking of exposing inter-Node latency to the user as a dashboard. Can memberlist provide that latency information to us?

@antoninbas Thanks for the quick review.

does FailoverPolicy have to be a pointer? Or can it be like ExternalTrafficPolicy in the K8s ServiceSpec?

I was considering compatability if some Egresses have been persistent in etcd without the field. Will check how is this case handled in K8s. Thanks for the suggestion.

the proposal doesn't give any information about IP address advertisement in case of failover? I suppose we need to send a gratuitous ARP message at least?

Yes, we need ARP annoucement for IPv4 and NDP for IPv6. will add this to the design.

for "Limit Egress Nodes", my favorite option would be 2: Have a per-Egress NodeSelector in the Spec of Egress.. I feel like this is the most natural / idiomatic. It works well for the use case I have in mind (cluster with Nodes over multiple AZs, where Nodes are labelled with their AZ; I want to bind an Egress IP to a specific AZ).

I recall @jianjuns had a concern that it would require users to duplicate NodeSelector for all Egresses. We could discuss more about it here or in the community meeting.

a bit of an orthogonal question: do we get any cool feature "for free" if we use the memberlist library? I was thinking of exposing inter-Node latency to the user as a dashboard. Can memberlist provide that latency information to us?

Good idea. Will check it and get back to you.

@jianjuns do you think "Have a per-Egress NodeSelector in the Spec of Egress" can work for the cases you mentioned that a subset of Nodes can hold some IPs and another subnet of Nodes can hold other IPs? Or you have concern on duplicating labelSelectors in Egresses. In some way, specifying labelSelector (if it's quite simple) is same as specifying the name of NodePool?

@tnqn : as we talked in the community meeting, to be most flexible, I think we should separate Egress IP - Node association. Originally I was thinking an IPPool and a NodePool CRD (see #667), and one of them refers to the other for the association. Then Egress IP belongs to a pool should be configured to only a Node in the associated the Node pool. The same design can be reused by other IP allocation case, like LB VIP, and maybe routable Pod IP allocation.
I think finally we will need to provide the flexibility, as I saw it is a typical deployment pattern that one K8s cluster can span across multiple Node network segments. I am fine with starting from a single global NodePool, but considering the future extension, I would suggest the following:

We can go one of your 1) and 3) to define the global NodePool, and maybe we can say it is the default pool. So, later when we support multiple NodePools, Egress IPs without explicit Node association can still go the default pool.
I would remove FailoverPolicy from Egress, but decide whether or not to auto failover, based on if a default pool is configured or not.

Let me know what you think.

@jianjuns do you think "Have a per-Egress NodeSelector in the Spec of Egress" can work for the cases you mentioned that a subset of Nodes can hold some IPs and another subnet of Nodes can hold other IPs? Or you have concern on duplicating labelSelectors in Egresses. In some way, specifying labelSelector (if it's quite simple) is same as specifying the name of NodePool?

I would associate IPs with Nodes, but not Egress. The reasons are: 1) indeed the relationship is between IPs and Nodes; 2) later we might do egress IP allocation for Egresses; 3) multiple Egresses might share one egress IP; 4) later we might support other IP assignment cases like LB VIP and might like a common way to define IP - Node mapping.

@jianjuns I agree IP and Node association makes more sense. About the default NodePool and removing FailoverPolicy, whether it must be created/configured to enable auto-failover? I thought for users that just have a basic flat Network, it's redundant to ask them to do such configuration. Do you think we could just use the whole cluster as the default pool if we are going to have NodePool resources later?
For basic topology, user can just create the Egress and expect all Nodes to be the Egress Nodes.
For advanced topology, user can create NodePool and IPPool and expect the IP to be configured on proper Nodes.

But I do not think failover policy should be configured on Egress.
I thought once you configure a NodePool (a single pool for now), it means you want to enable auto-failover (otherwise why even configure it?). Do you agree?

I meant not creating the default NodePool explicitly. Just like all Nodes can be candicate if you don't specify any NodeSelector for a Pod. In the way you proposed, do user have to create a Pool before they can get failover feature?
The knob sounds a little obscure to me: If I have only static IPs and don't want Antrea to migrate the IPs I have configured on Nodes, I shouldn't create a NodePool. If I have floating IPs and want Antrea to auto-assign and auto-failover the IPs, I should create a NodePool even it just selects all Nodes.

I feel it might be a little obscure, but not too bad in my mind. You want auto-assignment and failover, then you should define a scope for that, even it is the whole cluster?
What is your proposal then? I do not like to associate failover policy with Egress for the reasons described above.

@jianjuns to associate with Egress IPs with Nodes, what do you think about this way?
Add an IPPool CRD, which defines the subnet, ip ranges and associated Nodes:
// EgressIPPool defines an IP Pool that Egresses can request IPs from.
type EgressIPPool struct {
	// The CIDR of this IP pool, e.g. <IP_ADDRESS>/24.
	CIDR         string
	// The IP ranges of this IP pool, e.g. <IP_ADDRESS>-<IP_ADDRESS>, <IP_ADDRESS>-<IP_ADDRESS>, <IP_ADDRESS>.
	IPRanges     []IPRange
	// The Nodes that the Egress IPs can be assigned to. If empty, it means all Nodes.
	NodeSelector *metav1.LabelSelector
}

type IPRange struct {
	Start string
	End   string
}

Then we could add an optional pool field to EgressSpec to indicate which IPPool the EgressIP should be allocated from, and failover will be enabled when the IP pool is specified:
// EgressSpec defines the desired state for Egress.
type EgressSpec struct {
	// AppliedTo selects Pods to which the Egress will be applied.
	AppliedTo AppliedTo `json:"appliedTo"`
	// EgressIP specifies the SNAT IP address for the selected workloads.
	EgressIP string `json:"egressIP"`
	// EgressIPPool specifies the IP Pool that the EgressIP should be allocated from.
	// If it's set, the allocated EgressIP will be assigned to a Node specified by the Pool and failover to another Node
	// if the assigned Node becomes unavailable.
	// If it's set with EgressIP, the EgressIP must be in the IP Pool.
	EgressIPPool *EgressIPPool `json:"egressIPPool"`
}

@tnqn : do you mean we will support Egress IP allocation? I thought it will not be in the next release?
For IPPool CRD, I like to make it generic, so it can be used by other use cases too like LB VIP allocation. LB VIPs share common requirements as Egress IPs, so your definition should work. However, it is not very clear to me if we will use the same IPPool to support allocating Pod IPs (e.g. for secondary interfaces, or pool per Namespace/Service). If so, we should support subnet information to the pool. And should we still add NodeSelector to a pool? I mean there can be two models: 1) IPPool is just a pool of IPs but it can be associated with objects in some other way (e.g. annotating the Namespace); 2) IPPool selects associated objects. What are your thoughts here?
Another thing is, if we set up a Node election group because an Egress refers to an IPPool which selects these Nodes, it sounds indirect? Your EgressIPPool way sounds better, but I still like the idea of a generic IPPool CRD for multiple use cases. What you think?

@tnqn : do you mean we will support Egress IP allocation? I thought it will not be in the next release?

Yes, I want to make auto-failover enablement more explicit to users when they create Egress. Defining an standalone IPPool or NodePool but not associating them with Egress sounds obscure to me and it seems we would reuse the Pool resources for other features which would make it more obscure.

For IPPool CRD, I like to make it generic, so it can be used by other use cases too like LB VIP allocation. LB VIPs share common requirements as Egress IPs, so your definition should work. However, it is not very clear to me if we will use the same IPPool to support allocating Pod IPs (e.g. for secondary interfaces, or pool per Namespace/Service). If so, we should support subnet information to the pool. And should we still add NodeSelector to a pool? I mean there can be two models: 1) IPPool is just a pool of IPs but it can be associated with objects in some other way (e.g. annotating the Namespace); 2) IPPool selects associated objects. What are your thoughts here?

I was thinking something like SubnetPool to support Pod IPs allocation. It sounds complex to support individual IP allocation and subnet allocation with single resource. It might also be hard to track its usage/reference if we let multiple other resources referring to them to claim their association. For the Egress feature, if we don't add NodeSelector to the pool, you mean creating a NodePool resource and let the NodePool refer to IPPool?

Another thing is, if we set up a Node election group because an Egress refers to an IPPool which selects these Nodes, it sounds indirect? Your EgressIPPool way sounds better, but I still like the idea of a generic IPPool CRD for multiple use cases. What you think?

Could you elaborate more about the question? I thought you prefer to assocate IP with Node, not Egress with Node? https://github.com/antrea-io/antrea/issues/2128#issuecomment-827318435.

I feel it is ok if we want to do only failover first. As you proposed originally, we can have a NodeSelector parameter in the ConfigMap, and we can use a name like DefaultEgressNodes, which should be clear enough Egress IPs can be assigned to these Nodes.
For Pod IP allocation, I feel it is not really different from Egress IP or VIP allocation. It is still a pool of IPs, but just that IPs are associated with a subnet and gateway (they are not really relevant to IP allocation, but just extra information appended).
For my last comment, I meant if we use a generic IPPool CRD which includes a Node Selector, then the trigger of creating a failover Node group will be "the IPPool is referred by an Egress", which sounds indirect to me.

@jianjuns Is static Egress IP that don't need failover a valid case to you? And a combination of static Egress IP and failover-able Egress IP in same cluster a valid case? For example, some pods may just use a specified Node's primary IP as Egress IP, while some others use floating IPs. The FailoverPolicy or EgressIPPool field added to EgressSpec is to make them work together. Otherwise starting from failover only and a NodeSelector config is definitely simpler.
Since IPPool could have different Node selectors. I think we don't really create a failover group for each Pool, but a global group for all IPPools. An agent assigns the Egress IP to itself only when it has the maxmium hash value across the Nodes that are selected by the IPPool's NodeSelector and are active. Does it make sense to you and address the concern?

And a combination of static Egress IP and failover-able Egress IP in same cluster a valid case?
I feel it is not very important to support this case. Of course I am not saying not good to have per IPPool settings, but I am just saying it might be ok to start from a global setting, if we plan to develop this feature across releases.

I got what you mean by a single global group. Originally I thought smaller groups can be configured based on failure domains, and can scale better (but there can be complexity like one Node are in multiple groups). What you think?

And a combination of static Egress IP and failover-able Egress IP in same cluster a valid case?

I feel it is not very important to support this case. Of course I am not saying not good to have per IPPool settings, but I am just saying it might be ok to start from a global setting, if we plan to develop this feature across releases.

We may not be able to catch 1.1 anyway so I assume we have some time to support per IPPool setting and it doesn't sound complex to implement. Except the API change, I imagine we just need antrea-controller to maintain the IP usage of IPPools in memory and allocate an IP from the speicfied IPPool if an Egress doesn't have IP specified.

I got what you mean by a single global group. Originally I thought smaller groups can be configured based on failure domains, and can scale better (but there can be complexity like one Node are in multiple groups). What you think?

Smaller groups would also introduce extra traffic if a Node can be in multiple groups and it would be complicated to negotiate the port that will be used by each group. A global group doesn't have to include all Nodes. It could be this: a Node joins the global group when it's selected by any IPPool.

@tnqn should we close this issue?

@tnqn should we close this issue?

Yes, updated task lists and closing this.


Get API key from Session.UserCredentials

We were grabbing the API key from Session.Session.IAMToken, but at some point this stopped working. This patch switches to sourcing the API key from the Session.UserCredentials struct which seems to work.

I must've missed that addition of of the Creds var and UserCredentials struct. I'm actually not sure why that was added and I'd prefer that we simplify and go back to the way it was done before (using the IAMToken field for the API Key) . The UserID also seems unnecessary b/c it's in the session object here: https://github.com/IBM-Cloud/power-go-client/blob/master/ibmpisession/ibmpowersession.go#L44
WDYT?

For posterity, UserCredentials was added by:
commit 745f19b668c044642c6b04f7819611a3cc891644
Author: 23TNC<EMAIL_ADDRESS>Date:   Tue Aug 17 13:19:44 2021 -0500

    Most of the changes to get the survey working (#26)

    initial install-config.yaml generation via the user survey

Session.Session.IAMToken seems to be empty so need to do some investigation as to why. I'm for using IAMToken again once I figure that out.

I think @23TNC is working on undoing that bit. I'm going to close this. But I am also seeing this as an issue when trying to do an install now. I get several errors from multiple TF modules: Error: ibmcloud_api_key or bluemix_api_key or iam_token and iam_refresh_token must be provided. Please see the documentation on how to configure it


Re-enable poetry binary caching with fix and more logging.

Revert "Temporarily disable step that seems to be transiently failing. (#10234)"
Refresh shell hashtable and show poetry/python location and version.

@baskaryan said "ship it"


OCPBUGS-10568: migrate to using lease objects for leader election

/approve
/lgtm
/retest

/retest-required

/retest-required

/retest-required


fix: LNC typings

Describe the changes you have made in this PR
Fixes #2844

do we have lnc node to test this? code wise lgtm

I don't think so, I've tested it with my own one.


API error

Traceback (most recent call last):
  File "/data/environment/amelie/lib/python3.7/site-packages/jsonrpc/__init__.py", line 253, in exc_printer
    return _func(*a, **kw)
  File "/data/applications/amelie/amelie/api/push.py", line 69, in delete_push_channel
    device = FCMDevice.objects.get(device_id=device_id)
  File "/data/environment/amelie/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/data/environment/amelie/lib/python3.7/site-packages/django/db/models/query.py", line 412, in get
    (self.model._meta.object_name, num)
fcm_django.models.FCMDevice.MultipleObjectsReturned: get() returned more than one FCMDevice -- it returned 2!

This is the traceback corresponding to one of the general "Internal Server Error on /api/" mails that superusers have been getting. The others are generic "NotLoggedInExceptions", which do not give much more information, but this seems easily fixable.

References #584

We haven't seen this issue for quite some time and therefore deem it fixed, since the API rework


Adds another example to ndjson-map as per #18

I figured adding a version number would be a possible use-case, given the emphasis on using nd-json with shp2json in the documentation.
shp2json -n example.shp | ndjson-map 'd.properties.version = 2, d' | json2tsv -n > example.v2.tsv

Thanks!


Wrong file type detection

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
After updating to version 1.32.0 Atom detects presence of @flow i the file and sets the file type to Flow JavaScript, which can't be selected from the list of file types. With this type nothing works: autocompletion, eslint even flow.
Steps to Reproduce

Open a file with // @flow at the first line
The file type will be Flow Javascript
Click on the file type and try to find this type.
Try to use your snippets for the JavaScript

Expected behavior:
As it works in Atom v 1.31.2: file type is Babel ES6 JavaScript
Actual behavior:
I should select the file type Babel ES6 JavaScript
There is no file type Flow JavaScript in the list, but it selected by default.
Reproduces how often:
Every time I open the *.js file.
Versions
1.32.0, 1.32.1

You may wish to review this issue (a guess):
https://github.com/atom/atom/issues/18352
Short story -
Disable Tree Sitter Parser from the Atom configuration. See if this helps you.
Please report back your experience.

For anyone looking for a quick fix, you can override the default file type in config.cson:
"*":
  core:
    customFileTypes: {
      "source.js.jsx": ["js"]
    }


Russian doc subdomain IP is blocked by Roscomnadzor

Version
2.6.10
Reproduction link
Steps to reproduce

What is expected?

What is actually happening?

If it was the IP, we will need way more information about what to do, if we can do anything at all, to unblock the ip, but that should be said in the vuejs/vuejs.org repo

@posva Why did you close the issue? They banned your HOSTING IP as you use shared cloud hosting obviously. And all Russian community suffers from absence of the docs! There is nothing anybody but VUE mantainers could do - please change your server IPs

If it was the IP, we will need way more information about what to do, if we can do anything at all, to unblock the ip, but that should be said in the vuejs/vuejs.org repo

https://github.com/vuejs/vuejs.org/issues/2325


add nr and nc methods to jpeg, png and webp loaders

Adding these methods, as mentioned in #2917

Sweet


object.assign called with boolean argument

Describe the bug
When I run a query in react-native I get the following:
TypeError: In this environment the sources for assign MUST be an object. This error is a performance optimization and not spec compliant.
    at Object.assign

the problem is in type-graphql/src/resolvers/validate-arg.ts:
import { validateOrReject, ValidatorOptions } from "class-validator";

import { ArgumentValidationError } from "../errors/ArgumentValidationError";

export async function validateArg<T extends Object>(
  arg: T | undefined,
  globalValidate: boolean | ValidatorOptions,
  argValidate?: boolean | ValidatorOptions,
): Promise<T | undefined> {
  const validate = argValidate !== undefined ? argValidate : globalValidate;
  if (validate === false || arg == null || typeof arg !== "object") {
    return arg;
  }

  const validatorOptions: ValidatorOptions = Object.assign({}, globalValidate, argValidate);
  if (validatorOptions.skipMissingProperties !== false) {
    validatorOptions.skipMissingProperties = true;
  }

  try {
    await validateOrReject(arg, validatorOptions);
    return arg;
  } catch (err) {
    throw new ArgumentValidationError(err);
  }
}

in this case globalValidate is true and argValidate is undefined
I think it's reasonable to request that Object.assign not be called with boolean arguments.  Perhaps:
const validatorOptions: ValidatorOptions = Object.assign({}, (typeof globalValidate === 'object' ? globalValidate : {}), (typeof argValidate) === 'object' ? argValidate : {}));

To Reproduce
A quick guide how to reproduce the bug.
You can paste here code snippets or even better, provide a link to the repository with minimal reproducible code example.
Run under react-native.  The relevant code is in the polyfill for object.assign in Object.es6.js:
  for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {
    var nextSource = arguments[nextIndex];
    if (nextSource == null) {
      continue;
    }

    if (__DEV__) {
      if (typeof nextSource !== 'object' &&
          typeof nextSource !== 'function') {
        throw new TypeError(
          'In this environment the sources for assign MUST be an object. ' +
          'This error is a performance optimization and not spec compliant.'
        );
      }
    }`

Expected behavior
no error
Logs
If applicable, add some console logs to help explain your problem.
You can paste the errors with stack trace that were printed when the error occured.
Enviorment (please complete the following information):

OS: android
Node 8.11.2
Package version: 0.12.2
TypeScript version 2.9.2

Additional context

Honestly, I've never considered React Native as a platform for TypeGraphQL.
What is you use case that you run GraphQL server inside a mobile app?
The fix is easy, so I will do that in a minute 😉

I find graphql to be a good way to access the local database inside my mobile app.  React doesn’t really have any good way to handle async data fetches- it’s all redux saga or redux-thunk, and all I want to do is fetch some data that is local state for a component and not make things complicated.

And thank you!

fixed via af742d8, released in v0.12.3 🎉


Foreign Keys must be nullable?

DBFlow Version: upgrading from 4.0.beta-7 to 4.0.5
Issue Kind (Bug, Question, Feature): Question
Please note if you are using Instant Run, there may be bugs where generated classes are not created. Ensure you are using
the apt or kapt plugins and that incremental compilation is off.
Description:
When upgrading to the latest DBFlow version, all my Foreign Keys are rejected in the build process because they are not nullable types (using Kotlin). While I understand that in theory an FK may have reason to be null, it can also be viewed as a violation of referential integrity (especially if the FK references a Primary Key).
Is it possible to turn this off? Otherwise the entire app must be re-written to support null checking on all of these objects, even though they should never be null.
I did see https://github.com/Raizlabs/DBFlow/issues/1344 where you state "Currently foreign key fields don't support NOT NULL on individual references." Can they support NOT NULL on the entire database or codebase, if not individually?

updated after 4.1.0 release in #1459


Release v0.2.0

There hasn't been a released version of NFD in nearly one and a half years. There have been some major changes and fixes since v0.1.0. I propose to release the current version as v0.2.0.
Release checklist:

[ ] All OWNERS must LGTM the release proposal.
[ ] Update the job template to use the new tagged container image
[ ] An OWNER runs git tag -s $VERSION and insert the changelog into the tag description.
[ ] Build and push a container image with the same tag to quay.io.
[ ] Update the :latest virtual tag in quay.io to track the last stable (this) release.
[ ] An OWNER pushes the tag with git push $VERSION.
[ ] Write the change log into the Github release info.
[ ] Add a link to the tagged release in this issue.
[ ] An announcement email is sent to<EMAIL_ADDRESS>with the
subject [ANNOUNCE] node-feature-discovery $VERSION is released
[ ] Close this issue.

Changelog
New features

Add support for Kubernetes 1.8+ (#82)
Adding SR-IOV capability discovery to node-feature-discovery (#49)
Enable nfd framework on Arm64 platform
Added nonrotational storage detection
Add memory source and NUMA detection.
Export proxy env vars inside docker build. Makes it possible to build node-feature-discovery from behind a proxy server, e.g. in corporate networks.
Advertise selinux status by adding labels
Make it possible to run nfd as a DaemonSet (#105)

Misc fixes

Fix to report the correct version inside container.
Upated RDT Discovery() to use exit status
Clean-up RDT helper programs.
Improved unit test coverage
Add GoReport Card Widget
Update Community Code of Conduct
Improve GoReportCard metrics, both gofmt and golint (#90)
Get node name from spec.nodeName instead of indirectly from pod. (#93)
Remove hardcoding of nfd source path (#94)
Use a specific released version of intel-cmt-cat

Known issues

Occasional restarts when run as a DaemonSet (issue #122).

Ping @balajismaniam @ConnorDoyle! Any comments?

@marquiz Please test end-to-end and make sure all the features sources work both for the DS and Job before cutting a release.
We should also prioritize #33 to avoid situation like #134.

Release is found here:
https://github.com/kubernetes-incubator/node-feature-discovery/releases/tag/v0.2.0

Release announcement:
https://groups.google.com/forum/#!topic/kubernetes-dev/d4XkNEj64S4
Closing this issue as all the checklist items have been completed.


Cannot find tesseract.exe

Describe the bug
Text Grab is unable to find tesseract (installed via scoop) in fullscreen grab mode.
To Reproduce

Take a fullscreen grab while tesseract option enabled.
Notification says "Cannot find tesseract.exe"

Where did you get Text Grab?
Scoop
Desktop

OS:  Windows 10
Version: 22H2
Text Grab Version: 4.0.1

@nitincodery did you follow the instructions to install Tesseract?

I installed tesseract via scoop, its path is different than installing the tesseract setup file, but the tesseract via scoop is in PATH environment variable.
Have you hard coded path of tesseract to look into program files or does it also look it in PATH env variable too? I guess it doesn't look it in PATH and just looks it in Program Files.

Text Grab looks for Tesseract in a few different possible install locations. I can look into using the PATH variables. Also I'll be adding the ability to set the Tesseract path manually: #325


Model in after model hook isn't resolved

When the afterModel hook is hit, the model hook hasn't resolved the find method.
model () {
    return this.store.findAll('news-feed')
  },
  afterModel(newsFeed) {
    return newsFeed.forEach( model => {
      ...
    })
  },

When trying to loop over the content of newsFeed, there aren't any models loaded. After the page has been rendered, the models are loaded into the store. Seems like the model hook is resolving before the models are finished loading into the store.

I'm seeing the same behavior.
DEBUG: -------------------------------
ember.debug.js:5378DEBUG: Ember      : 1.13.7
ember.debug.js:5378DEBUG: Ember Data : 1.13.8
ember.debug.js:5378DEBUG: Firebase   : 2.3.0
ember.debug.js:5378DEBUG: EmberFire  : 1.5.0
ember.debug.js:5378DEBUG: jQuery     : 1.11.3
ember.debug.js:5378DEBUG: -------------------------------

Thirded.

Same, model in afterModel is blank, then records load in afterwards

This behavior was working correctly under versions:
"ember": "1.13.5",
"ember-data": "1.13.7",

This will be fixed with #335 . I will make a release today

:+1:

1.6.2 is out


Add my first file

I have created a new branch, created a file, and made a commit.

This is my comment


Update how-to-connect-health-operations.md

Can we know when this Note "Instead of sending a message for every sync error every time it occurs we will send out a daily digest of all errors the backend service has returned" was included in this document and by whom ?
Can we include when this change was implemented?

@AJM20202021 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#hold-off
@billmath Could you take a look at the PR? Note that the PR can't be merged as-is; it's reporting an issue. Thanks!

#please-close


File permissions are not copied correctly to the sandbox

Couldn't immediately find the name of the package for the babel transpiler from docs, so I googled it and got https://www.npmjs.com/package/stryker-babel-transpiler . But that doesn't work. Eventually found it is @stryker-mutator/babel-transpiler.
I guess all the packages moved to an org scope recently. Maybe deprecate the old ones + put a big disclaimer in the readme pointing to the correct package?

Actually, I am have more issues, the above package didn't work.
Trying to run against terser.
10:54:39 (66028) ERROR StrykerCli an error occurred { Error: Could not inject "InitialTestExecutor". Inner error: Could not inject "TranspilerFacade". Inner error: Cannot load Transpiler plugin "babel". In fact, no Transpiler plugins were loaded. Did you forget to install it?
    at ClassProvider.injectClass (/Users/cjamcl/src/terser/node_modules/typed-inject/src/InjectorImpl.js:35:19)
    at ClassProvider.injectClass (/Users/cjamcl/src/terser/node_modules/typed-inject/src/InjectorImpl.js:95:22)
    at Stryker.<anonymous> (/Users/cjamcl/src/terser/node_modules/@stryker-mutator/core/src/Stryker.js:74:30)
    at step (/Users/cjamcl/src/terser/node_modules/tslib/tslib.js:133:27)
    at Object.next (/Users/cjamcl/src/terser/node_modules/tslib/tslib.js:114:57)
    at fulfilled (/Users/cjamcl/src/terser/node_modules/tslib/tslib.js:104:62)
    at <anonymous>

module.exports = function(config) {
  config.set({
    mutator: "javascript",
    packageManager: "npm",
    reporters: ["html", "clear-text", "progress"],
    testRunner: "command",
    transpilers: ["babel"],
    coverageAnalysis: "all"
  });
};

diff --git a/package.json b/package.json
index d05e452e..92f99546 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,10 @@
     "source-map-support": "~0.5.9"
   },
   "devDependencies": {
+    "@stryker-mutator/babel-transpiler": "^1.1.1",
+    "@stryker-mutator/core": "^1.1.1",
+    "@stryker-mutator/html-reporter": "^1.1.1",
+    "@stryker-mutator/javascript-mutator": "^1.1.1",
     "acorn": "^6.0.4",
     "coveralls": "^3.0.2",
     "cross-env": "^5.2.0",

any idea what's wrong here?

Thanks for letting us know! It looks like our deprecation of the old package wasn't successful.
You should see a similar warning like this on the npmjs page for stryker-babel-transpiler:

(taken from https://www.npmjs.com/package/stryker)
We'll fix this.

How do you run Stryker? Do you have a npm script in your package.json like this:
"scripts": {
    "test": "....",
    "stryker": "stryker run"
  },

or do you use the stryker-cli package?
stryker run

If you use the stryker-cli, could you check the version for me please?
npm list -g stryker-cli

If this is below 1.0.0, could you upgrade that to 1.0.0 as well?

It looks like our deprecation of the old package wasn't successful.

Well... it was. I just decided to only deprecate the Stryker core package. I first wanted to see how it looked in the console, and it took a while to propagate. I will deprecate the rest when I find some time.

I have deprecated the old packages, so the only thing to do is make sure that @Hoten can run Stryker

@Hoten Are you still having issues?

Separate issue
Minor UI issue with the option [optional] What kind transformations should be applied to your code? in init. As a user, of course I don't fully read instructions (heh) and I hit "Enter" on babel with the intention of selecting Babel. This required me to manually install babel when getting the error in run.
Mixing "Enter" with "yes, select this currently selected option" (most of the setup questions) and "yes, submit the options I've toggled" (the multi-select questions) is leads easily to this user error. Not sure of the best solution, but what about swapping Enter/Space bar for multi select questions?
Running Stryker against terser
I actually don't need or want the babel transform for this :)
My config now:
module.exports = function(config) {
  config.set({
    mutator: "javascript",
    packageManager: "npm",
    reporters: ["html", "clear-text", "progress"],
    testRunner: "command",
    transpilers: [],
    coverageAnalysis: "off",
  });
};

npm run test does work, but I get this on npx stryker run:

There's a line in the npm debug log that gives me a hint:

I'm experiencing the same file permissions issue with<EMAIL_ADDRESS>In my scenario, I am intentionally coupling my node module with an executable with execute permissions. I'll look into what could be causing this bug and send a PR back if I figure it out.

It looks like instead of copying files withfs.copyFile, stryker writes new files with the same name and contents with fs.writeFile. So to fix this, we'll need to figure out how to read the file permissions of every file so that we can then write new files with the same file permissions. Shouldn't be too difficult to do.

I'm experiencing the same problem here too, I can help testing if needed.
About the solution i think @anthony-telljohann is in the right direction. I know you can use fs.access to get file permissions and fs.chmod to change it.
Infortunatly I do not know the stryker project enough to make a pull request, but I'll be trying to do it. But feel free to anyone do this.

Dear stale bot, this issue is still present and should still be fixed in the future sweat\


Wrap TestFlows tests

@alex-zaitsev
3. Sometimes 60 seconds timeout is hit when running tests in docker. This is not increasing test time as soon as the tests are fine, especially if you run them natively.
4. @vzakaznikov explicitly requested the docker-wrapped tests to work w/o connection.

@alex-zaitsev,

Return back tests/test_operator.py, and remove tests/e2e/test_operator.py. Otherwise it is very hard to track changes between new and old tests.

I can create a new PR to properly move test.py and test_operator.py


Mysterious HTTP connection

The 'org list' command operates entirely locally; it processes the config files on the local machine. Yet RSpec indicates that something attempts a signed GET request to http://server/organizations/organization with the user username: it isn't clear a) what is creating this connection or b) where those sever & username details come from.

Found it; just an incorrect test.


Protocol setState send on closed channel

Not sure if this is related to #224
panic: send on closed channel

goroutine 39 [running]:
github.com/blinklabs-io/gouroboros/protocol.(*Protocol).setState(0xc0001801c0, {0xc00016e100?, {0x5d7118?, 0x40?}})
	/home/marco/.local/gocode/pkg/mod/github.com/blinklabs-io/gouroboros@v0.38.2/protocol/protocol.go:392 +0x1b5
github.com/blinklabs-io/gouroboros/protocol.(*Protocol).sendLoop(0xc0001801c0)
	/home/marco/.local/gocode/pkg/mod/github.com/blinklabs-io/gouroboros@v0.38.2/protocol/protocol.go:261 +0x85c
created by github.com/blinklabs-io/gouroboros/protocol.(*Protocol).Start
	/home/marco/.local/gocode/pkg/mod/github.com/blinklabs-io/gouroboros@v0.38.2/protocol/protocol.go:123 +0x276

This happens randomly , I tested it with some chainsync calls, the below code can be use to reproduce (at random):
func main() {
	ctx := context.Background()
	address := "<relay:port>"
	conn, err := (&net.Dialer{Timeout: time.Second}).DialContext(ctx, "tcp", address)
	if err != nil {
		panic(err)
	}

	o, _ := ouroboros.New(
		ouroboros.WithConnection(conn),
		ouroboros.WithNetwork(ouroboros.NetworkByName("mainnet")),
		ouroboros.WithNodeToNode(true),
		ouroboros.WithKeepAlive(true),
	)

	o.ChainSync().Client.Start()

	tip, err := o.ChainSync().Client.GetCurrentTip()
	if err != nil {
		o.Close()
		panic(err)
	}

	err = o.ChainSync().Client.Sync([]common.Point{tip.Point})
	if err != nil {
		o.Close()
		panic(err)
	}
	select {}
}

the exected panic here is, on purpose: chain intersection not found , every 5 execution I get at least 1 send on closed channel unexpected panic as explained above.

The send on closed channel is caused by sendLoop calling setState, here , the sendLoop is also closing the muxerSendChan here before to exit, so to prevent this unexpected panic I just added the line to wait for the muxerSendChan in the protocol cleanup, like:
<-p.muxerSendChan

before the line that is closing the p.recvReadyChan, here


Overloading issue in stringer.h

Hi there,
I'm trying to compile on OS X using XCode and am getting the following error.
Thanks.
g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1<IP_ADDRESS>)
Target: x86_64-apple-darwin18.2.0

In file included from ./json_lexer.h:67:
./stringer.h:590:21: error: call to 'toString' is ambiguous
        m_buffer += toString(arg,10);
                    ^~~~~~~~
./stringer.h:100:21: note: candidate function
        inline std::string toString(int64_t value, int base = 10, unsigned int padding = 0)
                           ^
./stringer.h:143:21: note: candidate function
        inline std::string toString(int value, int base = 10)
                           ^
./stringer.h:149:21: note: candidate function
        inline std::string toString(unsigned int value, int base = 10)
                           ^
1 error generated.

The same error also occurs when using Arm gcc.


modified for Redis single node support.

The issue is, Using protected access specifier we can't return the jedis resources from our custom redis cache util class in single node jedis pool creation. So, I have changes this from protected to public for both cluster and single node jedis pool creation supportability.

@ran-jit can you provide a snippet of why you need to change the method visibility?. I didn't understand what you're trying to do

Hello marcosnils,
http://www.programcreek.com/java-api-examples/index.php?api=redis.clients.jedis.JedisPool
Please look at the example in the above link, for set/reterive data into single redis master (non cluster), we need a public visibility of those methods.

@ran-jit code is outdated now if you call jedis.close() connection will be returned to the pool automatically. There's no need to use those methods anymore outside Jedis

You can check our tests or benchmarks https://github.com/xetorthio/jedis/blob/master/src/test/java/redis/clients/jedis/tests/benchmark that they don't use those public methods anymore.

Thanks @marcosnils.


Added an exception for the false positive from Brakeman

Brakeman is treating the rendering of a ViewComponent as a Dynamic Render Path.
As far as I can tell this is a false positive.
This appears to be a combination of both not recognising the API call and not
being aware of ViewComponents.

I'll give that a go, but I think the issue is that it see's render as being passed something user supplied and assumes its a template because it doesn't know about ViewComponents - but also doesn't recognise that the user supplied data has been filtered, because it goes through an API components - comments I've found imply it has an exception the the param is handed to an ActiveModel

Just tried the permit option, still the same issue


Fix validate utility network message

Description
This PR is to fix the message displayed while validating utility network topology
Type of change

[x] Bug fix
[ ] New sample implementation
[ ] Sample viewer enhancement
[ ] Other enhancement

Platforms tested on:

[ ] Windows
[ ] Android
[ ] Linux
[x] macOS
[ ] iOS

Off topic: I have a question about the job object. How this object is deleted? He has UtilityNetwork as parent, then it's not a leak, but I guess it should be deleted in the lambda.