[bug] Odd file issue

so whenever I run hugo server, my site works fine,  but on netlify it doesnt show any of the css. the url is https://unixgang.netlify.app . Running hugo server also gives this error
`WARN 2020/12/18 10:16:08 .File.Dir on zero object. Wrap it in if or with: {{ with .File }}{{ .Dir }}{{ end }}

Hey there! I apologize for the delays! >_<
I've been buried with stuff and I don't actively maintain this theme (at least for the time being, I've yet to push v3.0).

so whenever I run hugo server, my site works fine, but on netlify it doesnt show any of the css

Usually, that is caused by a configuration error (most likely the baseURL key). Also, if possible, could you link the repo so that I check on it?

Running hugo server also gives this error
WARN 2020/12/18 10:16:08 .File.Dir on zero object. Wrap it in if or with: {{ with .File }}{{ .Dir }}{{ end }}

It's more of a warning than an error, you shouldn't have problems continuing with the build. However, it's still something I have to address since the usage is pretty ugly (in my opinion) and potentially unsafe.
Seeing as the linked website seems fine (at least a month from when this issue is filed) so I guess this is resolved? But still, I hope this clear some things up. Let me know if you still have problems and thanks for checking out this theme, btw. :)

Hey there! I apologize for the delays! >_<
I've been buried with stuff and I don't actively maintain this theme (at least for the time being, I've yet to push v3.0).

so whenever I run hugo server, my site works fine, but on netlify it doesnt show any of the css

Usually, that is caused by a configuration error (most likely the baseURL key). Also, if possible, could you link the repo so that I check on it?

Running hugo server also gives this error
WARN 2020/12/18 10:16:08 .File.Dir on zero object. Wrap it in if or with: {{ with .File }}{{ .Dir }}{{ end }}

It's more of a warning than an error, you shouldn't have problems continuing with the build. However, it's still something I have to address since the usage is pretty ugly (in my opinion) and potentially unsafe.
Seeing as the linked website seems fine (at least a month from when this issue is filed) so I guess this is resolved? But still, I hope this clear some things up. Let me know if you still have problems and thanks for checking out this theme, btw. :)

@foo-dogsquared yeah so the repo is https://github.com/unixgang/website and can you also (just as a suggestion) try to make it easier to use as a blog theme?

@foo-dogsquared yeah so the repo is https://github.com/unixgang/website and can you also (just as a suggestion) try to make it easier to use as a blog theme?

also @foo-dogsquared we cant blog on the website, and if we do it is not on the list

also @foo-dogsquared we cant blog on the website, and if we do it is not on the list

can you also (just as a suggestion) try to make it easier to use as a blog theme?

I suppose reducing options would make it easier which is what I'm doing for the next major version of this theme. It also makes it easier for me by making it easier to modify for the site author. Much better than second-guessing which options does my hypothetical user needs.

we cant blog on the website, and if we do it is not on the list

I looked at your repo and here are some of the corrections:

In your site config (config.toml), remove the quotes of the value of hidePostsOnHome (i.e., "false" -> false). Hugo template considers an non-empty string to be equivalent to true.
Remove the drafts key in the frontmatter of your contents. The theme does not render drafts. This is universal behavior throughout the themes unless you set --buildDrafts during the build. I guess this should be documented in the manual (maybe in the content organization).

I tried the above procedures and it worked.

can you also (just as a suggestion) try to make it easier to use as a blog theme?

I suppose reducing options would make it easier which is what I'm doing for the next major version of this theme. It also makes it easier for me by making it easier to modify for the site author. Much better than second-guessing which options does my hypothetical user needs.

we cant blog on the website, and if we do it is not on the list

I looked at your repo and here are some of the corrections:

In your site config (config.toml), remove the quotes of the value of hidePostsOnHome (i.e., "false" -> false). Hugo template considers an non-empty string to be equivalent to true.
Remove the drafts key in the frontmatter of your contents. The theme does not render drafts. This is universal behavior throughout the themes unless you set --buildDrafts during the build. I guess this should be documented in the manual (maybe in the content organization).

I tried the above procedures and it worked.

It worked! Thank you very much! Should I close the issue?

It worked! Thank you very much! Should I close the issue?

Yeah sure.

Yeah sure.


App crashes on Android Nougat, Kitkat and Jellybean. Also on IOS 9 and 8

I was trying to implement a peer to peer video call. I got it working even cross platforms but it has an issue regarding with the platform versions.
I tried to debug and found out where it crashes. By the time i call getUserMedia it crashes, not if I remove the video from the object constraint parameter and leave just the audio.
For example:
working:
getUserMedia({       audio: true     })
not working:
getUserMedia({       audio: true,       video: {         mandatory: {           minWidth: width,           minHeight: height,           minFrameRate: 30,         },         facingMode: 'user'       }     })
Expected behavior
Successfully sends and receives video requests. can do peer to peer video call.
Observered behavior
App crashes upon sending video request and also upon receiving.
Steps to reproduce the problem
Start the call process or receive the call.
Platform information

React Native version: RN v 0.47.0
Plugin version: 1.58.3
OS: Android
OS version: Nougat 7.0, Kitkat 4.4, Jellybean 4.3
OS: IOS
OS version: 9, 8

Because you need to handle the permissions.

@Jerameel So you're saying there's a different permission to handle with those android and ios versions that aren't working?
I already added those permissions as docs instructed. And as what Ive said I made it work on some versions for example on android marshmallow and lollipop and on ios 10 and 11.

Yes, android has changed their policy since marshmallow, as for iOS I'm not quite sure with 8 and 9 since I'm working fine with the latest version.
Try this out,  https://github.com/yonahforst/react-native-permissions

@Jerameel Sorry for bothering you with this. I should have known this thing :). I'm gonna check the link you shared and see what I can do. Thanks for your time.

@jayspirits  No problem, you may now close the issue . :D

@Jerameel I just want to clarify that the crashing issue that i encountered has nothing to do with the permission thing. It was the getUserMedia constraint i set for the video. I provided too much height and width that causes the crashing.
But the permission work around you suggested solved a different issue i encountered after i solved the crashing problem.
Thanks a lot!


[Issue-1393] Add script for issue 1393 [internal review]

ATF Test Scripts to check FORDTCN-11981
This PR is [ready] for review.
Summary
New ATF scripts to check the issue.
ATF version
develop
Changelog
Added new scripts
CLA

[x] I have signed the CLA

@dboltovskyi Thank you for the review, all comments have been processed


Better messaging for Function signature errors .

Description
Currently when we detect incompatible changes in when running the function signature check CI job, we get inscrutable error messages . Eg : https://github.com/facebookincubator/velox/pull/7115#issuecomment-1801365422 . We need to make these more user friendly.

The error message for "Incompatible changes in function signatures have been detected." is very cryptic and people cannot understand it without help.
Example: https://github.com/facebookincubator/velox/pull/7115#issuecomment-1801365422
"Iterable item removed:" and "Found differences:" is not something regular humans understand.
It would be nice to change these messages to something like this:
Incompatible changes in function signatures have been detected.

    * dayofmonth(date) -> bigint is changed to dayofmonth(date) -> integer
    * dayofmonth(timestamp) -> bigint is removed

Changing or removing function signatures breaks backwards compatibility as some users may rely on function signatures that no longer exist.

Seeing another cryptic error message on PR #7497
Iterable item removed: [<root['in'][0] t1:'(T,constant...', t2:not present>, <root['in'][1] t1:'(T,constant...', t2:not present>]
Found differences: {'iterable_item_removed': [<root['in'][0] t1:'(T,constant...', t2:not present>, <root['in'][1] t1:'(T,constant...', t2:not present>], 'iterable_item_added': [<root['in'][0] t1:not present, t2:'(T,array(T)...'>, <root['in'][1] t1:not present, t2:'(T,array(un...'>]}

            Incompatible changes in function signatures have been detected.
            This means your changes have modified function signatures and possibly broken backwards compatibility.

Here, no signature was removed, but more signatures were added. It looks like the checking logic is not quite correct.
Also, for some reason this failure shows up as "ci/circleci: linux-pr-fuzzer-run" failure, suggesting that Fuzzer failed. But it looks like Fuzzer didn't even run. Do these failures block fuzzer runs? They probably shouldn't.
CC: @bikramSingh91 @laithsakka @kgpai

@mbasmanova In the above case Masha it is complaining about the removal of 'constness' which is possibly backwards incompatible. I will add that also to the better messaging. As per @laithsakka 's suggestion, one other thing we will do is move the signature check to end of the fuzzer run so that fuzzer can still run if we detect incompatible changes.


close by clicking outside

drop down list does not close after clicking outside it.
is there any method to force close the drop down list?

Hello ,
Did You Find Any Method to do the same ???

no

Hi guys,
The problem was that clicking inside the search is considered clicking outside the drop down window. So, a new method added
mSearchableSpinner.isInsideSearchEditText(event)
Thus, we can define an on Touch listener and check if the touch is or not inside the search and dismiss the popup window, like this:
@Override
public boolean onTouchEvent(MotionEvent event) {
        if (!mSearchableSpinner1.isInsideSearchEditText(event)) {
            mSearchableSpinner.hideEdit();
        }
        return super.onTouchEvent(event);
}

Thanks for your efforts, my issue has been solved. However, in my activity I'm using three spinners and on opening one spinner then click the second spinner to open it, the first spinner doesn't close. I used a view covers each spinner and set a touch listener on it where I can close other spinners.
        mSpinner1TouchView.setOnTouchListener(new View.OnTouchListener() {             @Override             public boolean onTouch(View v, MotionEvent event) {                 mSpinner2.hideEdit();                 mSpinner3.hideEdit();                 return false;             }         });
thank you again for your amazing library and your fast response.

Hi @Elessawy
You can use the version 1.0.7. A new status listener is added, the example project also contains an example.
In short :
mSearchableSpinner.setStatusListener(new IStatusListener() {
     @Override
     public void spinnerIsOpening() {
           mSearchableSpinner1.hideEdit();
           mSearchableSpinner2.hideEdit();
     }
     @Override
     public void spinnerIsClosing() { }
});

Thanks

Thanks Michael. I will use the latest version.
Great work, keep going :)

It Says Cannot Resolve Symbol 'IStatusListener'

make sure that you are using the latest version (1.0.7)


Added tests

WORKING:

Example auth controller
Example auth service
Example controller
Example service
Users service

WIP / NOT WORKING:

Auth controller
Auth service

Good job. Merging.
Let's discuss the actual HTTP calls tomorrow: with supertest, you can easily simulate HTTP requests.
See e.g. https://github.com/visionmedia/supertest
and how it is implemented with NestJS at https://docs.nestjs.com/fundamentals/testing (specifically End-to-end testing).


yFiles for HTML 2.5 not working

Dear Team,
I've already deploy docker chatgpt-mattermost-bot using yFiles HTML, but the image is now show correctly
it show like this https://prnt.sc/9z9Nt8pY8jek
<GRAPH>{
  "nodes":[
    {"id":"Herbivore","label":"Herbivore","type":"animal"},
    {"id":"Plants","label":"Plants","type":"food"},
  ],
  "edges":[
    {"from":"Herbivore","to":"Plants","label":"eats","type":"consumes"}
  ],
  "types":[
    {"name":"animal","shape":"ellipse","color":"#fff","thickness":2,"size":30},
    {"name":"food","shape":"ellipse","color":"#fff","thickness":2,"size":25},
    {"name":"consumes","thickness":1,"color":"#000","label":"consumes"}
  ],
  "layout":"organic"
}</GRAPH>

In the console log
chatgpt-mattermost-bot-chatbot-1  | {"level":"ERROR","time":"2023-05-10T05:45:32.466Z","name":"bot","msg":"request to http://localhost:4242/json-to-svg failed, reason: connect ECONNREFUSED <IP_ADDRESS>:4242","pid":1,"hostname":"ece245de25a2","diff":0,"err":{"msg":"request to http://localhost:4242/json-to-svg failed, reason: connect ECONNREFUSED <IP_ADDRESS>:4242","name":"FetchError","stack":"FetchError: request to http://localhost:4242/json-to-svg failed, reason: connect ECONNREFUSED <IP_ADDRESS>:4242\n    at ClientRequest.<anonymous> (/app/node_modules/node-fetch/lib/index.js:1505:11)\n    at ClientRequest.emit (node:events:513:28)\n    at Socket.socketErrorListener (node:_http_client:494:9)\n    at Socket.emit (node:events:513:28)\n    at emitErrorNT (node:internal/streams/destroy:157:8)\n    at emitErrorCloseNT (node:internal/streams/destroy:122:3)\n    at processTicksAndRejections (node:internal/process/task_queues:83:21)","message":"request to http://localhost:4242/json-to-svg failed, reason: connect ECONNREFUSED <IP_ADDRESS>:4242","type":"system","errno":"ECONNREFUSED","code":"ECONNREFUSED"}}
Is that issue compatibility or still development features if using yFiles?

The problem is that on <IP_ADDRESS>:4242 there is no yFiles for HTML Mattermost plugin server running. It cannot, though, because it has not yet even been released. If you have it, you somehow got it from our development system ;-)
See the note in the README:

Note The YFILES_SERVER_URL is used for automatically converting text information created by the bot into diagrams. This is currently in development. You can see it in action, here: LinkedIn Post If you are interested in getting your hands on the plugin, please contact yWorks!

Send an email to the our team if you want to get on the early access program list. The plugin is not yet avaible, but you can try a very similar version on our free online graph editor yEd-Live!

Dear @yGuy
Thanks for the clarifications


When I press the button filter the program stop working

Look, let me translate it to you...
It said: " { -333.5066... } is not a valid value for the property 'MaxWidth' ".

this is fixed in the current version of the repository.
best regards

I will check that. Greetings from Mexico. You guys are making and incredible work.


colours all messed up (sorry)

Describe the problem

I don't know what happened to cause this.
Back story:
Things were working - afaik - quite happily.
I opened a function node and the background colour was WHITE.
I tried a few others and they were the same.
Strange as I have worked on this machine recently and not seen this problem.
I have recently installed the theme on another machine and remembered the new way to do it.
So I went through the motions of checking.   the settings.js file didn't look right.
So I checked the pallet manager and the theme wasn't shown.
Installed it edited the theme and restarted.
Oh the pain.  (Sorry)
Same.
I have 3 4 machines running NR all with NR 3.0.2 (or 3.0.1 maybe) and they were all working happily.
Now it is confusing to me.
I've installed the node on 3 of them and now it is the dashboard list is messed up.
function nodes are fine.
Please help.
Steps To Reproduce
There are no errors listed/shown.
Expected Behavior
No response
Theme Collection version
No response
Node-RED version
3.0.2
Platform/O.S.
Buster
Browser(s)
Firefox

It looks like it did not recognize CSS variables.
What version of Dashboard do you have installed?
Theme support was introduced in version 3.2.0.

2.26   3.16 fail.
3.5 working.
3.17 working.
So 3.16 to 3.17 could be a problem.
Argh.   Ok, I'll update them and get back to you.
Very sorry.   But thanks.

You are the best.

Didn't keep up to date with things.
I guess I am glad it is/was nothing else/serious.


Does it support async?

Rocksdb allows for async db.get. Can it be used with rocksdict or this should be a feature request?

Currently no async is supported.

Thank you! It would be helpful to support it.


[react-graphql] Update to documentation and when to use Preload, Prefetch, KeepFresh

Description
The documentation does not explicitly say when we need to use MyComponent.Preload or not.
Type of change

[x] react-graphql Patch: Documentation fix (non-breaking change which fixes an issue or adds documentation)
[ ]  Patch: Bug (non-breaking change which fixes an issue)
[ ]  Minor: New feature (non-breaking change which adds functionality)
[ ]  Major: Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist

[ ] I have added a changelog entry, prefixed by the type of change noted above (Documentation fix and Test update does not need a changelog as we do not publish new version)

Just merged master into this branch. Are we good to merge this @TheMallen and @attila-berki ?


Replace DAO info with subgraph calls

Description

replaces zora api calls with subgraph calls for dao info

Motivation & context

reduce reliance on zora apis
prepare for L2 deployments
prepare for new protocol changes

Code review

does dao info match with zora api data?
does dao data like ownership count and my DAOs queries properly display
note: ownership count might be off by one due to zora api counting the 0x0 address as an owner when the subgraph does not

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist

[x] I have done a self-review of my own code
[x] Any new and existing tests pass locally with my changes
[x] My changes generate no new warnings (lint warnings, console warnings, etc)

noticing that the Owners count is off by 2 in the subgraph build - besides the 0x00 burn address, do you know which other address is the subgraph not counting?
@neokry

left: subgraph
right: zora api
a slight discrepancy in the order of the DAOs shown in the dropdown, looks like the subgraph one shows DAOs according to most recently joined/created?

noticing that the `Owners` count is off by 2 in the subgraph build - besides the 0x00 burn address, do you know which other address is the subgraph not counting?
@neokry

fixed now. subgraph changes were not merged in from token branch

left: subgraph right: zora api
a slight discrepancy in the order of the DAOs shown in the dropdown, looks like the subgraph one shows DAOs according to most recently joined/created?

the zora api call didn't have any ordering so there was an implicit order happening on the backend that I'm not sure how to replicate or if we should replicate it. if you have a suggestion for an explicit ordering I can add it in. The implicit ordering from the subgraph is date joined I think (like you mentioned).


-Q string literal doesn't work with backslash?

Command I'm using:
ag -Q App\User
I would expect the string literal App\User to be searched for but it appears that I still need to escape the backslash.
The command that does work is:
 ag -Q App\\User
Is this intended behaviour or a bug?

This is a shell quoting/escaping issue, nothing to do with ag. Your shell turns \U into just U. Backslashes and other special characters need to be quoted or escaped for any shell command.

Thanks for clarifying.


#650 fix get topology

The get_topology function is returning weird values since the usage of hwloc #563.
https://github.com/daphne-eu/daphne/blob/ccba9387a9b33e5c6b46df0aa3477d3bbab0fbfd/src/runtime/local/vectorized/MTWrapper.h#L87-L96
Namely, the function was just constructing vectors of the correct sizes, but not actually setting the information.
This PR uses hwloc to return the same information as before #563 and fix #650

Hi @GuilloteauQ , great catch on the missing call to destroy, your fix for #650 and the topology walk look good to me. Thank you for the contribution.


go test cache check wrong opened file when testing if user do os.Chdir

What version of Go are you using (go version)?

$ go version
go version go1.16.6 windows/amd64

Does this issue reproduce with the latest release?
Yes, I think go1.16.6 is the latest release now.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=$HOME\AppData\Local\go-build
set GOENV=$HOME\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=$HOME\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=$HOME\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=$HOME\scoop\apps\go\current
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=$HOME\scoop\apps\go\current\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.16.6
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=\path\to\my\go\project\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -fmessage-length=0 -fdebug-prefix-map=$HOME\AppData\Local\Temp\go-build3183732203=/tmp/go-build -gno-record-gcc-switches

What did you do?

I'm testing my go code with some external files as deps.
func TestZipArchive(t *testing.T) {
	r, err := os.Open("./testdata/big_file.bin")
	assert.Nil(t, err)
	defer r.Close()

   // do something
}

and there is an underscore importing doing this:
this changes the CWD to PWD, which is the root of my project directory.
import (
	"os"
	"path"
	"runtime"
)

func init() {
	_, filename, _, _ := runtime.Caller(0)
	dir := path.Join(path.Dir(filename), "..", "..")
	if err := os.Chdir(dir); err != nil {
		panic(err)
	}
}

So, then os.Open("./testdata/big_file.bin") should open $PWD/testdata/big_file.bin, not pkg/testdata/big_file.bin
What did you expect to see?
go tests are cached successfully with the real files opened, not the arguments.
What did you see instead?
$ go test ./pkg/...
ok      some/pkg (cached)
$ go test ./pkg/...
ok      some/pkg (cached)
$ touch ./pkg/testdata/big_file.bin
touch: cannot touch './pkg/testdata/big_file.bin': No such file or directory
$ mkdir ./pkg/testdata
$ touch ./pkg/testdata/big_file.bin
$ go test ./pkg/...
ok      some/pkg 0.100s
$ head -c 500 /dev/urandom > testdata/big_file.bin
$ go test ./pkg/...
ok      some/pkg (cached)

can you show the directory/file layout relative to the root?

can you show the directory/file layout relative to the root?

/path/to/some/go.{mod,sum}
/path/to/some/pkg/code.go
/path/to/some/pkg/code_test.go
/path/to/some/testdata/big_file.bin

Duplicate of #44625

Oh, sorry for the trouble! I didn't find it.


Why does HNC use x-k8s.io suffix instead of k8s.io

When I install hnc, I notice crd name ends with x-k8s.io. I am just curious any reason to use this suffix :D
namespace/hnc-system created
customresourcedefinition.apiextensions.k8s.io/hierarchyconfigurations.hnc.x-k8s.io created
customresourcedefinition.apiextensions.k8s.io/hncconfigurations.hnc.x-k8s.io created
customresourcedefinition.apiextensions.k8s.io/subnamespaceanchors.hnc.x-k8s.io created
role.rbac.authorization.k8s.io/hnc-leader-election-role created
clusterrole.rbac.authorization.k8s.io/hnc-manager-role created
clusterrole.rbac.authorization.k8s.io/hnc-proxy-role created
rolebinding.rbac.authorization.k8s.io/hnc-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/hnc-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/hnc-proxy-rolebinding created
secret/hnc-webhook-server-cert created
service/hnc-controller-manager-metrics-service created
service/hnc-webhook-service created
deployment.apps/hnc-controller-manager created
validatingwebhookconfiguration.admissionregistration.k8s.io/hnc-validating-webhook-configuration created

I forget when it happened, but only "core" Kubernetes objects are supposed
to use the ".k8s.io" suffix from now on. Any non-core object from a
Kubernetes SIG or WG - such as HNC - is supposed to use ".x-k8s.io"
("Kubernetes eXtension," I believe) instead. Hope this helps!
Cheers, A
/close
On Sat, Nov 21, 2020 at 2:05 AM Jiaxin Shan<EMAIL_ADDRESS>wrote:

I am just curious any reason to use this suffix :D
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/multi-tenancy/issues/1282, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AE43PZEFFFCR5GWSHFPNEK3SQ5RDDANCNFSM4T5TOLQA
.


Fsync metric warning counter, so that there's an explicit metric for …

Alot of people seem to use this log as an indicator, the metrics that are published should track it directly.  Note that the buckets are already provided,

This is just tracking the amount of times that any of those buckets are too high, so the minute its rising its an instant barometer of failure that is independent of queries/alerts that might be customized by a user.

Its not bucketing with exponential resolution, so we can see statistics on what the real speed of disk limitations are.

Example issues: https://github.com/coreos/etcd/issues/6530 https://github.com/coreos/etcd/issues/6138

It seems like this should be a prometheus alert rule instead of a full metric exported by etcd since it's a warning that can be derived from metrics that are already available.
The current metric could potentially be updated to have more buckets or be linear, though.

Im ok with linear, I'll push that.
How strongly do you feel about this not being a second metric?  I really would prefer it as another metric because it needs to track what is being logged by the application.  There is no guarantee that secondary alerts will correspond to the sync duration messages, and sync duration logic really is now the main litmus test that people use on large etcd clusters with many members and heterogenous disk performances

If you still disagree with the secondary metric I will push just the linear modification with bucket size = 2 and we can move forward . I just wanted to double check :).

How strongly do you feel about this not being a second metric?

Specialized derived metrics (e.g., did etcd log a wal warning due to fsync) seem like they'd wind up being obsoleted / will not behave in ways will especially desirable in practice / will make that warning "official" and a maintenance burden; alerts already cover this behavior. The wal package's warnSyncDuration is more guidance than a strict rule. Likewise, there's no precedence for this sort of metric where it's deeply tired with a warning.
One possible alternative is etcd could have a general metric for counting how many warnings etcd has logged in total. At least that way it wouldn't create any strict dependency between a specific warning message and a named metric.
My only concern with making the current metric linear is it might break compatibility with the exponential version, but judging by the prometheus output it should be OK.
/cc @xiang90

we really need fine grained info in these numbers, its the most useful
important metric in any real cluster that is under strain.
lets go with linear for now.  i doubt it will break compatibility b/c the
absolute values will be the same.
On Wed, Apr 5, 2017 at 2:02 PM, Anthony Romano<EMAIL_ADDRESS>wrote:

How strongly do you feel about this not being a second metric?
Specialized derived metrics (e.g., did etcd log a wal warning due to
fsync) seem like they'd wind up being obsoleted / will not behave in ways
will especially desirable in practice / will make that warning "official"
and a maintenance burden; alerts already cover this behavior. The wal
package's warnSyncDuration is more guidance than a strict rule. Likewise,
there's no precedence for this sort of metric where it's deeply tired with
a warning.
One possible alternative is etcd could have a general metric for counting
how many warnings etcd has logged in total. At least that way it wouldn't
create any strict dependency between a specific warning message and a named
metric.
My only concern with making the current metric linear is it might break
compatibility with the exponential version, but judging by the prometheus
output it should be OK.
/cc @xiang90 https://github.com/xiang90
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/coreos/etcd/pull/7671#issuecomment-291945571, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAya_3cqssdYMPGKrUL2HQH79WzUSbSsks5rs9c7gaJpZM4M0NTz
.

--
jay vyas

Done ~ @heyitsanthony

./build and go test ./wal work for me.  I assume these failures are just flakes.  All set otherwise ?

@heyitsanthony I have an idea ------- maybe a gauge ?  That way rather then a bucket we simply have a read out that will go up or down.  Thats probably more useful then the total amount .

happy to delete the other metric if desired

# HELP etcd_disk_wal_fsync_duration_current The current WAL fsync time, if its rising, disk slowness may decrease availability
# TYPE etcd_disk_wal_fsync_duration_current gauge
etcd_disk_wal_fsync_duration_current 0.009962093
# HELP etcd_disk_wal_fsync_duration_seconds The latency distributions of fsync called by wal.
# TYPE etcd_disk_wal_fsync_duration_seconds histogram
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.001"} 0
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.002"} 0
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.004"} 0
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.008"} 0
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.016"} 1
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.032"} 1
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.064"} 1
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.128"} 2
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.256"} 2
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.512"} 2
etcd_disk_wal_fsync_duration_seconds_bucket{le="1.024"} 2
etcd_disk_wal_fsync_duration_seconds_bucket{le="2.048"} 2
etcd_disk_wal_fsync_duration_seconds_bucket{le="4.096"} 2
etcd_disk_wal_fsync_duration_seconds_bucket{le="8.192"} 2
etcd_disk_wal_fsync_duration_seconds_bucket{le="+Inf"} 2
etcd_disk_wal_fsync_duration_seconds_sum 0.07942984800000001
etcd_disk_wal_fsync_duration_seconds_count 2

what is the problem with the old metrics? why do you want to track the most recent sync duration?

The modulation of sync duration is an important and valuable metric for predicting, diagnosing failures on hardware with different types of backing disks.  This is especially relevant for things that might, for example, run on an open on prem. cloud with different options for storage.

@jayunit100 you can also achieve what you said with today's metrics. i want to understand the reason for adding the new metrics, not for exposing the fsync duration.

Example of the probelm: In a running cluster, you might get 65 vs 128 seconds for fsync times.
Solution: Have a way to report, and act against, fine grained WAL times in metrics.

Propsed solution: the implementation of a WAL tracking metric via a Gauge.
An alternative solution: Provide linear spacing of the histogram, but that leads to explosion of metrics (8192 different values).

Both have been implemented in this PR and the former is much more practical since the linear spacing of histogram records leads to metric explosion.
Makes sense @xiang90 ?

you might get 65 vs 128 seconds for fsync times.

i do not really think this matters. if fsync takes more than 1s, they are equally bad. there is something goes wrong with the disk. at that point, you probably should start to check disk stats, not rely on etcd metrics. etcd metrics is not designed to troubleshoot the disk. but os/disk metrics are.

@xiang90 are you ok with a direct metric for fsync warnings ? That really was my original PR - a histogram of all fsync warnings.  The goal is to track the number of fsync warnings as a metric directly, rather then infer them.
Im happy to do:

a histogram of fsync warnings (this can easily be tied to an alert+be used for forensics)
a gauge that gives the current fsync value (this is easily tied to an alert above 1s threshold)

The current metric doesn't lend itself to any obvious alert unless we scoop all buckets above 2s.

the goal is to track the number of fsync warnings, period

no. the goal is to track abnormals. warnings is not meaningful when you know how your system should behavior. that is why it is not an error.
if you know your p99 fsync should take less than 1s, you track that. if you know your p99 should take less than 2s, you track that.
all you need is to write a Prometheus rule to convert today's metrics to an alert.
I feel you want to use metrics as a direct counter for monitoring or altering, which is not our intention.
if there is anything important that you cannot derive from today's metric, we are happy to add. or we do not.

So, are you saying that tracking fsync warnings as a metric, in any form,  isn't acceptable ?  If so ill close, but please reconsider because this is really very valuable to us, and correlates very closely to things we care about.  grepping through logs for something that can be published as a metric in 4 lines of code is very unfortunate :(

@jayunit100 only 4 lines is not a good justification for including the code. I've already explained why it's a bad idea to have this sort of metric-- metrics that are tied to warnings forces that warning to be part of the official metric API, despite those warnings never really being intended to be processed by a machine (e.g., why 1 second, why not 500ms?).
This is a maintenance burden that etcd will have to carry for essentially no reason; the current metrics are sufficient for determining whether the warning was triggered. The fsync data is already tracked with etcd_disk_wal_fsync_duration_seconds_bucket.
Why is a prometheus alert not enough? If alerts are unacceptable, why not have a script to scrape the /metrics endpoint? Why does etcd need to support a completely redundant metric?

@heyitsanthony well, the instantaneous changes, not summary, are what are super useful here.

@jayunit100 you're describing time series information, not instantaneous data. Prometheus already does this with bucketed data afaik. Have you tried it?

It sounds like your suggesting we do something like this
  (rate(etcd_disk_wal_fsync_duration_seconds_bucket{le="1"}[2m]))
/
  rate(etcd_disk_wal_fsync_duration_seconds_bucket[2m])

IMO this can still be improved w/ log rollups or explicit inof, exponentially > 1 s is too low resolution to be helpful in debugging, but i guess this is in some kind of no-mans land of 'whose responsibility it is to make sure your disks are working properly'.  thanks again for the feedback on this @heyitsanthony @xiang90 .


How can I get msg send by parent tab ?

I check the api doc and I use the broadCastAll method to broadcast msg, but I can't get msg from child tab. Is there anything I have missed ?
// parent.html
// I can't get the msg send by child
parent.broadCastall(msg);

// child.html
// I also can't get the msg send by parent
child.sendMessageToParent(msg);

Check the example folder.
This file child.html registers a listener function onParentCommunication
var child = new AcrossTabs.Child({
	onReady: onReady,
	onInitialize: onInitialize,
        onParentCommunication: onParentCommunication
})

function onParentCommunication(dataReceived) {
	// do stuff with dataReceived
};

Hope, your issue is now resolved.
The issue should be closed now.

@softvar perfect ! Thank you for your wonderful answer


Type not found : sys.db.Sqlite when using hx4compat

In a C++/Hl/Neko/Php project, when using hx4compat there is still an error when trying to import sys.db.Sqlite.
Type not found : sys.db.Sqlite

Interestingly, the error is slightly different if hx4compat is omitted altogether, where it includes line references:
src/Main.hx:1: characters 8-21 : Type not found : sys.db.Sqlite

example.zip

Try removing @:coreApi there

Try removing @:coreApi there

Yep, thanks, that does the job: #4.


Create new chapter from line- Bugs

https://youtu.be/6AsGN4kElS4

Sorry, I can't figure out what's happening in this video. Need some words :-)
For example, at 23 seconds I see 3 chapters and 2 seconds later just 2 of them?! I think your video captures just the main window so maybe something happened in between as I can't see any dialogs or context menus.
Also, the title says "Create new chapter from line".  At what point does this happen in the video?
And those wrong engine evaluations towards the end: is that in a newly created chapter? I need to know the steps to repro the problem and I can't do it from this video.

Ok, I think I can reproduce a very similar problem after creating a Chapter from Line. I should be able to figure out what goes wrong there.

Ok, that was an interesting one :)  I have decided to share one more private build before going with public release. The most recent fixes were in sensitive areas with risk of regressions so I want to test a bit more. Usual place https://chessforge.sourceforge.io/Releases/latest/ChessForge.msi (v 1.2.5)

I apologize for not responding sooner. I created the issue yesterday and then went to bed shortly after. I just woke up and saw your response.
I'm glad to hear that you've been able to reproduce the bug and fixed it. Thank you for your quick response and for working so hard to fix it.
I appreciate your help in making ChessForge a better program.
I'm happy to help you with any further testing that you need to do. : )


Portfolio-js

Here i am updating my html css linters

Hi @Obimbo07
While you made a great effort in this project, unfortunately, I cannot proceed to review your code.
Invalid Code Review Request
You have submitted a project, that is not meant for this milestone. This PR is meant for the Moblie menu milestone and you submitted it for the Pop up milestone. Kindly submit the right PR.
Your Code Review Request will be marked as invalid in your Dashboard, so please submit a new one once you are ready 🙏
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

Invalid Code Review Request does not count into the code reviews limit.


Spark not returning results

I am working with the 5.0.5 version and start it up as an analytics cluster. I create a simple key space and table with key and value pairs. I can open the spark command line and issue command but as soon as it needs to return results the CLI quits responding and no results are every returned.
Is there a simple config here that I am missing?
Thanks

Apologies, this turned out to be some issues on my local network.


Error when already registered but not logged in

When buying a membership requiring registration and using an existing email while not logged in, the checkout would fail as customer ui would be null and so running $user = $customer->getUserInfo()->getUserObject(); would throw an "not an object" error.
What's more, the || instead of the && doesn't seem logical.

I'm going to blindly merge this - but this will certainly correlate to how @Mesuva wants to better handle issue #163


Enhanced printing of components and forecasts.

Codecov Report

Merging #8 into master will decrease coverage by 6.12%.
The diff coverage is 3.57%.

@@            Coverage Diff             @@
##           master       #8      +/-   ##
==========================================
- Coverage    50.9%   44.77%   -6.13%
==========================================
  Files          22       23       +1
  Lines         998     1043      +45
==========================================
- Hits          508      467      -41
- Misses        490      576      +86

Impacted Files
Coverage Δ

src/InfrastructureSystems.jl
100% <ø> (ø)
:arrow_up:

src/serialization.jl
0% <ø> (ø)
:arrow_up:

src/forecasts.jl
45.85% <ø> (-5.86%)
:arrow_down:

src/system_data.jl
58.65% <ø> (+1.64%)
:arrow_up:

src/components.jl
70.96% <100%> (-5.04%)
:arrow_down:

src/utils/print.jl
2.4% <2.4%> (ø)

src/utils/utils.jl
17.64% <0%> (-11.15%)
:arrow_down:

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 37975d1...db4ee54. Read the comment docs.

Reviewing this is probably beyond me at the moment. Will this supersede my PR in PowerSystems.jl?
I do have one high-level comment. It looks like Base.summary() is intended to have two methods, one for IO and another that returns a string (when no IO argument is provided). It looks like you are not providing methods that return the string. (In my PR, I missed providing methods with the IO arument.)
See the output of ?Base.summary. Quick testing with an array gives
julia> summary(stdout, y)
100-element Array{Float64,1}
julia> summary(y)
"100-element Array{Float64,1}"

So it looks like the convention is: summary(obj) returns a short string and summary(IO, obj) is the same as print(summary(obj)).

Good catch.  I'll fix it.  This does supersede your PR.  We've changed the world on you.  It will hopefully make your life in WaterSystems much easier.


Init command to add entries related to Haul in .gitignore.

What's the status of this PR?

I need to finish with the split stuff, I'll let you know.


Error while loading libatk-bridge-2.0.so.0 on a shared hosting platform

I am trying to deploy my Node.js app, which is using Puppeteer, on a shared hosting platform (Linux Server), but I got the following error:
Error: Failed to launch the browser process!\n/var/app/node_modules/puppeteer/.local-chromium/linux-818858/chrome-linux/chrome: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory\n\n\nTROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md\n"
I know I could fix it by installing the missing libatk-bridge dependency, but the problem is, I don't have the rights to do so on the shared hosting platform.
Is there any workaround to solve the issue? Or is there a way to embed the library as a static library instead of a shared library?

Any solution?

Any solution yet? facing similar issue


bump dependencies

Applied mkpr on package.json
/tmp/mkpr.sh

:tada: This PR is included in version 1.34.10 :tada:
The release is available on:

npm package (@latest dist-tag)
v1.34.10
GitHub release

Your semantic-release bot :package::rocket:


Remove useless logic about add conf when create a new engine

Why are the changes needed?

Remove useless logic about add conf when create a new engine
This code worked before commit [575e9c95999d70ac88e8ee0bdd3b58bc016bc934] which unset FRONTEND_THRIFT_BINARY_BIND_HOST when copy conf.
The code which removed in this PR, only help kyuubi on k8s with spark client mode. Can be replace by set spark.driver.host.
Considering this approach is not recommended, so remove this code in this PR.
How was this patch tested?

[X] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[ ] Run test locally before make a pull request

Thanks, merging to master


fix: origin error when not from localhost

Fix: https://github.com/casdoor/casdoor/issues/700

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

@fukco I don't suggest changing too much code than you need. It's much more than your part. And it's also breaking our original design like different frontend and backend ports. So closed here.

My PR still compatible with your original design with two differen frontend and backend ports.
Sorry about to change too much code, I will submit a new PR only solve this issue.

@fukco plz don't PR for now. Actually I tent to not fix this one, as it may be your own env's issue.
So we will wait for other users' voice. If this is a common issue (> 5 people report it since now), then we will re-consider it.

Okay, In my situation, I deploy it in a server, and develop in my PC or MAC.  If i use nonloopback address, OIDC discovery address always point to https.
I don't think it is a good design.

I agree with @fukco, @hsluoyz non-production vpn-accessed environments do not usually have HTTPS support.

@amoraitis the code has changed a lot after 2 years. The original issue should have already been fixed. Don't append this old ticket. Create new issue if needed based on latest codebase.


Serialize Dataframe

How do I serialize a dataframe efficiently (records in bulk) onto the disk, with mapdb. My use case is,
I have a large dataset for text classification, it takes a long time to deserialize and tokenize the text. I want to try out multiple experiments, without having to do tokenization again to convert to Record instances.

Looking at the latest code, it seems that whenever Dataframe is created backed by MapDB, it creates a temp DB file. The temp files get deleted whenever the JVM shuts down.
However, there are many use cases where one would like to deserialize a large dataset into a disk backed map. Then they may later try out multiple algorithms on that dataframe. This is especially helpful during experimentation phase if the input dataset takes long to translate into a Dataframe.
What are you thought? If implemented what should the design look like? I can contribute this features if it makes sense.

What you describing makes sense but unfortunately it is not currently supported. A way around it would be to store the records externally from the Dataframe and then read them and load them back to the Dataframe when necessary.
Adding the feature is not that straightforward, I'll need to check out the design as you said. I'll keep you posted.

This feature is implemented in the experimental branch. It will be released on version 0.8.0.


Support returning values from constructor functions

TypeScript Version:  2.3.2
Code
// example.js

var Person = function (firstNameOrPojo, lastName) {

    if (typeof firstNameOrPojo === "string") {
        this.firstName = firstNameOrPojo;
        this.lastName = lastName;
    } else {
        return new Person(firstNameOrPojo.firstName, firstNameOrPojo.lastName);
    }
};

Person.prototype.greet = function greet() {
    return `Hello, I am ${this.firstName} ${this.lastName}.`;
};

var fred = new Person({firstName: "Fred", lastName: "Flintstone"});

console.log(fred.greet());

Expected behavior:
I would expect tsc to compile this code without errors or warnings, especially considering that the returned type always matches the expected type.
In JavaScript, it is possible for a constructor function to return an object.  When this is done, the returned object becomes the result of the whole new expression (see step 3 in this MDN documentation for the new operator).
Being concerned with types, I can see why the TypeScript compiler would be hesitant to support this quirk of the JavaScript language.  After all, the compiler would have to verify that the value explicitly returned is the same type that would be returned from the constructor had it returned undefined (the usual case).  I think this should be supported, because:

TS claims to be a superset of JS.
This is a useful and popular JavaScript technique

The above code runs just fine in Node.js and in the browser:
$ node example.js
Hello, I am Fred Flintstone.

Actual behavior:
tsc issues an error when checking this code:
$ tsc --allowJs --checkJs --outDir ./dist example.js
example.js(8,16): error TS2350: Only a void function can be called with the 'new' keyword.

The type is actually figured out correctly, regardless what you return; the compiler knows to use the return type when called as a function, and the instance type when used as a constructor. the error is what needs to be addressed for .js file. the pattern is still not allowed for a .ts file (since we error on the conservative side there).

+1
Especially now that we have Proxy, there are nice behaviors that we could implement by returning a proxy instead of the class instance directly. But that won't be possible unless we can infer or specify the return type of the constructor.

if you could put
get(target, name) {}
and
set(target, name, value) {}
inside the class constructor to override property assignment operators for (any all properties of) Object/Array, then well... javascript wouldn't be falling short.


fix getCurrentBucket call

Pull Request Test Coverage Report for Build 2144

2 of 3 (66.67%)  changed or added relevant lines in 1 file are covered.
6 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.8%) to 78.782%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/modules/lending/BucketLender.ts
2
3
66.67%

Files with Coverage Reduction
New Missed Lines
%

src/modules/lending/BucketLender.ts
6
77.37%

Totals

Change from base Build 2135:
-0.8%

Covered Lines:
749

Relevant Lines:
886

💛  - Coveralls


[BUGFIX] Fixes invalid yaml when .Values.rbac.enabled is set to true

Q
A

Bug fix?

New feature?
no

API breaks?
no

Deprecations?
no

Related tickets
fixes #X, partially #Y, mentioned in #Z

License
Apache 2.0

What's in this PR?
Fixes invalid yaml when .Values.rbac.authDelegatorRole.enabled is set to true. A yaml separator is missing then.
Original commit was: https://github.com/banzaicloud/bank-vaults/pull/1101
Seems like nobody tested it so far.
To Do

[ ] Helm Chart needs to be updated

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

Thanks @kschu91 ! Nice catch.

Please bump the vault-secrets-webhook chart version to 1.6.1

@kschu91 Please bump the vault-secrets-webhook chart version to 1.6.1

Sorry, forgot that. Already done :)


[KeyVault] - Add exclusion for known spellcheck issue

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Add a changelog entry for this PR by answering the following questions:

What's the purpose of the update?

[ ] new service onboarding
[ ] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When are you targeting to deploy the new service/feature to public regions? Please provide the date or, if the date is not yet available, the month.
When do you expect to publish the swagger? Please provide date or, the the date is not yet available, the month.
If updating an existing version, please select the specific language SDKs and CLIs that must be refreshed after the swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No refresh required for updates in this PR

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of "no breaking changes"
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

Applicability: :warning:
If your changes encompass only the following scenarios, you should SKIP this section, as these scenarios do not require ARM review.

Change to data plane APIs
Adding new properties
All removals

Otherwise your PR may be subject to ARM review requirements. Complete the following:

[ ] Check this box if any of the following apply to the PR so that label "WaitForARMFeedback" will be added automatically to begin ARM API Review. Failure to comply may result in delays to the manifest.

Adding a new service
Adding new API(s)
Adding a new API version
-[ ] To review changes efficiently, ensure you are using OpenAPIHub to initialize the PR for adding a new version. More details, refer to the wiki.

[ ] Ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If any of the following scenarios apply to the PR, request approval from the Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in a stable version
[ ] Removing properties in a stable version
[ ] Removing API version(s) in a stable version
[ ] Updating API in a stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

@heaths not sure why pipeline is pending for public.rest-api-specs - do you know who owns this pipeline or who I can reach out to?

According to https://github.com/Azure/azure-rest-api-specs/pull/18031/checks?check_run_id=5366659603 it completed. Seems to be an AzDO/GitHub interaction issue. I've seen these too many times before.
@lmazuel can you merge this so we can proceed with the Key Vault / Managed HSM swagger GA?

@lmazuel friendly ping - would you mind merging this for us? The builds all pass, just seems that GH isn't getting updated...

/azp run public.rest-api-specs

@akning-ms the public.rest-api-specs pipeline, despite succeeding, is not reporting back status rather frequently. On this PR it's been twice. I restarted the pipeline and it again completed successfully. Can someone from your team look into this? As the only "error" preventing checks from passing, I cannot merge this and we have to have admins do it.
@lmazuel can you please merge this? Despite what checks show here, if you go to the checks tab itself it shows all pipelines passed. Unfortunately, that's not enough to allow me to merge it. This will hold up our KV release.


bumped rollup

There are a lot of fixes since the last version: https://github.com/rollup/rollup/blob/master/CHANGELOG.md
I personally ran into this issue and would like to see it fixed: https://github.com/rollup/rollup/issues/668

Is builder still targeting Node 0.10? Because rollup evidently is not.

0.10 is reaching end of support in October: https://github.com/nodejs/LTS#lts-schedule, so I think it should be safe to exclude it from travis config.


Flesh out the contributor's guide

CONTRIBUTING.md should be the TL:DR version of what is published on RTD. The former should include a link to the latter.
Content to include (in no particular order):

Project philosophy and scope
Voting / review process
Your first PR
Code coverage
Every bug fix requires a regression test
Design principles (both general ones, and Falcon-specific)
Benchmarking and profiling
Intellectual property / copyright
Dev process
Code of conduct, expectations
release process (tag, twine, sign, etc.)
rebasing
Coding style
how to split up PRs

logical
usually a PR is one logical change, so 1:1
OK to add additional commits during review but please squash when done. is helpful to check that comments have been addressed, or for reverting when experimenting with a given approach. No longer relevant since we switched to Squash & Merge.
if you have to do a new commit to fix CI, then squash it
Each commit should pass all Travis CI (we use GitHub Actions) tests

How to get on the maintainers team (and who is on it)

Prior art:

https://cryptography.io/en/latest/development/
http://docs.openstack.org/developer/zaqar/

I'm going to close this issue; what we have no is by no means perfect, but there is a document, CONTRIBUTING.md, that does cover the basics. As part of the docs revamp for 4.0, I have also hooked it into our docs via MyST Markdown: Contribute to Falcon.
Although this document doesn't cover the development process part very well, but that is tracked in another issue: #467.


I1228 Add y-scroll-bar to webpage

Insufficient screen real estate for button on glc-assembly webpage under Firefox:
Navigate to Fusion Server admin page (<IP_ADDRESS>/admin)
Click on tool bar button ("gear" icon on right-hand side of page)
Select "Glc Assembly" - a pop-up window appears titled "GLC assembly tool"
Fill in 'name', 'title', and dummy text into 'polygon' fields.
Click on 'Layers' "3d" radio button
Scroll to bottom of page
View "Assemble" button at bottom of window.

Is there a Github ticket for this issue being fixed ? If yes please reference it here, otherwise we need to create it first.

Document the fix in release notes

Nice Work. Scroll bar is there and works like it should.

I see two approvals, so merging.


Add limit of 3x zoom on field

I think this limit is too strict. I should be able to zoom out so the field is about three times smaller than the width of the viewport.


Verspaetung should be able to infer topics from the paths in Zookeeper

Standard consumer path
/consumers/myconsumername/offsets/<topic>/<partition>
The data of the path above is a raw string containing the offset for that consumer on topic/partition (e.g. device_events/1)
KafkaSpout path
(at least as of Storm 0.9.2-incubating)
/kafka_spout/myspoutname/partition_<partition>
The data of the path above is a JSON string containing the offset, topology information and the Kafka topic.
{"topology":{"id":"4f9a8081-fc1e-4729-b8e8-464cb1a22f6d","name":"SomeTopology_8573578"},"offset":88,"partition":0,"broker":{"host":"kafka-2.example.com","port":6667},"topic":"device_events"}

The standard stuff is already done, opened up a better issue for #9


Supports rspack

Clear and concise description of the problem
I want to support the rspack plugin, although webpack can still work in it, but it will inexplicably cause element-plus style import failure, I understand that it should be caused by incomplete compatibility? But when I don't import element-plus styles anymore, it works fine again...😅
Suggested solution
support the rspack plugin
Alternative
No response
Additional context
No response
Validations

[X] Read the Contributing Guidelines.
[X] Read the README
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

reproduce:

pnpm create rsbuild@latest
pnpm i element-plus @intlify/unplugin-vue-i18n
update src/index.ts

import { createApp } from 'vue';
import App from './App.vue';
import './index.css';
import 'element-plus/theme-chalk/index.css'
import 'element-plus/theme-chalk/dark/css-vars.css'

import ElementPlus from 'element-plus'

createApp(App).use(ElementPlus).mount('#root');

update rsbuild.config

import { defineConfig } from '@rsbuild/core';
import { pluginVue } from '@rsbuild/plugin-vue';
import vueI18n from '@intlify/unplugin-vue-i18n/webpack'

export default defineConfig({
  tools: {
    rspack: {
      plugins: [vueI18n()]
    }
  },

  plugins: [pluginVue()],
});

pnpm dev or pnpm build

Hello, is there a plan to support?


Promote from BLAIS5-4140 to main

Auto generated by concourse:
Promote from BLAIS5-4140 to main

No longer needed. Blaise Nuget Api has been updated to the latest stable version


Ability to read_exact so that producer can fill up the rest of the buffer

Hi @jamesmunns,
Awesome project! I am using BBQueue to shuffle audio data from a producer loop that is temporally unstable (some audio frames take longer to process than others) into a buffer and then reading that data at very critically timed intervals (inside an I2S interrupt) to pass it to a digital to analog converter. I've tried to distill the essence of this setup in the code below.
   // runs forever
    fn producer_task(producer: &mut Producer<'_, 1000>) {
        loop {
            match producer.grant_exact(100) {
                Ok(mut grant) => {
                    grant.to_commit(100);
                    // get audio bytes and copy them into write grant
                }
                Err(_) => {
                    // Input queue full, this is normal
                    // the i2s interrupt firing should free up space
                    cortex_m::asm::wfi();
                }
            }
        }
    }

    // fired by interrupt every 10 ms
    fn consumer_task(previous_grant: GrantR<'_, 1000>, consumer: &mut Consumer<'_, 1000>) {
        previous_grant.release(100);

        match consumer.read() {
            Ok(grant) => {
                long_running_dma_copy(grant);
            }
            Err(_) => {
                // no audio to play - play silence
            }
        }
    }

The long running consumer read operation holds the read grant for all the data available to read when it only really needs to read a small chunk here (100 bytes). This seems to put undue back-pressure on the producer resulting in the whole thing operating more like a turnstyle than a buffer.
My current solution to this problem is to use a double buffer and copy the data out of the BBQueue read grant and release the grant immediately. The double buffer is needed because there is only really enough time to switch pointers in this I2S interrupt handler or the audio will glitch.
My question is this, would it be possible to hold a read grant for only a small window of the data (say 100 bytes out of 1000) so that the producer can continue to write data to the queue elsewhere. Like a read_exact() function on the consumer. This may not be possible due to how read and write pointers work in bip buffers. However, if you think it is possible and worthwhile adding then I would like to attempt to implement it.
PS, I took a look at the framed stuff but that pesky frame length header messes up my alignment!

Hey, not sure I totally understand, so feel free to correct any missed assumptions!
In general - holding a read grant does not affect the producer. The producer will block only when the buffer is full, though the existence of data will block overwriting, whether you have a grant or not.
Unlike some other ringbuffers, bbqueue does not allow you to overwrite the oldest data automatically - once it is full, it will remain full until you read + release the data it contains.
Could you maybe explain a bit more about what you want to happen, and why it isn't possible currently?

Thanks for your insight, that helped! I understand the read grant a little better now so the problem was between the chair and the keyboard. Feel free to close the issue. :)
I was confused by the fact that the read() function returns a GrantR<TOTAL_BUFFER_SIZE> (thinking that the entire buffer was locked) but didn't realize that the len() of that grant is only the number of continuous committed bytes until the end of the buffer which makes a lot more sense and is kind-of obvious come to think of it. It's in the documentation too I see. I read the docs but didn't really comprehend until I played around with the interface a little. The examples work with one byte at a time which is clean and neat but perhaps not what newcomers will use and maybe others will struggle with chunks of bytes like I did. Let's hope this post is useful for them. I have come to realize that when working with constant size chunks of bytes in my use case it is better to use split_read() instead of read() as I was mistaking circular buffer wrap-around for an empty queue and inserting periodic silence into my audio.
Here is a working example if anyone finds this useful: https://github.com/ninjasource/nrf52840-dk-i2s-demo

Hey! I appreciate you following up! Even if you did find the docs when you knew what to look for, if you have any suggestions for how to make this more clear for the next person (when they DON'T know what to look for), I'm very open to ideas on improving the docs!

I find that docs are more useful when you are familiar with what the library is meant for in the first place. I found that the README was a good introduction but the reading and writing single bytes immediately confused me because I can't think of a scenario where I would ever do that so I assumed that this was just the library demonstrating that it was generic over the type, in this case a simple byte. However, because of alignment complications, the tool is meant for byte buffers only. Therefore I think the readme example could be changed to using a small buffer instead and talking about bytes instead of elements (which sounds like it is generic). Like so:
// Create a buffer with 12 bytes
let bb: BBBuffer<12> = BBBuffer::new();
let (mut prod, mut cons) = bb.try_split().unwrap();

// Request space for 4 bytes
let mut wgr = prod.grant_exact(4).unwrap();

// Set the data
wgr.copy_from_slice(&[1,1,1,1]);

// Make the data ready for consuming
wgr.commit(4);

// Get a read grant for all available bytes
let rgr = cons.read().unwrap();

assert_eq!(rgr.len(), 4);
assert_eq!(rgr.buf(), &[1,1,1,1]);

// Release the space for later writes
rgr.release(4);

I think that the docs and code comments themselves are great but, given that there are no examples, the tests will typically be used for inspiration on how to use the library as the author intended. Sometimes this can be tricky because testing code is not the same as usage code. I think there is an argument to be made to add a test with complexity somewhere between the single_thread and the ring_around_the_senders tests. Something that demonstrates the nuances of a wrapping ring buffer where the buffer size is a multiple of a fixed buffer length that you would typically (is it typical?) use for a DMA transfer over and over again:
// a 15 byte ring buffer
let bb: BBBuffer<15> = BBBuffer::new();
let (mut prod, mut cons) = bb.try_split().unwrap();
const CHUNK_LEN: usize = 5;

// produce chunk 0
let mut grant = prod.grant_exact(CHUNK_LEN).unwrap();
grant.copy_from_slice(&[0, 0, 0, 0, 0]);
grant.commit(CHUNK_LEN);

// produce chunk 1
let mut grant = prod.grant_exact(CHUNK_LEN).unwrap();
grant.copy_from_slice(&[1, 1, 1, 1, 1]);
grant.commit(CHUNK_LEN);

// consume chunk 0
let grant = cons.read().unwrap();
assert_eq!(&[0, 0, 0, 0, 0], &grant[..CHUNK_LEN]);
grant.release(CHUNK_LEN);

// produce chunk 2
let mut grant = prod.grant_exact(CHUNK_LEN).unwrap();
grant.copy_from_slice(&[2, 2, 2, 2, 2]);
grant.commit(CHUNK_LEN);

// NOTE: even though there appears to be space in the ring buffer, we cannot use it
// because in the wrap-around case the start and end pointers cannot be the same
// because the data structure cannot tell if the queue has wrapped around or if it is full
assert_eq!(
    prod.grant_exact(CHUNK_LEN),
    Err(bbqueue::Error::InsufficientSize)
);

// consume chunk 1
let grant = cons.read().unwrap();
assert_eq!(&[1, 1, 1, 1, 1], &grant[..CHUNK_LEN]);
grant.release(CHUNK_LEN);

// produce chunk 3 (wrapped around)
// NOTE: we have to at least consume chunk 1 by this point
// because the read and write pointer cannot be at the same location
let mut grant = prod.grant_exact(CHUNK_LEN).unwrap();
grant.copy_from_slice(&[3, 3, 3, 3, 3]);
grant.commit(CHUNK_LEN);

// consume chunk 2
let grant = cons.read().unwrap();
assert_eq!(&[2, 2, 2, 2, 2], &grant[..CHUNK_LEN]);
grant.release(CHUNK_LEN);

// consume chunk 3 (wrapped around)
let grant = cons.read().unwrap();
assert_eq!(&[3, 3, 3, 3, 3], &grant[..CHUNK_LEN]);
grant.release(CHUNK_LEN);

Feel free to use the code above without attribution but I won't be offended if you don't use it. I just wanted to use it to illustrate the perspective of a noob like me!

@ninjasource Thanks, I think your comment really helped!
I realized bbqueue's readme/docs are missing a "mission statement", or "tl;dr", that bbqueue is meant to help with cases where you need contiguous, variably sized, chunks of bytes.
I'll see if I can integrate these examples as well, I think you hit some really important points. It's hard to reset my "view" to match that of someone who didn't write the crate, so I really appreciate your perspective.

Thanks for your kind words and the replies! :)


Support for relationship building models in SQLAlchemyFactory

Summary
Suppose I have a series of cascading models like A, B, C. When I call the factory for A and enable the __set_relationships__ parameter, the factory will build model A and have B in each A, but no C in B.
just like:
A
|-B1
|- Expected C but did not
|-B2
|- Expected C but did not
I went and read the source code and tried to modify it, and found that it was because the __set_relationships__ parameter was not set when recursively constructing the factory. When I tried to set the parameter manually it triggered a recursive error, and this feature may require a larger change to the structure of the code.
I am trying to use this library for database mock fake data, if implemented this feature will be able to stage my work.
Basic Example
Here's a sample test
class Author(Base):
    __tablename__ = "authors"

    id: Any = Column(Integer(), primary_key=True)
    books: Any = orm.relationship(
        "Book",
        uselist=True,
        back_populates="author",
    )

class Book(Base):
    __tablename__ = "books"

    id: Any = Column(Integer(), primary_key=True)
    author_id: Any = Column(
        Integer(),
        ForeignKey(Author.id),
        nullable=False,
    )
    author: Any = orm.relationship(
        Author,
        uselist=False,
        back_populates="books",
    )
    comments: Any = orm.relationship(
        "Comment",
        uselist=True,
        back_populates="book",
    )

class Comment(Base):
    __tablename__ = "comments"

    id: Any = Column(Integer(), primary_key=True)
    book_id: Any = Column(
        Integer(),
        ForeignKey(Book.id),
        nullable=False,
    )
    book: Any = orm.relationship(
        Book,
        uselist=False,
        back_populates="comments",
    )

def test_recursive_relationship_resolution() -> None:
    class AuthorFactory(SQLAlchemyFactory[Author]):
        __model__ = Author
        __set_relationships__ = True

    result = AuthorFactory.build()
    assert isinstance(result.books, list)
    assert isinstance(result.books[0], Book)
    assert isinstance(result.books[0].comments, list)
    assert isinstance(result.books[0].comments[0], Comment)

Drawbacks and Impact
I try add code in
https://github.com/litestar-org/polyfactory/blob/8dc8e1a4594a75ad9a16e1b6f5041b6044fc4f51/polyfactory/factories/base.py#L650C1-L650C80
like that
if BaseFactory.is_batch_factory_type(annotation=unwrapped_annotation):
    factory = cls._get_or_create_factory(model=field_meta.type_args[0])
    if hasattr(factory, '__set_relationships__'):
        setattr(factory, '__set_relationships__', getattr(cls, '__set_relationships__'))
    ......

This only solves recursive construction in one-to-many or many-to-many relationships and is very inelegant, raising recursion errors when I try to extend it to one-to-one or many-to-one relationships.
like that
if BaseFactory.is_factory_type(annotation=unwrapped_annotation):
    factory = cls._get_or_create_factory(model=unwrapped_annotation)
    if hasattr(factory, '__set_relationships__'):
        setattr(factory, '__set_relationships__', getattr(cls, '__set_relationships__'))

    return factory.build(
        **(field_build_parameters if isinstance(field_build_parameters, Mapping) else {}),
    )

Unresolved questions
No response

[!NOTE]
While we are open for sponsoring on GitHub Sponsors and
OpenCollective, we also utilize Polar.sh to engage in pledge-based sponsorship.
Check out all issues funded or available for funding on our Polar.sh dashboard

If you would like to see an issue prioritized, make a pledge towards it!
We receive the pledge once the issue is completed & verified
This, along with engagement in the community, helps us know which features are a priority to our users.

I'm trying to build a factory for each model, building from the bottom up in the order in which the models are referenced.
Referring to the example above, the AuthorFactory constructs a number of authors, but when the BookFactory starts constructing, the book's author attribute reconstructs new authors instead of using the authors already constructed by the AuthorFactory.
Perhaps we could prioritize the use of already generated factories when constructing relationships instead of constructing a new factory.
Maybe we can correct it from this?

I've implemented a usable multilevel generation example with some factory configurations that I hope will be helpful.
Rule
My thinking is to only set __set_relationships__ on the factories of classes that have foreign keys, such as Grade and Course. If a relationship attribute points to a class with __set_relationships__ set to prevent recursion, the attribute returns Noneor [] to prevent recursion, such as Course.grades.
Model define
class DBStudent(Base):
    __tablename__ = "student"
    id: Mapped[uuid.UUID] = mapped_column(sqltypes.UUID, primary_key=True)
    name: Mapped[str] = mapped_column(sqltypes.String, nullable=False)

    grades: Mapped[List["DBGrade"]] = relationship(back_populates="student")

class DBCourse(Base):
    __tablename__ = "course"
    id: Mapped[uuid.UUID] = mapped_column(sqltypes.UUID, primary_key=True)
    name: Mapped[str] = mapped_column(sqltypes.String, nullable=False)

    grades: Mapped[List["DBGrade"]] = relationship(back_populates="course")
    teacher: Mapped['DBTeacher'] = relationship(back_populates="courses")
    fk_teacher_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("teacher.id"), nullable=False)

class DBTeacher(Base):
    __tablename__ = "teacher"
    id: Mapped[uuid.UUID] = mapped_column(sqltypes.UUID, primary_key=True)
    courses: Mapped[List["DBCourse"]] = relationship(back_populates="teacher")

class DBGrade(Base):
    __tablename__ = "grade"
    id: Mapped[uuid.UUID] = mapped_column(sqltypes.UUID, primary_key=True)
    grade: Mapped[float] = mapped_column(sqltypes.Float, nullable=False)

    student: Mapped['DBStudent'] = relationship(back_populates="grades")
    fk_student_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("student.id"), nullable=False)
    course: Mapped['DBCourse'] = relationship(back_populates="grades")
    fk_course_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("course.id"), nullable=False)

Factory define
class StudentFactory(SQLAlchemyFactory[DBStudent]):
    __sync_persistence__ = True

class CourseFactory(SQLAlchemyFactory[DBCourse]):
    __sync_persistence__ = True
    __set_relationships__ = True

    @classmethod
    def teacher(cls):
        return TeacherFactory.build()

    @classmethod
    def grades(cls):
        return []

class TeacherFactory(SQLAlchemyFactory[DBTeacher]):
    __sync_persistence__ = True

class GradeFactory(SQLAlchemyFactory[DBGrade]):
    __sync_persistence__ = True
    __set_relationships__ = True

    @classmethod
    def student(cls):
        return StudentFactory.build()

    @classmethod
    def course(cls):
        return CourseFactory.build()

Main call
async def main():
    async with sessionmanager.session() as session:
        GradeFactory.__async_session__ = session
        await GradeFactory.create_batch_async(size=10)

I think the settings here may cover some of the desired use cases https://polyfactory.litestar.dev/reference/factories/base.html#polyfactory.factories.base.BaseFactory.set_as_default_factory_for_type.
class MySQLAlchemyFactory(SQLAlchemyFactory):
     __is_base_factory__ = True
     __set_relationships__ = True

will allow changing this globally. Inheriting config for dynamically created subfactories is a known issue (see https://github.com/litestar-org/polyfactory/issues/426).

My thinking is to only set set_relationships on the factories of classes that have foreign keys, such as Grade and Course. If a relationship attribute points to a class with set_relationships set to prevent recursion, the attribute returns Noneor [] to prevent recursion, such as Course.grades.

I am not sure on this rule. This works for Grade but if calling TeacherFactory would generating some grades be expected? Maybe an enum/literal values would be appropriate to allow different strategy on a per factory basis, e.g. has __set_relationships__: bool | Literal['all', 'collections', 'foreign_key'] or similar

Hi @adhtruong. Thanks for the reply.
For your suggestion.

will allow changing this globally. Inheriting config for dynamically created subfactories is a known issue (see https://github.com/litestar-org/polyfactory/issues/426).

This would cause the program to go into infinite recursion, which is why I need to artificially disable certain field generation.Like Course.grades.

In the example I gave, the only way to get the expected generated result is to call the Grade Factory. I have created a network of model relationships and computed a spanning tree to define the factory with reference to this tree. Grade Factory is used as the root of this tree, so only Grade Factory can generate the expected results.
Giving __set_relationships__ more possible values might be a good solution, but would that be a big change to the whole library?
Perhaps we can find a more elegant way to generate a series of correlated models.

I wrote a script to apply networkx to compute the spanning tree of model relationships and then generate the factory definition code, which is my current solution.

Giving set_relationships more possible values might be a good solution, but would that be a big change to the whole library?

This configuration is only used by the SQLAlchemyFactory currently. A configuration here makes sense if useful to have these distinct behaves in the library itself.
Going back to your previous comment

This would cause the program to go into infinite recursion, which is why I need to artificially disable certain field generation.Like Course.grades.

would just keeping track of seen types beforehand handle this case? Note this may be a more naive solution than full graph resolution but may suffice for a lot of use cases. Here's a quick prototype of this based on an example in the docs
from __future__ import annotations

import contextlib
from typing import Any, Iterator, List, TypedDict

from sqlalchemy import ForeignKey, inspect
from sqlalchemy.orm import DeclarativeBase, Mapped, Mapper, mapped_column, relationship

from polyfactory.factories.sqlalchemy_factory import SQLAlchemyFactory
from polyfactory.field_meta import FieldMeta

class Base(DeclarativeBase):
    ...

class Author(Base):
    __tablename__ = "authors"

    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]

    books: Mapped[list["Book"]] = relationship("Book", uselist=True)

class Book(Base):
    __tablename__ = "books"

    id: Mapped[int] = mapped_column(primary_key=True)
    author_id: Mapped[int] = mapped_column(ForeignKey(Author.id))

    author: Mapped[Author] = relationship("Author", uselist=False)

class Context(TypedDict):
    seen: set[Any]

_context: Context = {"seen": set()}

@contextlib.contextmanager
def add_to_context(model: type) -> Iterator[None]:
    _context["seen"].add(model)
    yield
    _context["seen"].remove(model)

class ImprovedSQLAlchemyFactory(SQLAlchemyFactory):
    __is_base_factory__ = True

    @classmethod
    def build(cls, **kwargs: Any) -> Any:
        with add_to_context(cls.__model__):
            return super().build(**kwargs)

    @classmethod
    def get_model_fields(cls) -> list[FieldMeta]:
        fields_meta = super().get_model_fields()

        table: Mapper = inspect(cls.__model__)  # type: ignore[assignment]
        for name, relationship_ in table.relationships.items():
            class_ = relationship_.entity.class_
            if class_ in _context["seen"]:
                continue

            annotation = class_ if not relationship_.uselist else List[class_]  # type: ignore[valid-type]
            fields_meta.append(
                FieldMeta.from_type(
                    name=name,
                    annotation=annotation,
                    random=cls.__random__,
                ),
            )

        return fields_meta

def test_sqla_factory() -> None:
    author: Author = ImprovedSQLAlchemyFactory.create_factory(Author).build()
    assert isinstance(author.books[0], Book)
    assert author.books[0].author is None

    book: Book = ImprovedSQLAlchemyFactory.create_factory(Book).build()
    assert book.author is not None
    assert book.author.books == []

The results of this prototype don't seem to be what was expected.
This assert

assert author.books[0].author is None

I think should be assert author.books[0].author == author

@0x587 I think that difference comes from using create_sync/ create_async vs build. The former adds the instances to a session so these are resolved by SQLA. Out the box these won't necessarily be set correctly with build.
I've extended the example to use create which does match the expected assertion. Do you think this logic would meet your use case? I think this logic is generic enough to be in the library itself if so.

The example of this extension perfectly meets my needs, thank you.
I think this need commonly arises in scenarios where fake data needs to be generated for a database. Creating a subclass of such a SQLAlchemyFactory to put into the library is necessary.
At the same time, the  #424  still exists, resulting in a generated relationship with only one object. Expect the next release to merge these two improvements.

Great, thanks for checking and confirming!
I would be in favour of keeping this issue open just so the workaround is documented here as I agree with you this is a probably a common issue. I'll see if this feature is part of the main library or at least document the above as a workaround.


Clarification : purpose of the odo's application

What is the purpose of the odo's application ?  To group related components of an application deployed into a k8s namespace ?
If this is the correct definition, why are the components related to an application not added to the application definition created within ~/.kube/odo file
Scenario played
odo application create app1
cat ~/.kube/odo
activeApplications:
- active: true
  activeComponent: ""
  name: app1
  project: myproject

odo create nodejs comp1
Please wait, creating comp1 component ...
Component 'comp1' was created and port 8080/TCP was opened
To push source code to the component run 'odo push'

Component 'comp1' is now set as active component.

odo list
ACTIVE     NAME      TYPE
*          comp1     nodejs

BUT

cat ~/.kube/odo
activeApplications:
- active: true
  activeComponent: comp1
  name: app1
  project: myproject

odo create nodejs comp2
Please wait, creating comp2 component ...
Component 'comp2' was created and port 8080/TCP was opened
To push source code to the component run 'odo push'

Component 'comp2' is now set as active component.

odo list
ACTIVE     NAME      TYPE
           comp1     nodejs
*          comp2     nodejs

2 components have been created but odo's application file only contains the following info
about active component but not all components related to the application

cat ~/.kube/odo
activeApplications:
- active: true
  activeComponent: comp2
  name: app1
  project: myproject

Why don't you store the composition info within the odo's file ? How can we re-install or move the application to another cluster/namespace if we don't have this info ?
cat ~/.kube/odo
activeApplications:
- active: true
  activeComponent: comp2
  name: app1
  project: myproject

oc get dc/comp1-app1 -o yaml
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  annotations:
    app.kubernetes.io/component-source-type: local
    app.kubernetes.io/url: file:///Users/dabou/Temp/to-be-deleted/nodejs-ex
  creationTimestamp: 2018-09-04T09:42:44Z
  generation: 2
  labels:
    app: app1
    app.kubernetes.io/component-name: comp1
    app.kubernetes.io/component-type: nodejs
    app.kubernetes.io/component-version: latest
    app.kubernetes.io/name: app1
  name: comp1-app1
  namespace: myproject

oc get dc/comp2-app1 -o yaml
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  annotations:
    app.kubernetes.io/component-source-type: local
    app.kubernetes.io/url: file:///Users/dabou/Temp/to-be-deleted/nodejs-ex
  creationTimestamp: 2018-09-04T09:52:12Z
  generation: 2
  labels:
    app: app1
    app.kubernetes.io/component-name: comp2
    app.kubernetes.io/component-type: nodejs
    app.kubernetes.io/component-version: latest
    app.kubernetes.io/name: app1
  name: comp2-app1
  namespace: myproject

My guess composition is stored in labels app: app1. To get components for application would require to run
oc get dc -l='app==app1'
Application name is used as a value of app label for component related resources.

I think that current scope for odo is not to architect applications or be used for the outer cycle, but mostly only for the inner cycle, which means that you would not move applications from a cluster to a different cluster using odo. This will probably change in the future, but I would think that's long term goal.
Also, .kube/odo file will change when configuration proposal get implemented.
And there are some things that in the long run will also affect this behavior:

server side odo (controller, operator, or however you want to call it)
application CRD definition

I wouldn't get too much ahead of what should be done in the short run.

stale discussion


Long running Use Case and orientation change

In the current approach, every time after the orientation changes, the use case is executed once again. It would be a good solution if there would be a way to reuse the current operation after the orientation change, if the previous one is still running

You are welcome to provide a PR with a valid implementation.

+1

@Trikke :+1:

Any good ideal for this enhancement? I really want to help to solve this problem.

1

:+1:

@lenguyenthanh I suppose a good starting point will be the classical Headless Fragment or maybe there are some later additions to the android framework that I've missed.

This is weird since the easiest solution would be to retain the fragment instance and indeed I'm doing that. This needs a little bit of investigation.

This was fixed here:
https://github.com/android10/Android-CleanArchitecture/commit/ee50c079b4d60e5545f2d50cf1eb167e75d1c2c8

@android10 I don't want to open a new issue right now. Maybe it could be handled here....
Following usecase:

user: backpress/leaves activity
save/upload data to server -> potentially long running task

Maybe you could give me a hint....


Task: Expose XCFramework with arm64-sim slice

❕ Problem Statement
Currently, the exposed XCFramework supports the following architectures:

x86_64-darwin
arm64-darwin
x86_64-ios (simulator)
arm64-ios (physical device)

When using PactSwiftMockServer to run on an iOS Simulator running on arm64-darwin (Apple M1 chip), it might fail due to missing platform support.
💬 Task Description

Build libpact_mock_server.a using aarch64-apple-ios-sim cargo triple.
When creating XCFramework archive for -arch arm64 when archiving for simulator

👩🔧 Technical Design Notes
cargo +nightly build -Z build-std --target aarch64-apple-ios-sim
🤝 Relationships

Depends on rust-lang/rust/issues/82412

arm64-sim is being supported since fb81488.


Add ISCL and Apache 2.0 License

Should follow format from https://github.com/audreyr/cookiecutter-pypackage/blob/master/{{cookiecutter.project_slug}}/LICENSE
and and use license information from https://opensource.org/licenses/

I am working on this.

Done in #155


No-Ticket: Remove user entities from metatag table prior to running metatag updates

What's this PR do?
This is related to work done for issue #7392  - Upgrade Metatag module from 7.x-1.4 to 7.x-1.21
On Thor, with the larger dataset, the upgrade process took 1 day and 21 hours. The reason for this appears to be that metatags is updating all of the user entities (there's a lot of them). This is completely unnecessary because user profiles are not exposed to the public and thus having metatags on them is also unnecessary.
This PR does:

Removes User from metatag configuration.
Also includes a re-export (minor change) of the twitter image metatag.
Implements update hook for dosomething_metatag.
Implements hook_update_dependencies() to ensure that the dosomething_metatag hook runs prior to the time-consuming metatag updates.

How should this be reviewed?

Refresh Thor with Prod db prior to deploying to Thor
We should have less than the original 974,944 records to update (for update # 7041 / the update for 7040 ran quicker and covered a smaller subset of records).

If reviewing locally, you will have to update the systems table for the metatag entry to roll back to the schema version of 7035 to match the state of version 1.4 (reference =  http://cgit.drupalcode.org/metatag/tree/metatag.install?h=7.x-1.4&id=4ea7c8dabbc2e4eca0d83774e35caeb08c03eba7)
@mikecrittenden: Couldn't add you as a reviewer, but could you take a look?
Any background context you want to provide?
N/A
Relevant tickets
Related to problem reported when run on Thor: #7392
Checklist

[ ] Documentation added for new features/changed endpoints.
[ ] Tested on staging.
[ ] Pinged a PM if this is a larger PR that would benefit from some additional testing love
[ ] Post a message in #phoenix if this includes something that causes a rebuild!

This looks great to me. I can't find anything to complain about @mirie.


Release/51

Warnings

:warning:

Changes were made to package.json, but not to package-lock.json - Perhaps you need to run npm run install?

  Generated by :no_entry_sign: dangerJS


[Bug] Error in Step 2 of Install section in README

Summary
Step 2 of the Install section on the README instructs users to use the following command to install Autopilot:
helm upgrade autopilot autopilot/autopilot-daemon --install --namespace=<default> -f your-config.yml
However, this command is outdated as the helm chart name is autopilot, not autopilot-daemon. The correct command should be:
helm upgrade autopilot autopilot/autopilot --install --namespace=<default> -f your-config.yml
Steps To Reproduce
Follow Step 1 of the Install section on the README, then execute the command listed in Step 2.
Expected behavior
A clear and concise description of what you expected to happen.
Evidence

Proposed Solution
The command in Step 2 of the Install section of the README should be changed to:
helm upgrade autopilot autopilot/autopilot --install --namespace=<default> -f your-config.yml

Closing.


Load coupon and mask image from url

Hello,
Is it possible to load coupon and mask image from url in additional of local images ?
Thanks, Cédric

ScratchCard doesn't support url image~
You can use NSURLSession to download image form url first, then create the ScratchView.

Hello Joe,
Thanks for your quick response!
I am trying to implement your solution but i encounter difficulties,
did you have an example by chance of this functionality?
Thanks, Cédric

Hi,
If you have problem with download image,
you can refer to the SDWebImage library.
Besides, I think this Stackoverflow thread can help you~

Hello Joe,
Sorry, I don't specify that my problem comes from the fact that "ScratchUIView" is waiting for "String" types for "Coupon" and "MaskImage". To resolve my problem i need to modify your library is not it ?
Thanks, Cédric

Hi,
First,  ScratchCard library load the coupon image  from main cache.
So, "Coupon" and "MaskImage" is the file name(string type) from main cache.
For your issue,
you can download image to cache first, then use the ScratchCard library without modify.
But, for the memory issue, change UIImage(named:coupon) to UIImage(contentsOfFile: imagePath) is a better way~
Or you can modify the ScratchCard library like this. (load UIImage from url)
let data = try Data(contentsOf: URL(string: url)!)
couponImage = UIImageView(image:UIImage(data: data))

For UI experiences, asynchronously loading is a better way, you can refer to the SDWebImage library~
In the same way as mask image~

Hello Joe,
Thank you for all your answers and perfect details about my problem, I finally changed "Coupon" and "MaskImage" to "Data" types in the library and helped with the StackOverflow thread that you recommend me, it works now!
Thanks again, Cédric

Hey  @joehour, Im new to swift  . I was trying to do it with SDWebImage . but i cant how to download it and store it static image fashion , and then pass a "name string" of that image to Scratch Card .
All the tuts , they directly assign it to UIImage. can you explain a bit about async solution.
Thanks

Hi, @Kida007
you can find answer in previous reply~
download image with asynchronously
modify the ScratchCard library
Best Regards


Bug: the extension is not precise about the project page

Describe the bug
the extension is not precise about the project page, I think it's due to the checks that we have.
Steps to reproduce

go to: https://github.com/account/choose?action=upgrade
open the extension
you can find add to linkedin which is supposed to only be shown in the project/repo page

Browsers
No response
Additional context (Is this in dev or production?)
No response
Code of Conduct

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

Contributing Docs

[ ] I agree to follow this project's Contribution Docs

https://github.com/account/choose?action=upgrade passes the regex check at https://github.com/open-sauced/ai/blob/f67f67339a5daca506822715ee29aa66c4b0ba6e/src/hooks/useGetGitHubPageInfo.ts#L20-L22 https://github.com/open-sauced/ai/blob/f67f67339a5daca506822715ee29aa66c4b0ba6e/src/utils/urlMatchers.ts#L35-L39
Causing this behaviour.
We can resolve this by checking if tab.url! is a valid public repo URL after the isGithubRepoPage(tab.url!) check using https://github.com/open-sauced/ai/blob/f67f67339a5daca506822715ee29aa66c4b0ba6e/src/utils/fetchGithubAPIData.ts#L70

You are right, since the RegEx is checking the URL it could provide such issue always, I was thinking if we can use this code:
document.querySelector('[content="/:user_id/:repository"]')

This will make it safer and we can know that it's correct behavior always.


Using uuid_binary in relations

Hi,
Do you have any pointers on how to use uuid_binary in relations?
Specifically I have a many-to-many relation and want the collection to be indexed by the uuid. If I specify the index-by="id" property the the collection key is binary:

Ideally the index should be the string representation of the uuid object as otherwise it is not easy to write methods to interact with the collection (e.g. a has($entity) method on the relation)

Do I get you right, that you're using a binary representation of an uuid as the table's id (PK), but for the collection's keys, you want it to be a string?

IMHO, you should use uuid as secondary keys abs use internal, incremental keys for foreign keys. They are both easier to manipulate (in your case for instance) and more performant, while keeping the usefulness of uuid.

@SenseException Yes, as currently I cannot manipulate the collection easily e.g.
<?php
public function hasClient(Client $client)
{
    return array_key_exists($client->getId(),$this->clients);
}

@tgalopin If i use the auto increment as a secondary key I cannot relate entities easily before persisting them. E.g. I cannot add an addClient(Client $client) method to my User entity to create the link as I do not know the seconday key until I have persisted.

@exptom If hasClient() is the only use case, can you use Collection::contains() of the Doctrine Collection to check for an existing Client in there? This way, you don't need the index key.
Otherwise, maybe you can use the Selectable::matching() on the collection for finding the Client in your Collection.

@SenseException Thanks, that is what I have done. I was hoping for a more performant solution where I could just check for the existence of an array key but that works :smile:

I have a related issue:
When using an uuid_binary relation winth indexBy id, the Doctrine collection will use the binary relation has a key like @exptom explained.
The issue is that if you then try to make a FormType for this entity, you won't be able to do anything. The ArrayCollection being indexed by binary id will throw when mapDataToForms will validate the child item name:
https://github.com/symfony/form/blob/master/FormConfigBuilder.php#L775
Not using indexBy isn't an option because the form will then try to update the primary key.