CrashLoopBackOff / Back-off restarting failed container

Using Ubuntu 20.04 with Microk8s
Portainer 2.6.1
When i create a pod manually it works without issues but then i make one via container.
I am getting CrashLoopBackOff / Back-off restarting failed container
I cant see any rhyme or reason why this is happening.
Kind Regards,
Chris.

6m14s       Normal    ScalingReplicaSet                                              deployment/centos-new              Scaled up replica set centos-new-6846f658db to 1 6m14s       Normal    SuccessfulCreate                                               replicaset/centos-new-6846f658db   Created pod: centos-new-6846f658db-w4qhj 6m13s       Normal    Scheduled                                                      pod/centos-new-6846f658db-w4qhj    Successfully assigned default/centos-new-6846f658db-w4qhj to k-master 6m10s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 1.664850843s 6m7s        Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 1.415574924s 5m49s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 1.700366702s 5m16s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 2.914634176s 5m14s       Normal    Created                                                        pod/centos-new-6846f658db-w4qhj    Created container centos-new 5m14s       Normal    Started                                                        pod/centos-new-6846f658db-w4qhj    Started container centos-new 4m33s       Normal    Pulling                                                        pod/centos-new-6846f658db-w4qhj    Pulling image "centos" 4m31s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 2.085321635s 71s         Warning   BackOff                                                        pod/centos-new-6846f658db-w4qhj    Back-off restarting failed container

6m14s       Normal    ScalingReplicaSet                                              deployment/centos-new              Scaled up replica set centos-new-6846f658db to 1
6m14s       Normal    SuccessfulCreate                                               replicaset/centos-new-6846f658db   Created pod: centos-new-6846f658db-w4qhj
6m13s       Normal    Scheduled                                                      pod/centos-new-6846f658db-w4qhj    Successfully assigned default/centos-new-6846f658db-w4qhj to k-master
6m10s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 1.664850843s
6m7s        Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 1.415574924s
5m49s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 1.700366702s
5m16s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 2.914634176s
5m14s       Normal    Created                                                        pod/centos-new-6846f658db-w4qhj    Created container centos-new
5m14s       Normal    Started                                                        pod/centos-new-6846f658db-w4qhj    Started container centos-new
4m33s       Normal    Pulling                                                        pod/centos-new-6846f658db-w4qhj    Pulling image "centos"
4m31s       Normal    Pulled                                                         pod/centos-new-6846f658db-w4qhj    Successfully pulled image "centos" in 2.085321635s
71s         Warning   BackOff                                                        pod/centos-new-6846f658db-w4qhj    Back-off restarting failed container

ame:         centos-new-6846f658db-w4qhj
Namespace:    default
Priority:     0
Node:         k-master/<IP_ADDRESS>
Start Time:   Wed, 14 Jul 2021 19:46:08 +0000
Labels:       app=centos-new
io.portainer.kubernetes.application.name=centos-new
pod-template-hash=6846f658db
Annotations:  cni.projectcalico.org/podIP: <IP_ADDRESS>/32
cni.projectcalico.org/podIPs: <IP_ADDRESS>/32
Status:       Running
IP:           <IP_ADDRESS>
IPs:
IP:           <IP_ADDRESS>
Controlled By:  ReplicaSet/centos-new-6846f658db
Containers:
centos-new:
Container ID:   containerd://bb2ef7c54ebaa63d601705ac318660308d0364fa99113042cc3ad1c610ae7e44
Image:          centos
Image ID:       docker.io/library/centos@sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Port:
Host Port:
State:          Waiting
Reason:       CrashLoopBackOff
Last State:     Terminated
Reason:       Completed
Exit Code:    0
Started:      Wed, 14 Jul 2021 19:52:22 +0000
Finished:     Wed, 14 Jul 2021 19:52:22 +0000
Ready:          False
Restart Count:  6
Environment:
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-cjw6x (ro)
Conditions:
Type              Status
Initialized       True
Ready             False
ContainersReady   False
PodScheduled      True
Volumes:
kube-api-access-cjw6x:
Type:                    Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds:  3607
ConfigMapName:           kube-root-ca.crt
ConfigMapOptional:
DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type     Reason     Age                     From               Message

Normal   Scheduled  7m51s                   default-scheduler  Successfully assigned default/centos-new-6846f658db-w4qhj to k-master
Normal   Pulled     7m47s                   kubelet            Successfully pulled image "centos" in 1.664850843s
Normal   Pulled     7m44s                   kubelet            Successfully pulled image "centos" in 1.415574924s
Normal   Pulled     7m26s                   kubelet            Successfully pulled image "centos" in 1.700366702s
Normal   Pulled     6m53s                   kubelet            Successfully pulled image "centos" in 2.914634176s
Normal   Created    6m51s (x4 over 7m47s)   kubelet            Created container centos-new
Normal   Started    6m51s (x4 over 7m46s)   kubelet            Started container centos-new
Normal   Pulling    6m10s (x5 over 7m49s)   kubelet            Pulling image "centos"
Normal   Pulled     6m8s                    kubelet            Successfully pulled image "centos" in 2.085321635s
Warning  BackOff    2m48s (x24 over 7m42s)  kubelet            Back-off restarting failed container
root@k-master:/home/netca# kubectl get pods --watch
NAME                          READY   STATUS             RESTARTS   AGE
centos-new-6846f658db-w4qhj   0/1     CrashLoopBackOff   6          9m2s

@CobbyJ can you have a look at the YAML tab when inspecting the application you deployed? You might be able to isolate more information from here:

Helped Chris with this on Discord.. raising another Github issue for the issue he faced.


HungryEx: Middleware for grocery delivery TestFlight Link

Name: HungryEx: Middleware for grocery delivery
Link: https://testflight.apple.com/join/k4alzQk3
Available: Y

done


can't install any R package

R version 3.6
os: centos 7
Description
Hi
i cant install any package in R
it downloads the packages but does not install
for a sample i try to install ranger package
install.packages("ranger")
but tis error shows for all packages
can you help me please
Error Message:
Selection: 29
trying URL 'https://ftp.fau.de/cran/src/contrib/ranger_0.11.2.tar.gz'
Content type 'application/x-gzip' length 140645 bytes (137 KB)
downloaded 137 KB
Warning: invalid package ‘/users/root/tmp/Rtmp2Jb6kl/downloaded_packages/ranger_0.11.2.tar.gz’
Error: ERROR: no packages specified
The downloaded source packages are in
‘/users/$USER/tmp/Rtmp2Jb6kl/downloaded_packages’
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done
Warning message:
In install.packages("ranger") :
installation of package ‘ranger’ had non-zero exit status

@mxnet-label-bot, add [Bug, Installation]

@zachgk assign [@anirudhacharya ]


match inside @class

@class([
    'foo',
    match ($color) {
        'blue' => 'text-blue-500',
        'green' => 'text-green-500',
    },
])

@class([
    'foo',
    match($color){'blue' => 'text-blue-500',
    'green' => 'text-green-500'},
])

Was a bit scared by the description for this one - but wasn't too bad to get sorted. Should be good to go as of 1.1.12 🙂

Awesome! 💪


Removing of ** from original JavaDoc comments.

Added an extra line to remove the /** from the beginning of the original JavaDoc comment.
Description:

Related issue(s):
Fixes #
Notes for reviewer:

Checklist

[ ] Documented (Code comments, README, etc.)
[ ] Tested (unit, integration, etc.)

Tests added.

Done.


Doesn't compile on openbsd due to EV_RECEIPT

I'm trying to use a library that depends on openbsd, I'm having trouble getting this to work:
[user@sanity mio]$ cargo build
warning: unused manifest key: package.categories
   Compiling mio v0.6.6 (file:///home/user/prog/mio)
error[E0425]: cannot find value `EV_RECEIPT` in module `libc`
  --> src/sys/unix/kqueue.rs:84:21
   |
84 |                     libc::EV_RECEIPT;
   |                     ^^^^^^^^^^^^^^^^ not found in `libc`

error[E0425]: cannot find value `EV_RECEIPT` in module `libc`
   --> src/sys/unix/kqueue.rs:144:44
    |
144 |             let filter = libc::EV_DELETE | libc::EV_RECEIPT;
    |                                            ^^^^^^^^^^^^^^^^ not found in `libc`

error: aborting due to 2 previous errors

error: Could not compile `mio`.

To learn more, run the command again with --verbose.
[user@sanity mio]$

As far as I know EV_RECEIPT is not available on openbsd. I'd appreciate a workaround :)

Welp... ideally we could add openbsd to the CI run and fix it that way...

It doesn't look like trust supports openbsd :( https://github.com/japaric/trust

Just linking it here, because it's exactly the same issue, just in a repository, that has nothing todo with mio: https://github.com/ogham/rust-ansi-term/issues/27

I ran into the same issue and addressed it upstream.
So OpenBSD-current (which becomes 6.2) now has EV_RECEIPT and EV_DISPATCH.
I also opened this pullrequest, that should bring it up to speed.
However, there is another issue which will probably take some time.
Is there a chance to use a workaround for now?


Resolving refs finds objects in terminating state

What happened?
When using references to other objects, the object is resolved even though the referenced object is in a terminating state.
How can we reproduce it?
We can reproduce this with the usage of AWS SecurityGroups where AWS checks if the SG ID is in use elsewhere.
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: SecurityGroup
metadata:
  name: app-sg
  labels:
    type: application
    app: foobar
spec:
  forProvider:
    vpcId: XXX
    region:
    description: Application security group
    groupName: app-sg
  providerConfigRef:
    name: default

apiVersion: ec2.aws.crossplane.io/v1beta1
kind: SecurityGroup
metadata:
  name: redis-sg
spec:
  forProvider:
    vpcId: XXX
    region: xxx
    description: regis-sg
    groupName: redis-sg
    ingress:
      - ipProtocol: tcp
        fromPort: 6379
        toPort: 6379
        userIdGroupPairs:
        - groupIdSelector:
            matchLabels:
              type: application
              app: foobar
  providerConfigRef:
    name: default

kubectl apply -f application-sg.yaml -f redis-sg.yaml
kubectl get securitygroups
app-sg                                     True    True     sg-xxx   vpc-xxx   85s
redis-sg                                   True    True     sg-xxx   vpc-xxx   65s

Delete the application security group that is referenced by redis security group, which will hang because of blocking AWS api.
kubectl delete -f application-sg.yaml # will hang on blocking

This will result in the following, since redis-sg now depends on app-sg, and on reconcile the object reference will see the app-sg even though it is in an unready state.
app-sg                                     False   False    sg-xxx   vpc-xxx   83s
redis-sg                                   True    True     sg-xxx   vpc-xxx   65s

The event on app-sg is the following:
failed to delete the SecurityGroup resource: DependencyViolation: resource sg-xxx has a dependent object

Expected behaviour
In #250 it is describe that it should work with clearing the reference, but this does not seem to be the case.
kubectl edit -f redis-sg.yaml # remove sg- reference

I assume that there is a missing condition at references.go as the destination object is not checked.
What environment did it happen in?
Crossplane version: 1.1.0
Cloud provider: provider-aws 0.17 + PR https://github.com/crossplane/provider-aws/pull/614
Kubernetes version: 1.18
Kubernetes distribution: EKS

What is the scenario that requires you to reference a terminating object? A case I can think of is that you reference an object, it's resolved, but now you'd like to delete and re-create that referenced object and expect that it picks up the new value. If that's the case, https://github.com/crossplane/crossplane-runtime/pull/328 should help you set a policy for the reference to repeatedly resolve even if it's already resolved to a value. Would that help?

Yeah, this is about being able to recreate (or just delete) a composition or managed object that is referenced from another. For example, if you have an App and a DB, and the DB references the App in an inbound security group rule.
#328 will definitively help, but wouldn't it be 50-50 selecting the terminating object instead? So after 6 reconciles there's a 1% chance of all the reconciles selecting the terminating object? And AWS will not allow that object to terminate because of the reference.
And if the new object is "named" in AWS and not "random ID"-based, there will never be two objects available at the same time. In that case, the situation will never clear up.
So I think during resolution, we should still skip terminating objects, but the implementation will be much simpler thanks to #328.

/fresh


MAINT: _lib: update _docscrape from upstream

[skip cirrus]

Reference issue
n/a
What does this implement/fix?

Brings _lib._docscrape up to date with upstream.
Additional information
This is used in stats._axis_nan_policy.
Accidentally pushed a branch to the main repo again, will fix my codespaces setup.

@mdhaber the first commit passed all CI apart from the linter and the second commit makes the linter pass. I don't know whether you want to check the behaviour with stats._axis_nan_policy or whether we are happy that this is safe to do.

I would be able to tell by looking at the docs, but there is no docs artifact.

I would be able to tell by looking at the docs, but there is no docs artifact.

https://output.circle-artifacts.com/output/job/65899f3e-888a-4b96-b87c-939f48a98d65/artifacts/0/html/index.html?pr=21215

I'd also like to compare old _docsrape + black formatting with this version, since it seems like that would account for most changes. Is it convenient for you to generate that diff (if you ever use Black already)?

Okay, I can look at generating this diff, if that is preferable to you taking a look through the ~10 commits since you added the script at https://github.com/numpy/numpydoc/commits/main/numpydoc/docscrape.py.

Thanks Matt, PR opened upstream. The linter did catch the missing stacklevel in the first commit, but I disabled linting for this file in the second commit - my understanding is that we leave checking the quality of vendored code to the upstream repos.

Ah, got it. Do you want to make any changes here since they will probably be fixed, or merge now?

no-rush on merge here, I'll make the changes here at some point (maybe before or after the upstream PR is in)

CI failure is also in gh-21167, so unrelated Looks like the changes made it in upstream, too, so I'll go ahead and merge.


Cannot use/import git package inside lambda

Hey Hi
I'm trying to use git python package in lambda service.py, after deploying when i query lambda using api gateway url, getting the following error in CloudWatch error logs
Error
Unable to import module 'service': Bad git executable.
The git executable must be specified in one of the following ways:

be included in your $PATH
be set via $GIT_PYTHON_GIT_EXECUTABLE
explicitly set via git.refresh()

Can someone help in this regard

I used github rest api as a workaround solution for the above issue.
issue solved


MM-19925-remove role from user card

Summary
Removes the role from the user card, since it causes confusion.
Ticket Link
https://mattermost.atlassian.net/browse/MM-19925
Screenshots

/update-branch

/update-branch

@BenCookie95 - ping on this PR.

/update-branch


AttributeError: module 'fastai.vision.gan' has no attribute 'unet_config'

I am using this tutorial for super resolution Unet model. https://cran.r-project.org/web/packages/fastai/vignettes/super_res_gan.html. However, the create_gen_learner function resulted in Error in py_get_attr_impl(x, name, silent) : AttributeError: module 'fastai.vision.gan' has no attribute 'unet_config' error. The basic Unet without unet_config argument works fine. https://github.com/henry090/fastai#unet-example
create_gen_learner = function() {
  unet_learner(dls_gen, arch, loss_func = loss_gen,
               config = unet_config(blur=TRUE, norm_type = "Weight",
               self_attention = TRUE, y_range = y_range))
}
learn_gen = create_gen_learner()
# Error in py_get_attr_impl(x, name, silent) :
#     AttributeError: module 'fastai.vision.gan' has no attribute 'unet_config'

Hi. Thanks for letting me know. From the python side, the tutorial is here. And as far as I understand, this function is no longer in fast.ai. https://github.com/fastai/fastai/blob/master/dev_nbs/course/lesson7-superres.ipynb
from fastai.vision.all import *
unet_config(blur=True, norm_type=NormType.Weight)
# NameError: name 'unet_config' is not defined

This could be in another place but I am not sure.

Thanks. https://github.com/fastai/fastai/commit/eaa588fdc1efdfdd4a3c1dcae1895add10f223a7#diff-fa360114e1afbe049ed12f6aa92ac3945ceca61d72d73cec953217ddf602a1aa unet_config have been changed to create_unet_model. Based on my quick reading, it seems right now you can pass the arguments directly to unet_learner without calling unet_config or create_unet_model (please confirm!).
create_gen_learner = function() {
  unet_learner(dls_gen, arch, loss_func = loss_gen,
               blur=TRUE, norm_type = "Weight",
               self_attention = TRUE, y_range = y_range)
}

learn_gen = create_gen_learner()
# work !

I think you are right. We need to add this create_unet_model, as well. I can add this. However, if you have time and would like to PR, that would be great!


Features/component style theme

I need to do styling for GroupedList and it would be dumb to not employ the new styling mechanism.

No, don't delete!  Keep working in your branch.  When mine is done, I'll merge it into yours and we'll continue your branch to finish styling.


Consider providing CHM documentation officially

No priority for now but here are some references:

https://github.com/bisubus/yii2-apidocchm
#1797

+1000 for this. I've always liked much more the chm format (even in Linux, KchmViewer is an excellent viewer, much better than Microsoft's tool) than the pdf or online version (there are times a internet connection is not available), since it's much more usefull to search and find something very quickly. Please consider providing official support for the chm format.
Thanks.

Is there any progress regarding this issue? It's been more than a year since it was opened and Yii2 still lacks a proper offline documentation format. This forked repository has issues (the latest version does not include the documentation for the jui widgets and for some reason the author has disabled the creation of issues).

@lourdas Thank you for noticing that. Indeed, extension documentation for 2.0.4 seems to be broken, I will take a look at the issue.

@bisubus Thanks for working on creating a nice chm file. Please consider enabling issues for the repository, so that we could notify you of any issues that arise. Maybe the Yii developers would consider merging your work at the official repository, it would be nice. Not many people know of your work towards creating a chm file.

@lourdas Issue tracking is enabled now at [bisubus/yii2-apidocchm][https://github.com/bisubus/yii2-apidocchm/], feel free to create the one if you will find other problems. Adding CHM feature in a proper way requires some yii2-apidoc classes to be refactored, I guess that's the reason why it wasn't merged yet.

I am going to take a look at this as soon as we have the new website.


Fix init node transport interface bug

1.Fix adding node routes crash bug, which caused by uninitialized DualStackIPs param.
2.Fix ipv4 address and ipv6 address confused bug and return the first ipv4 and ipv6 ips for transport interface.
Fixes #2665
Signed-off-by: Wu zhengdong<EMAIL_ADDRESS>

Codecov Report

Merging #2670 (c8f0365) into main (04619b6) will decrease coverage by 19.60%.
The diff coverage is 25.00%.

@@             Coverage Diff             @@
##             main    #2670       +/-   ##
===========================================
- Coverage   60.66%   41.05%   -19.61%
===========================================
  Files         285      158      -127
  Lines       22997    19243     -3754
===========================================
- Hits        13951     7901     -6050
- Misses       7545    10595     +3050
+ Partials     1501      747      -754

Flag
Coverage Δ

kind-e2e-tests
?

unit-tests
41.05% <25.00%> (-0.03%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

pkg/agent/util/net.go
26.86% <0.00%> (-9.50%)
:arrow_down:

...gent/controller/noderoute/node_route_controller.go
44.10% <100.00%> (-11.24%)
:arrow_down:

pkg/ovs/openflow/default.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/util/runtime/runtime.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/agent/cniserver/pod_configuration_linux.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/ovs/openflow/logs.go
9.52% <0.00%> (-90.48%)
:arrow_down:

pkg/apis/controlplane/register.go
0.00% <0.00%> (-90.00%)
:arrow_down:

pkg/agent/nodeportlocal/k8s/annotations.go
0.00% <0.00%> (-83.88%)
:arrow_down:

pkg/agent/agent_linux.go
0.00% <0.00%> (-80.00%)
:arrow_down:

pkg/agent/client.go
0.00% <0.00%> (-77.42%)
:arrow_down:

... and 231 more

/test-all

@Jexf thanks for catching the issues before it's released!
Apparently the corresponding change #2436 is lack of unit tests to cover the two functions.
I will first merge this to fix the bug. @Jexf It would be great if you could have another PR to help fix the unit tests for the two functions so the error won't happen again. Please let me know if you feel ok to do it, or I would request @lzhecheng to follow up.

Thank you for reminding me, I will add unit tests for the two functions in another PR.

/test-windows-e2e /test-windows-networkpolicy


delete_after in interaction responses

Summary
Add (or return) delete_after for message changes inside interaction responses
What is the feature request for?
disnake.ext.commands
The Problem
It is not possible to specify the deletion of a message after a time
The Ideal Solution
Add an optional parameter delete_after:float to the edit_message function inside the InteractionResponse class, which will regulate the deletion of the message
The Current Solution
No response
Additional Context
No response

Consider using Interaction.delete_original_response's delay parameter


flushAll not completely purging database

Can you look over the flushAll code?  I have flushAll running before each of my unit tests and it doesn't work all the time.  Actually if I do jedis.select(3) after flushAll and read there is still data in there.
        Jedis jedis = jedisPool.getResource();
        jedis.flushAll();
        jedis.close();

It only works (clears db) if I do a select before it:
        jedis.select(3);
        jedis.flushAll();

Hi @bryaan, could you please add steps to reproduce this? I tried the following, and this test passes for me:
       RedisServer server = RedisServer.newRedisServer();
        try {
            server.start();
            Jedis jedis = new Jedis(server.getHost(), server.getBindPort());
            //setting up data in 3 databases
            for (int i = 0; i < 3; i++) {
                jedis.select(i);
                jedis.set("foo" + i, "val1");
                jedis.set("bar" + i, "val2");
                assertEquals(2, jedis.dbSize());
            }
            jedis.close();
            //Re-opening connection and flusing everything without prior db selection
            jedis = new Jedis(server.getHost(), server.getBindPort());
            jedis.flushAll();
            for (int i = 0; i < 3; i++) {
                jedis.select(i);
                assertEquals(0, jedis.dbSize());
            }
        } finally {
            server.stop();
        }

I also reviewed the flushAll code and I can't see any depedency on a currently selected  database
I'm closing this now, but please fell free to reopen it if the problem persists!!


There is no source distribution on pipy

This is a minor inconvenience for some but those who would like to see conda convert work it would be helpful.

I can't maintain it on conda, it's too much effort. I did onboard it to conda in the past, but it stopped working and I don't think I'll tackle it again in the near future.

Okay I'll try to correct that in new releases.

Fixed.


Preview documentation (v2.2) visible on npgsql.org

Hello
I noticed the documentation on the wiki points to 2.2
Is it possible to have it in sync with the latest stable version, which is 2.1.x ?
I noticed this when I tried to use .ForNpgsqlHasEnum<Enum>(), which didn't work as I was on 2.1.2

@cheng93 Thanks for pointing this out. Those changes were merged with the dev branch, and weren't intended to make it onto the documentation site quite yet.
I suspect we may have updated the documentation site for preview users, but if that's the case we'll need to look into some kind of version toggling support (e.g. like that on the https://docs.microsoft.com).
/cc @roji

Thanks for raising this, yeah, it's a bit of a mess... We should be publishing documentation from the master branch (it used to be this way) but are doing it from the dev branch instead.
This would mean that any stable documentation fix will need to be committed to dev and then backported to the master branch, which is a bit of a heavy workflow - but I don't see any other choice. I can switch the docs to point at master, although it could mean that recent stable doc updates would disappear (since they haven't been backported). Any comments @austindrenski @YohDeadfall?
Note: I've opened #2168 which would automate doc publishing, alleviating at least some of the annoying publishing tasks.

We can also look at making preview documentation for vNext available on the site, although that frankly seems like very low priority to me...

@roji I actually think sticking to the status quo may be the best move for now. Once we complete the CI migrations, the docs automation might be easier to handle.
Regarding the preview documentation, I was picturing something like the tabbed sections that used to be found in the Kestrel/HTTP.sys docs. (I went to grab a screenshot, but it looks like they've changed the structure to remove the tabbed section delimiters...)
It would be nice to just have documentation from dev serve as the (automated) source for our website. But for that to be viable, we need to do something like what was being done at docs.microsoft.com with the tabs. Their current style of fully versioned docs sites is an okay option for maintaining complete versions of docs (e.g. Npgsql 3.1, Npgsql 3.2, etc)  but I think that style makes it harder to identify differences in vNext documentation (where you really want user facing changes to be obvious).
I'm not sure if what I'm proposing is clear without screenshots, so I'll try to do some leg work on this and post back a more concrete proposal before the end of October.

OK... A few extra thoughts.
As written above, actually have multiple doc versions online (stable, preview) seems like a real overkill to me, and it's likely to not be very trivial with docfx... Given infinite resources I'd do it, but we're not there yet and probably have higher-priority things to do :) People who want to look at preview versions of Npgsql can consult the source to see any API changes.
If the above sounds reasonable, then I think the stable documentation should be the one to appear on the site (so from the master branch), not the preview (dev branch). I'd propose doing that right away except that as I wrote above, I'm a bit concerned we have doc fixes that haven't been backported to master. We can go over doc commits to dev since 4.0 and backport relevant ones, and then make the switch.
Let me know what you think.

Ok, on second third thought, full doc versions may indeed be overkill here.
But it looks like docfx does supports what I had in mind initially as tabbed content. So we could use those to separate pattern/example changes.
We definitely don't want doc maintenance to become a major ordeal, but tabbed content seems like it should be low cost.
What do you think?

The issue isn't so much with generating tabbed content with docfx, as including content from multiple branches in the same site...
If you look at the current doc site, you'll see that we use git submodules to reference the three Npgsql projects, since we want to generate a single site for all of them. Including preview and stable tabbed content would mean doubling that: we'd need a submodule for Npgsql master and another submodule for Npgsql dev, and we'd set up docfx to generate tabs corresponding to the different submodules. It can all be done but it just doesn't seem to be worth the effort (or complexity)...

Ahhh. Ok, misunderstood w.r.t. the submodule effort/complexity. Makes sense now.
I'll try to find some time today or tomorrow to diff and patch the docs.

Great, thanks for helping out on this annoying task... After this is done we should treat documentation changes like any code change - backporting it or not as appropriate...

This is actually turning out to be a bit complicated. It looks like we have current docs in both master and dev that do not appear in the other. (I'm responsible for at least some of this....)
I'm going to submit a PR to get everything right in dev. Along the way, I'll try to segregate version-specific changes (e.g. enums) as tabbed content.
Once that's accepted (and we can verify everything is there), I'll submit a second PR to backport the whole doc/ directory to master, which will hopefully make it easier going forward to apply the normal pattern of backporting.


Execution fixes plus black

This PR addresses the comments from #6.
In summary:

Fixed execute function (I modified the PR inline using Github editor and I missed some things)
Added black autoformatting (including Trevis tests)

The switch to black (doublequotes) broke the regular expression in setup.py.

I noticed that black reformats code like this:
f(g(h(
    """
    Some text
    """)))

into that:
    f(
        g(
            h(
                """
        Some text
        """
            )
        )
    )

This increases both line number and line lengths and I don't think it's better readable.
I really don't like that. Also, this begs for the multiline-string to be manually adapted to the new identation, like this:
    f(
        g(
            h(
                """
                Some text
                """
            )
        )
    )

What do you think? Should we adapt such formatting?
But that would mean that many tests that check column positions would need to be adapted as well.
See also https://github.com/ambv/black/issues/500 which is a similar issue and leads to the problem of long line lengths mentioned above.

Another thing to consider: I hand-crafted the docstrings to fit into the 79 char line limit. Does this mean we should now allow 88 chars in docstrings? Or should we continue to restrict docstrings to 79 chars? But I would hate to have two different standards for line lengths depending on whether it's code or docs. Editors usually only support one global setting for the max line lenght (wrap and visual guide).

What do you think? Should we adapt such formatting?
I think you are right, as the conversion you showcased is not ideal. But looking at the code reformatted (primarily on the tests dir, which is the most affected by this), I think the readability is quite close to the previous non-black formatted version.
If you want, we can take tests dir out of black reformatting, and just run flake8 on it. Thoughts?

Another thing to consider: I hand-crafted the docstrings to fit into the 79 char line limit. Does this mean we should now allow 88 chars in docstrings? Or should we continue to restrict docstrings to 79 chars?
I'm not sure about this one, I think that as long doesn't go over 88 chars it should be fine, so we can move slowly the docstrings to 88 chars in the long run. Personally I think this is more a stylistic question, so I will go with whatever you prefer here :)

If you want, we can take tests dir out of black reformatting, and just run flake8 on it. Thoughts?

I think we should be consequent and use the same formatting everywhere. Consistency inside a project is very important. Also, many IDEs and editors only support global settings for the formatting tool and line length. That's another reason to use the 88 char line limit also for docstrings and docs (text files) as well.
I'm still a unhappy with the double quotes and forced new lines and indentations for parens. But I guess I need to swallow that pill even if it's not my taste. :)

But actually I was also requesting your feedback regarding whether we should adjust the indentation inside multi-line strings to make them fit the indentation of the opening triple-quote (see the last two code snippets above, both of which are black-compliant, i.e. will not be reformatted by black). Black cannot change the indentation inside multi-line strings, because that changes semantics. But we could do that (if we corresponding adaptations to checks for column positions). The disadvantage is that the available line length may become very short in some cases with large indentation. Maybe reduce indentation in these cases and indent properly otherwise?

Maybe I'm overthinking this. Some of the code looks uglier to me now, but it's not a big deal. Will reformat the docstrings over time. I think we can close this and move on.


Restructuring the "Welcome" page for docs

As we start using this page as our landing page for more of CTA's from the site and marketing, I wanted to make a bit more readable and inviting. The goal is to get people into tutorials and building ASAP.
PR Checklist
Please review the guidelines for contributing to this repository.

[X] I am requesting to pull a topic/feature/bugfix branch (right side). In other words, not master.
[ ] I have run npm test against my changes and tests pass.
[ ] I have added or edited necessary documentation, or no docs changes are needed.

Description

Fixes: #

I made some minor edits to the copy and organized the different subjects into their own sections. Let me know if this is good to go.

:tada: This PR is included in version 1.26.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Fedora 23 setup

I've got Python 3.5 installed on Fedora 23, but when I run your setup instructions from PyPi, I get an error about being unable to access .cibopathrc in my $HOME folder.
$ sudo pip3.5 install cibopath
... (snipped)
Successfully installed aiohttp-0.21.6 chardet-2.3.0 cibopath-0.1.0 click-6.6

$ cibopath config github.username iandouglas
Traceback (most recent call last):
  File "/usr/bin/cibopath", line 11, in <module>
    sys.exit(main())
  File "/usr/lib/python3.5/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 1057, in invoke
    Command.invoke(self, ctx)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python3.5/site-packages/cibopath/cli.py", line 30, in cli
    ctx.obj = UserConfig(config_file)
  File "/usr/lib/python3.5/site-packages/cibopath/user_config.py", line 13, in __init__
    self._config = self._load_config()
  File "/usr/lib/python3.5/site-packages/cibopath/user_config.py", line 24, in _load_config
    with self.file_path.open('r', encoding='utf8') as config_file:
  File "/usr/lib64/python3.5/pathlib.py", line 1136, in open
    opener=self._opener)
  File "/usr/lib64/python3.5/pathlib.py", line 992, in _opener
    return self._accessor.open(self, flags, mode)
  File "/usr/lib64/python3.5/pathlib.py", line 371, in wrapped
    return strfunc(str(pathobj), *args)
FileNotFoundError: [Errno 2] No such file or directory: '/home/id/.cibopathrc'

Hi @iandouglas! 👋
Did you follow the config instructions?

@hackebrot considering the very first instruction is cibopath config github.username <your-username> which I pasted above, yes.

My presumption is that the 'config' steps would create that file, but the exception that's thrown above indicates it's merely looking for the file and not finding it.
From what I've traced in cly.py and user_config.py is that it's looking for my .cibopathrc file before even interpreting my instructions, this feels like a chicken-and-egg problem since my rc file hasn't been created by the tool yet.
in user_config.py:
24         with self.file_path.open('r', encoding='utf8') as config_file:
25             config.read_file(config_file)

... perhaps this needs a try/except around it in case the file isn't found, and handled more gracefully?

Right, my bad. I can reproduce the issue.
As a workaround you can $ touch ~/.cibopathrc for now.

Should be fixed now!


Agent no-update mode

Could you please update the description with a summary of what exactly is the purpose of this PR? :)

I think one use case that is not documentated here is just about controlling the timing of the updates. It's not about audits and rules, it's mostly about making sure updates to a critical system happen when the risks are minimized (i.e. not on the day a big release is planned).
In such a scenario, some options that would be appreciated would be:

partial rollout of the update to some agents in the pool, so builds can be tested against that new version without endangering the whole pool. That can be done with manual updates now, but not with automatic.
ability to manually roll back an update, so if anything breaks, there's a workaround.
better ability to identify or override version requirements. Why did our builds suddenly start requiring version 2.161.1 yesterday? That is not clear to us, and there was no way of overriding that behavior, or finding what task or step made the upgrade necessary.

By reading your proposal, it seems as if right now, a new version of a task might cause an update in the minimum version of the agent. It would be nice if instead we could control that behavior with the following options:

always update tasks to latest minor version, even if it bumps minimum agent version (which I believe is the current behavior)
updates tasks if it's compatible with the current agent version. That would be our favorite setting, as we would get most updates, but that wouldn't force auto-updating of the agents.
never update tasks automatically (I think this can already be achieved by using the full version number in the task, but I have never tested it)

Live spec review feedback:

Thought experiment about having the agent be a tiny bootstrapper + task-like payload containing the bulk of it
In BYOS, since we provide the agent (just like MMS), is this inside our compliance boundary?

Oops, I missed @jbblanchet 's comments - sorry! Thanks for the feedback. This proposal will give you some control towards the scenario you're asking for:

We'll stop requesting upgrades quite so often, instead analyzing whether a new feature requires it or not
We'll give good error messages in cases where we fail to find an agent of the right version - if it's a task, you can choose to disable or delete the task

We don't want to get into the business of pinning to minor versions of tasks. Same reason as why the service (including its .NET code, the JavaScript it serves up, etc.) stays evergreen: that's how we address bugs, fix security holes, and of course, offer up new features.

We agreed that this spec is in decent shape. While there are a few loose ends to tie up in the design, going to go ahead and land it.


Example is broken

Changes are not being processed. Maybe this is due to breaking changes in the new rc?
Alden

Yes, thanks. Known bug. Working on it.

Fixed in v3.0.0.

@erikras - 👍 Thanks for the quick turnaround!


GradientTexture1D no longer works as a sampler2D texture.

Godot version
v4.2.dev4.mono.official [549fcce5f]
System information
Windows 11, RTX 3050 Laptop, 11th Gen i5, Vulkan
Issue description
For whatever reason, whenever I attempt to set a GradientTexture1D as a sampler2D texture for any shader, the texture simply vanishes when the game is run or when I reload the scene. I first noticed this issue when I updated from 4.2 dev 3 to 4.2 dev 4, and all of my materials that required gradients simply reset on the spot. I tried recreating the gradients as a separately saved resource, but Godot would shortly reset the texture fields after a quick reload, and would fail to render those textures in-game.
Steps to reproduce

Create a simple shader that renders a texture from a sampler2D uniform.
Drop in a Gradient1DTexture into the sampler2D uniform field from the material's shader parameters.
Reload the project or run the game.
Take note of the lack of the loaded gradient texture. If you reloaded the project, the texture field in the shader parameters should be empty again.

Minimal reproduction project
N/A

Duplicate of https://github.com/godotengine/godot/issues/81712


Fix warnings from Infer

Ran the project through Infer and cleaned up the errors and warnings.
Not sure if this is an Infer quirk or not, but it seemed to complain about block params being nullable, even when nonnull is assumed.
Better safe than sorry I suppose ¯\_(ツ)_/¯
The following is the Infer CSV report:
class,kind,type,qualifier,severity,line,procedure,procedure_id,file,trace,key,qualifier_tags,hash,bug_id,always_report,advice
,WARNING,PARAMETER_NOT_NULL_CHECKED,"Parameter `completionHandler` is not checked for null, there could be a null pointer dereference: pointer `completionHandler` could be null and is dereferenced at line 38, column 9",MEDIUM,38,"__objc_anonymous_block_HUBOperation_synchronousOperationWithBlock:______1","__objc_anonymous_block_HUBOperation_synchronousOperationWithBlock:______1.ddc0be7f62a58d1a2062c46b167aa7e0",sources/HUBOperation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBOperation.m"",""line_number"":36,""description"":""start of procedure block"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""__objc_anonymous_block_HUBOperation_synchronousOperationWithBlock:______1""},{""tag"":""name_id"",""value"":""__objc_anonymous_block_HUBOperation_synchronousOperationWithBlock:______1.ddc0be7f62a58d1a2062c46b167aa7e0""}]},{""level"":0,""filename"":""sources/HUBOperation.m"",""line_number"":37,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBOperation.m"",""line_number"":38,""description"":"""",""node_tags"":[]}]}","141050084","<qualifier_tags><bucket>B1</bucket><parameter_not_null_checked>completionHandler</parameter_not_null_checked><line>38</line><value>completionHandler</value></qualifier_tags>","41416583","1","false",""
,WARNING,PARAMETER_NOT_NULL_CHECKED,"Parameter `completionHandler` is not checked for null, there could be a null pointer dereference: pointer `completionHandler` could be null and is dereferenced at line 892, column 13",MEDIUM,892,"__objc_anonymous_block_HUBViewControllerExperimentalImplementation_createReloadCollectionViewOperation______7","__objc_anonymous_block_HUBViewControllerExperimentalImplementation_createReloadCollectionViewOperati.fad0d6b29eca3213a640c28921200740",sources/HUBViewControllerExperimentalImplementation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":890,""description"":""start of procedure block"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""__objc_anonymous_block_HUBViewControllerExperimentalImplementation_createReloadCollectionViewOperation______7""},{""tag"":""name_id"",""value"":""__objc_anonymous_block_HUBViewControllerExperimentalImplementation_createReloadCollectionViewOperati.fad0d6b29eca3213a640c28921200740""}]},{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":891,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":891,""description"":""Condition is false"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""false""}]},{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":891,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":892,""description"":"""",""node_tags"":[]}]}","61291839","<qualifier_tags><bucket>B1</bucket><parameter_not_null_checked>completionHandler</parameter_not_null_checked><line>892</line><value>completionHandler</value></qualifier_tags>","582266255","2","false",""
,WARNING,PARAMETER_NOT_NULL_CHECKED,"Parameter `completionHandler` is not checked for null, there could be a null pointer dereference: pointer `completionHandler` could be null and is dereferenced at line 854, column 13",MEDIUM,854,"__objc_anonymous_block_HUBViewControllerImplementation_createReloadCollectionViewOperation______6","__objc_anonymous_block_HUBViewControllerImplementation_createReloadCollectionViewOperation______6.3eaad1023124d555acb294433994ed74",sources/HUBViewControllerImplementation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":852,""description"":""start of procedure block"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""__objc_anonymous_block_HUBViewControllerImplementation_createReloadCollectionViewOperation______6""},{""tag"":""name_id"",""value"":""__objc_anonymous_block_HUBViewControllerImplementation_createReloadCollectionViewOperation______6.3eaad1023124d555acb294433994ed74""}]},{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":853,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":853,""description"":""Condition is false"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""false""}]},{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":853,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":854,""description"":"""",""node_tags"":[]}]}","61291839","<qualifier_tags><bucket>B1</bucket><parameter_not_null_checked>completionHandler</parameter_not_null_checked><line>854</line><value>completionHandler</value></qualifier_tags>","686352510","3","false",""
PROVER,ERROR,NULL_DEREFERENCE,"pointer `componentIdentifier` last assigned on line 63 could be null and is dereferenced by call to `setObject:forKeyedSubscript:` at line 69, column 9",HIGH,69,"HUBComponentReusePool_addComponentWrappper:","addComponentWrappper:#HUBComponentReusePool#instance.a10d79c97aa0cd6186d496dc59982db5",sources/HUBComponentReusePool.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBComponentReusePool.m"",""line_number"":61,""description"":""start of procedure addComponentWrappper:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""HUBComponentReusePool_addComponentWrappper:""},{""tag"":""name_id"",""value"":""addComponentWrappper:#HUBComponentReusePool#instance.a10d79c97aa0cd6186d496dc59982db5""}]},{""level"":0,""filename"":""sources/HUBComponentReusePool.m"",""line_number"":63,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentReusePool.m"",""line_number"":64,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentReusePool.m"",""line_number"":66,""description"":""Condition is false"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""false""}]},{""level"":0,""filename"":""sources/HUBComponentReusePool.m"",""line_number"":69,""description"":""Skipped call: function or method not found"",""node_tags"":[]}]}","694081859","<qualifier_tags><bucket>B2</bucket><line>69</line><assigned_line>63</assigned_line><value>componentIdentifier</value><call_procedure>setObject:forKeyedSubscript:</call_procedure></qualifier_tags>","31679865","4","false",""
PROVER,ERROR,NULL_DEREFERENCE,"pointer `currentModelIdentifier` last assigned on line 938 could be null and is dereferenced by call to `setObject:forKeyedSubscript:` at line 941, column 9",HIGH,941,"HUBViewControllerExperimentalImplementation_configureComponentWrapper:withModel:containerViewSize:","configureComponentWrapper:withModel:containerViewSize:#HUBViewControllerExperimentalImplementation#i.750cc99f382b0e875c0d25e5ff852e7a",sources/HUBViewControllerExperimentalImplementation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":936,""description"":""start of procedure configureComponentWrapper:withModel:containerViewSize:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""HUBViewControllerExperimentalImplementation_configureComponentWrapper:withModel:containerViewSize:""},{""tag"":""name_id"",""value"":""configureComponentWrapper:withModel:containerViewSize:#HUBViewControllerExperimentalImplementation#i.750cc99f382b0e875c0d25e5ff852e7a""}]},{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":938,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":940,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBViewControllerExperimentalImplementation.m"",""line_number"":941,""description"":""Skipped call: function or method not found"",""node_tags"":[]}]}","132155902","<qualifier_tags><bucket>B2</bucket><line>941</line><assigned_line>938</assigned_line><value>currentModelIdentifier</value><call_procedure>setObject:forKeyedSubscript:</call_procedure></qualifier_tags>","744818922","5","false",""
PROVER,ERROR,NULL_DEREFERENCE,"pointer `currentModelIdentifier` last assigned on line 903 could be null and is dereferenced by call to `setObject:forKeyedSubscript:` at line 906, column 9",HIGH,906,"HUBViewControllerImplementation_configureComponentWrapper:withModel:containerViewSize:","configureComponentWrapper:withModel:containerViewSize:#HUBViewControllerImplementation#instance.d467c463d296cc46306ede1c0ca18acc",sources/HUBViewControllerImplementation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":901,""description"":""start of procedure configureComponentWrapper:withModel:containerViewSize:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""HUBViewControllerImplementation_configureComponentWrapper:withModel:containerViewSize:""},{""tag"":""name_id"",""value"":""configureComponentWrapper:withModel:containerViewSize:#HUBViewControllerImplementation#instance.d467c463d296cc46306ede1c0ca18acc""}]},{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":903,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":905,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBViewControllerImplementation.m"",""line_number"":906,""description"":""Skipped call: function or method not found"",""node_tags"":[]}]}","132155902","<qualifier_tags><bucket>B2</bucket><line>906</line><assigned_line>903</assigned_line><value>currentModelIdentifier</value><call_procedure>setObject:forKeyedSubscript:</call_procedure></qualifier_tags>","1061452373","6","false",""
PROVER,ERROR,NULL_DEREFERENCE,"pointer `groupIdentifier` last assigned on line 475 could be null and is dereferenced by call to `setObject:forKeyedSubscript:` at line 478, column 17",HIGH,478,"HUBComponentModelBuilderImplementation_copyWithZone:","copyWithZone:#HUBComponentModelBuilderImplementation#instance.8dcf0034569f920b0c402d8c0e1deea8",sources/HUBComponentModelBuilderImplementation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":438,""description"":""start of procedure copyWithZone:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""HUBComponentModelBuilderImplementation_copyWithZone:""},{""tag"":""name_id"",""value"":""copyWithZone:#HUBComponentModelBuilderImplementation#instance.8dcf0034569f920b0c402d8c0e1deea8""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":440,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":441,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":443,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":450,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":451,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":452,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":453,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":454,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":455,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":1,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":576,""description"":""start of procedure setGroupIdentifier:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""HUBComponentModelBuilderImplementation_setGroupIdentifier:""},{""tag"":""name_id"",""value"":""setGroupIdentifier:#HUBComponentModelBuilderImplementation#instance.0b5ad907d204607c5f2ab4466057abb8""}]},{""level"":1,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":581,""description"":"""",""node_tags"":[]},{""level"":1,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":583,""description"":"""",""node_tags"":[]},{""level"":1,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":587,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":1,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":588,""description"":""return from a call to HUBComponentModelBuilderImplementation_setGroupIdentifier:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_end""},{""tag"":""name"",""value"":""HUBComponentModelBuilderImplementation_setGroupIdentifier:""},{""tag"":""name_id"",""value"":""setGroupIdentifier:#HUBComponentModelBuilderImplementation#instance.0b5ad907d204607c5f2ab4466057abb8""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":456,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":457,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":458,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":459,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":460,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":461,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":462,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":463,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":464,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":466,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":467,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":466,""description"":""Condition is false"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""false""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":470,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":471,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":472,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":474,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":475,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":477,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":478,""description"":""Skipped call: function or method not found"",""node_tags"":[]}]}","294327212","<qualifier_tags><bucket>B1</bucket><line>478</line><assigned_line>475</assigned_line><value>groupIdentifier</value><call_procedure>setObject:forKeyedSubscript:</call_procedure></qualifier_tags>","1014769750","7","false",""
PROVER,ERROR,NULL_DEREFERENCE,"pointer `groupIdentifier` last assigned on line 289 could be null and is dereferenced by call to `setObject:forKeyedSubscript:` at line 294, column 13",HIGH,294,"HUBComponentModelBuilderImplementation_removeBuilderForChildWithIdentifier:","removeBuilderForChildWithIdentifier:#HUBComponentModelBuilderImplementation#instance.2a277bcb09c2a1a379a5a3ba25e1df08",sources/HUBComponentModelBuilderImplementation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":282,""description"":""start of procedure removeBuilderForChildWithIdentifier:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""HUBComponentModelBuilderImplementation_removeBuilderForChildWithIdentifier:""},{""tag"":""name_id"",""value"":""removeBuilderForChildWithIdentifier:#HUBComponentModelBuilderImplementation#instance.2a277bcb09c2a1a379a5a3ba25e1df08""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":284,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":285,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":286,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":288,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":288,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":289,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":290,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":291,""description"":""Message removeObject: with receiver nil returns nil."",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":293,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelBuilderImplementation.m"",""line_number"":294,""description"":""Skipped call: function or method not found"",""node_tags"":[]}]}","132155902","<qualifier_tags><bucket>B1</bucket><line>294</line><assigned_line>289</assigned_line><value>groupIdentifier</value><call_procedure>setObject:forKeyedSubscript:</call_procedure></qualifier_tags>","518748604","8","false",""
PROVER,ERROR,NULL_DEREFERENCE,"pointer `groupIdentifier` last assigned on line 139 could be null and is dereferenced by call to `setObject:forKeyedSubscript:` at line 145, column 17",HIGH,145,"HUBComponentModelImplementation_setChildren:","setChildren:#HUBComponentModelImplementation#instance.ff9809bd6ef6d79d050b4dbfa9d2c85f",sources/HUBComponentModelImplementation.m,"{""trace"":[{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":128,""description"":""start of procedure setChildren:"",""node_tags"":[{""tag"":""kind"",""value"":""procedure_start""},{""tag"":""name"",""value"":""HUBComponentModelImplementation_setChildren:""},{""tag"":""name_id"",""value"":""setChildren:#HUBComponentModelImplementation#instance.ff9809bd6ef6d79d050b4dbfa9d2c85f""}]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":130,""description"":"""",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":132,""description"":"""",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":133,""description"":"""",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":135,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":136,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":138,""description"":""Condition is true"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""true""}]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":139,""description"":""Skipped call: function or method not found"",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":140,""description"":"""",""node_tags"":[]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":142,""description"":""Condition is false"",""node_tags"":[{""tag"":""kind"",""value"":""condition""},{""tag"":""branch"",""value"":""false""}]},{""level"":0,""filename"":""sources/HUBComponentModelImplementation.m"",""line_number"":145,""description"":"""",""node_tags"":[]}]}","474590136","<qualifier_tags><bucket>B1</bucket><line>145</line><assigned_line>139</assigned_line><value>groupIdentifier</value><call_procedure>setObject:forKeyedSubscript:</call_procedure></qualifier_tags>","1027148184","9","false",""

Codecov Report

Merging #336 into master will increase coverage by 0.04%.
The diff coverage is 70%.

@@            Coverage Diff             @@
##           master     #336      +/-   ##
==========================================
+ Coverage   80.11%   80.15%   +0.04%
==========================================
  Files          84       84
  Lines        4510     4510
==========================================
+ Hits         3613     3615       +2
+ Misses        897      895       -2

Impacted Files
Coverage Δ

...rces/HUBViewControllerExperimentalImplementation.m
5.25% <0%> (ø)
:arrow_up:

sources/HUBComponentModelImplementation.m
99.09% <100%> (ø)
:arrow_up:

sources/HUBViewControllerImplementation.m
88.41% <100%> (ø)
:arrow_up:

sources/HUBComponentReusePool.m
100% <100%> (ø)
:arrow_up:

sources/HUBOperation.m
100% <100%> (ø)
:arrow_up:

sources/HUBComponentModelBuilderImplementation.m
96.75% <66.66%> (ø)
:arrow_up:

sources/HUBUtilities.h
72.05% <0%> (+2.94%)
:arrow_up:

Continue to review full report at Codecov.

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

@dflems Is this something could run on CI?

@rastersize Infer is like 500MB, so probably not!

@dflems 😢
Sounds like there should be a Infer CI service that just has it installed instead 😺


Can I use this script for the new Windows 10 Fall Creators Update?

Hello,
Can I use this script for the new Windows 10 Fall Creators Update?

I have used it with no problems on fresh install.

@Kaspej
Ok, thanks

Since the update came out yesterday, I haven't had the chance to test it. I'm planning to do so next week.
Generally the script should be safe to run. It worst case, few tweaks won't be applied as they're supposed to, but it shouldn't break anything.

I've checked today on fresh 1709 (RS3) aka Fall Creators Update. The script works without any modifications, so I've just added a comment about implicitly disabled SMBv1 and that's pretty much everything what was needed for the new build.


move scripts into src/pyosmeta/cli folder

This alters the scripts a tiny bit, making them more like typical CLI scripts, which would have a main() function, and then a separate bit at the end to parse arguments. This structure makes CLI scripts more testable, and it's also how you specify console scripts to PDM. The work here creates small shim "programs" that launch the scripts. These programs are not necessarily named the same as the script files. I chose to make them hyphenated instead of underscored, because hyphens are faster to type.
The implication here is that instead of copying scripts around, you can pip install pyosmeta and be left with CLI commands to run the scripts, instead of trying to figure out where they are and then calling python on them to run them. The CLI commands are on PATH when the environment is active, so you can call these commands no matter what your CWD is.

@lwasser this should fix the failing workflow. It's kind of a chicken/egg thing to test, unfortunately. This will change your local workflow, so I definitely want you to understand it before it gets merged. The console scripts are nicer ways to have a CLI, but any change to an existing workflow is disruptive.

Here's a build that shows things working: https://github.com/msarahan/update-web-metadata/actions/runs/5565453450
Before this PR gets merged, we should change the install URL for update-web-metadata back.


Use scratch-path to place iOS etc builds

To avoid them getting mixed up with the macOS build

Just realised cannot do that, but should change from --build-path for swift versions 5.7 and later

Although we need sourcekit-lsp to use the same argument


Fixed Facebook Page link for Ananay Arora

Looks Good!

Also, do you guys have Gitter or any other chat thing? Facebook is really not the thing for me.


Hot reloading error on windows

System information
Godot Engine v4.2.2.stable.official.15073afe3
Microsoft Windows NT 10.0.19045.0
Issue description
Godot editor crashes with error while recompiling library.
Steps to reproduce:

Сompile the code and run Godot (with gd command).

package main

import (
	"grow.graphics/gd"
	"grow.graphics/gd/gdextension"
)

type NewLabel struct {
	gd.Class[NewLabel, gd.Label]
}

func main() {
	godot, ok := gdextension.Link()
	if !ok {
		return
	}
	gd.Register[NewLabel](godot)
}

Add a new object "NewLabel" in the Godot editor via "Add Chid Node".

With the editor running, recompile the library.

gd build
or
go build -o ./graphics/windows_amd64.dll -buildmode=c-shared
Then Godot editor crashes with error:
ERROR: Cannot get class ''.
   at: (core/object/class_db.cpp:407)
panic: runtime.link/mmm error: use after free

goroutine 17 [running, locked to thread]:
grow.graphics/gd/gdextension.linkCGO.func80({{0x7ff85b0b2cf8?, 0xc0006c2000?}, 0x7ff85c4cc240?}, {{}, {0x6?, 0xc000624a50?}})
        D:/Golang/GOPATH/pkg/mod/grow.graphics/gd@v0.0.0-20240615231848-e0bdc0378103/gdextension/gdextension_interface.go:1755 +0x70
grow.graphics/gd.Engine(...)
        D:/Golang/GOPATH/pkg/mod/grow.graphics/gd@v0.0.0-20240615231848-e0bdc0378103/classdb.go:3643
grow.graphics/gd.(*instanceImplementation).Notification(0xc0001fa270, 0x3ea, 0xf8?)
        D:/Golang/GOPATH/pkg/mod/grow.graphics/gd@v0.0.0-20240615231848-e0bdc0378103/register_class.go:446 +0x63
grow.graphics/gd/gdextension.notification_func(0x0?, 0x3ea, 0x0)
        D:/Golang/GOPATH/pkg/mod/grow.graphics/gd@v0.0.0-20240615231848-e0bdc0378103/gdextension/gdextension_interface.go:2464 +0xa3
exit status 2

I'm not sure how solvable this is, Go doesn't strictly support dlclose when compiled to a shared library, so you get these weird inconsistent issues when you reload the extension. In my case, it works sometimes, other times, Godot will crash.

Same here! But editor just closes silently. Without any additional logs


Error handling change in HTTP requests

When an error occurs, and blockcypher and response is undefined, this occurs.

error should be checked if it does exist, no?

Ah good catch @charredgrass! Apologies for that bug. Merged and updated.

@acityinohio Npm package has to be updated as well.


Optional keys (key?: type) and super types

Hey,
I thought I finally got it with subtypes, covariant and exact objects, but I'm struggling with a case, where I'd want to initialise a form with my API response, which I believe is a super type of the form.
const response: {|+a: string|} = {a: 'aha'}
const form: {+a: string, +b?: ?string} = response

Flow complains on the b type. Since I can't mutate the objects, I struggle to understand what I'm doing wrong here.
Here's the flow try. For information, I can't modify the response type, since it's relay generated type.

Hmmm, I understand, but this doesn't work either without an exact object type. Are you aware of any workaround, to make my use-case work? Moreover, I understand that the design of exact object types might not let me do that, but is there a "valid case" which makes my program buggy, or is this simply a limitation of flow?

Could form have extra properties or should it match the response?

Form can have extra properties (it already does actually, it's just initialized with the response), it's only the response that I cannot modify, since it's generated by the relay-compiler.

Does spreading res into an object literal work for you needs and keep type safety?

Yes it does! It makes sense, thanks for the help, even I'd still like to know if my intuition fails me when it tells me that my initial example should work^^


Windows App Certification Kit version 10 link broken

'Windows App Certification Kit version 10,' to https://go.microsoft.com/fwlink/p/?LinkID=309666 redirects to generic Developers page https://developer.microsoft.com/en-us/

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

ID: bea36edd-22d6-7d1e-73c3-63d8f276d679
Version Independent ID: a50a03aa-e89d-55da-43ba-b23155b9bbaf
Content: Windows App Certification Kit - UWP applications
Content Source: windows-apps-src/debug-test-perf/windows-app-certification-kit.md
Product: uwp
Technology: deployment
GitHub Login: @Karl-Bridge-Microsoft
Microsoft Alias: kbridge

Thanks @OzBob. The link has been corrected.


1.1 backports 2018-10-11

#5842

Backport #5652 to resolve conflict

#5855
#5856

This change is

test-me-please

I named the branch confusingly, will recreate.


"View or Reply" is confusing

Some customers might expect to be able to reply to the comment via email (like GitHub). I think we're okay just saying "View" here without needing to include copy that the customer can reply directly via the email
/cc @max @teich

This is the wrong repo. Can you re-open on web?


Dockerfile for testing

Build a docker image that is ready to test libyaml

So, we seem to have a wide set of operating systems we're trying to support. I'm not familiar with Dockerfiles (or having multiple of them) to be quite honest. Would it be feasible to have multiple Dockerfiles that Travis uses to test against multiple operating systems with different versions of GCC/Clang etc.?

@ingydotnet I've updated this to include several dockerfiles and will add some more. I'd like to start including these in our Travis runs but it would almost mean having two separate Travis things since we need to use sudo to use docker there. Perhaps we can add a 3rd integration service ;)

The tests are now run on SemaphoreCI.
The namespace is mine there because organizations only receive 30 day free trials, where as open source "personal" accounts are unlimited free accounts. I'm going to reach out to see if we can secure an account for the org and transfer the project.


chore(LinearAlgebra): Introduce a LinearMap.BilinForm alias

This is one of the steps in #10553.
Once we eliminate _root_.BilinForm, we can drop the LinearMap. prefix.
Requested on Zulip by me (2021), by @kmill (2022), and perhaps one or two other places.

I think this can be used to reduce the size of the diff in #10238.

bors merge


Not loading covers of entries from android/data

Steps to reproduce
Put a .cbz in android/data//files/local/entry/
Open the local source in Yokai

Here, some if not most of the time the covers don't load automatically

Enter into the entry containing the .cbz
Refresh in the entry
Expected behavior
The cover should appear like with others
Actual behavior
No cover
Crash logs
No response
Yōkai version
App version: <IP_ADDRESS>-r5867 (standard, 39428f8c79, 149, 2024-11-28T14:38:22Z) Android version: 11 (SDK 30) Android build ID: RPNS31.Q1-51-40-16-12 Device brand: motorola Device manufacturer: motorola Device name: nairo Device model: motorola one 5G Device product name: nairo_a
Android version
Android 11
Device
Motorola One 5G
Other details
Going into the .cbz (chapter) and holding down a page and tapping "Set as cover" has no effect either
Getting cover when refreshing an entry works without problems with other entries outside android/data
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, or a request for an extension, I should be contacting the extensions repository's maintainer/support for help.
[X] I am reporting an issue exclusive to this fork. I have also checked that is not an issue on the main version of Mihon
[X] I have tried the troubleshooting guide.
[X] I have updated the app to version <IP_ADDRESS>.
[X] I have updated all installed extensions.
[X] I have filled out all of the requested information in this form.

First off:

/storage/emulated/0/Android/data/eu.kanade.tachiyomi.yokai/local

That folder can't be easily be accessible by any means of the default file picker (see following images below) due to the Storage Access Framework enforced in Android 11 (much tougher on newer versions like android 14 where you need either adb or root permission to browse the Android folder):

Besides, I tried moving my test folder containing CBZ files and it fails to detect in the Android data directory rather than the assigned folder used for the storage location anyway.
I would highly recommend to read the local storage guide found here: https://mihon.app/docs/guides/local-source/ (just replace Mihon with Yokai or whatever folder you named for your storage location

There's an experimental feature on nightly version for that, you need to enable it tho (REF: https://github.com/null2264/yokai/issues/197#issuecomment-2497165791). It's mostly to handle sdcard, pretty niche feature ngl so I kept it on Advanced settings.

I tested on r5882 and I can now replicate the issue here

For context, my device info is here:
App version: <IP_ADDRESS>-r5882 (standard, 8cef33d9c6, 149, 2024-11-29T08:22:25Z)
Android version: 11 (SDK 30)
Android build ID: RMX2040_11_C.14
Device brand: realme
Device manufacturer: realme
Device name: RMX2040
Device model: RMX2040
Device product name: RMX2040

just realized, the cover.jpg file is created


Unable to load with antigen: "Error! Activate logging and try again."

Thanks for great tool! I was trying to install with antigen, with the following script:
source /usr/local/share/antigen/antigen.zsh

antigen use prezto

antigen bundles <<EOB
    ellie/atuin
EOB

antigen apply

And it throws Installing ellie/atuin... Error! Activate logging and try again. error once I do source the shell. Any ideas? 🤔

I think this is solved, I'll close for now


Updated User Guide

Coverage remained the same at 78.505% when pulling b96367fa081cfa6e9cbeef056c390330d370c3c1 on awarenessxz:v1.5_User_Guide into 892de1e3a0df5b5cc93805fa3b2420a0b8f767e7 on CS2103AUG2017-W14-B2:master.


Add support for kubernetes namespaces.

Add support for kubernetes namespaces. Namespace is configurable via stackanetes.conf
Signed-off-by: DTadrzak<EMAIL_ADDRESS>

Don't we need to do it to the mariadb template? Is it still used?

@Quentin-M: Mariadb is fixed in this PR(#33 ).


Adds extra logging around the reason for a file rotation decision

What does this PR do?
When the logs agent detects a file rotation on *nix, it could be for 1 of 2 reasons. This adds explicit DEBUG level logs that show why the rotation was detected.
Motivation
When investigating how the agent handles rotations, I encountered a case where it appeared that the underlying file did not actually rotate, however the agent said it did.
This log will provide extra information to help debug such a situation in the future.
Additional Notes
n/a
Possible Drawbacks / Trade-offs
n/a
Describe how to test/QA your changes
n/a
Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

Looking at rotate_windows.go, it seems there is only one condition for rotation, "is size < offset". Adding a debug log for that as well for symmetry


Cannot click/progress the cursor past block elements at the end of the document

Umbrella issue to track multiple bugs.
Reported on Meta.SE in the following posts:

https://meta.stackexchange.com/a/360239/395497
https://meta.stackexchange.com/a/360057/395497
https://meta.stackexchange.com/a/360059/395497
https://meta.stackexchange.com/a/360056/395497

Fixed in 2df6573 by always adding a paragraph element when inserting block nodes at the end of the document.


bug fix in reset slice

Hi! We are using your plugin and its working really great, but recently we have discovered one little bug about memory pooling, connected with this issue https://github.com/planetscale/vtprotobuf/issues/8 . When the message contains repeated field you just reduse size  to zero when ResetVT not to overload GC and its cool. The problem is that if repeated element contains pointer field or other repeated field, firstly when you unmarshall data to it and these fields are present in request, fields will be filled in. Secondly, when another request comes without pointer field or slice in element, you take element from pool with this fields set, unmarshal data to it, and then you have a kind of merged data from previous request. Thats why we thought that it may be good to reduse size  to zero not only at top level slice, but on lower levels too, and we came with pr as one of the options to solve this issue without overhead of complexity. I hope that i could explain everything clearly. Waiting very much for your feedback

@vmg hi! Unfortunately my solution did not pass conformance tests so i had to go other way. I have added  test proto files and some test cases to demonstrate the bug. Please pay attention how ResetVT is generated for Test1 and Test2, they are created in different way. You can recreate the bug by commenting my solution and running test cases. First test case will always pass as reducing size of slice is working with primitive types in repeated field but second case will fail as repeated filed is not of primitive type.

Alright! I pushed some CI changes to allow the tests to actually run in production, but overall this is looking very good. Thanks for spotting the bug and taking the time to fix it.

Thank you

Hi @zcolleen @vmg
I'm a little confused about the outcome of this PR and was hoping someone could clarify my observations.
Given the following example proto:
message Response {
	repeated Data data = 1;
}

message Data {
	// some fields here
}

Prior to this PR I'd see code generated as such:
func (m *Response) ResetVT() {
	for _, mm := range m.Data {
		mm.ResetVT()
	}
	f0 := m.Data[:0]
	m.Reset()
	m.Data = f0
}

After this PR I see the following:
func (m *Response) ResetVT() {
	for _, mm := range m.Data {
		mm.ResetVT()
	}
	m.Reset()
}

This seems like it defeats the entire purpose of pooling and we're also doing extra work calling ResetVT on things that are going to become unaddressable and get garbage collected anyways.
I didn't quite understand the bug this PR was originally trying to solve. In reality I have cases where there are pooled repeated fields up to 3 levels deep and ResetVT() is being called correctly everywhere prior to resizing the slice to 0. Since ResetVT() eventually calls Reset() which replaces the struct with a zero-value one I am not sure how we can end up in a situation with merged data from a previous unmarshalling.

Hi @zcolleen @vmg
I'm a little confused about the outcome of this PR and was hoping someone could clarify my observations.
Given the following example proto:
message Response {
	repeated Data data = 1;
}

message Data {
	// some fields here
}

Prior to this PR I'd see code generated as such:
func (m *Response) ResetVT() {
	for _, mm := range m.Data {
		mm.ResetVT()
	}
	f0 := m.Data[:0]
	m.Reset()
	m.Data = f0
}

After this PR I see the following:
func (m *Response) ResetVT() {
	for _, mm := range m.Data {
		mm.ResetVT()
	}
	m.Reset()
}

This seems like it defeats the entire purpose of pooling and we're also doing extra work calling ResetVT on things that are going to become unaddressable and get garbage collected anyways.
I didn't quite understand the bug this PR was originally trying to solve. In reality I have cases where there are pooled repeated fields up to 3 levels deep and ResetVT() is being called correctly everywhere prior to resizing the slice to 0. Since ResetVT() eventually calls Reset() which replaces the struct with a zero-value one I am not sure how we can end up in a situation with merged data from a previous unmarshalling.

@npordash hi! I have added some test cases to demonstrate this bug, have you tried them on new and on old versions to see the difference?

@vmg Where you able to understand the bug ? I have doubt there was a bug here.
I can understand that if you pool a child object and ResetVT then you're in trouble. But that's more a usage issue.
I'd love to understand more about this please ?

@cyriltovena hi! It actually easy to reproduce this bug, just go to pool_with_slice_reuse_vtproto.pb.go and put ResetVT this way
func (m *Test2) ResetVT() { 	f0 := m.Sl[:0] 	m.Reset() 	m.Sl = f0 }
to make it behave as before.
Then run Test_Pool_slice_recreation test and you will see the bug as the test will fail. Why it is so? Because when you increase length of slice Sl while unmarshalling, you make available previous value in Slice2 and if you are not refilling fields of Slice2[0], they remain with the previous values. I hope i could explain this more clearly but the best way to understand this is just to make this test fail. This thing is really hard to understand.
Also i made this small example to demonstrate what is the bug about
`var pool = sync.Pool{New: func() any {
return &MainStruct{}
}}
type MainStruct struct {
SomeSliceWithPointers []*SomeStruct
}
type SomeStruct struct {
A int
B int
}
func main() {
example1 := &MainStruct{SomeSliceWithPointers: []*SomeStruct{{A: 1, B: 2}}}
// ResetVT
example1.SomeSliceWithPointers = example1.SomeSliceWithPointers[:0]
pool.Put(example1)

example2 := pool.Get().(*MainStruct)
example2.SomeSliceWithPointers = example2.SomeSliceWithPointers[:1]

example2.SomeSliceWithPointers[0].A = 10

// A == 10 because we overwritten this field BUT we still got example2.SomeSliceWithPointers[0].B == 2 from the previous request
// and we expected it to be default value 0
fmt.Println(example2.SomeSliceWithPointers[0])

}
`

@zcolleen I don't think your example is correct, because ResetVT should also be called on SomeStruct which would zero out the fields.
What would actually happen prior to this PR is:
func (m *MainStruct) ResetVT() {
    for _, mm := range m.SomeSliceWithPointers {
        mm.ResetVT() // resetting *SomeStruct
    }
    f0 := m.SomeSliceWithPointers[:0]
    m.Reset()
    m.SomeSliceWithPointers = f0
}

Ok I see the problem, this is for zero value they are not zeroed back again why don't we reset each value instead  ?
func (m *Test2) ResetVT() {
	for _, e := range m.Sl {
		e.Reset() // This should be ResetVT though
	}
	f0 := m.Sl[:0]
	m.Reset()
	m.Sl = f0
}

Definitively agree with you @npordash. But in the test ResetVT doesn't exist for Sl I wonder why ?

I think I see now.  The fix is to never re-use slice on struct member that are not poolable.

@npordash your sample would work as expected, but if you put back previous behavior you will see that it is only generated like this

may be we could add something like this https://github.com/planetscale/vtprotobuf/compare/main...zcolleen:vtprotobuf:main so if struct member is poolable too, we could go to previous behaviour but have to test this

I have something close where I still reuse, but correctly reset it. This is for your special edge case, where you have a mix of pool and non pool feature. I suggest you make every children poolable for better result.

yes, i think your approach is better