Create a new model for contact information and their list

Motivation

We are introducing a new feature "contact information". To save a set of informations like name, telephone number etc we need a new model.
Proposed Solution

Create a new model contact with following fields

Title (e.g. "Integrationsbeauftragte:r")*
Name*
POI*
E-mail address
Telephone number
Website
Arvhiced (default false)
Region? (see the comment below)

Fields with * are mandatory.
A POI is mandatory for every contact. Users have to select one from the POIs of the region or create a new one to save a contact.
E-Mail address, telephone number, website must be compatible (in the same data type) with those of POI model, as those fields can be taken over from the POI assigned to the contact (but we need those field in the contact model too, as they can be different from those of the POI if users wish).

Create a list template and view to show contacts
Respectively for not archived and archived contats, like events, POIs. Icons for archive, delete, restore can stand there without functionality (will be implemented in #2954).

Add some contact objects to the default data
To check the list is working fine. Creating some test data now, we can use them in later steps of implementation quickly.

Connect this list view to the menu item implemented in #2951 if it is done before this issue.

Alternatives

None. We do it.
User Story

Additional Context

Design Requirements

There is an design from UI/UX Team

[ Thoughts about the field region ]
We could add a field "region", it is but also possible to take "region" of the linked location, which is a mandatory input.
There are also some cases where one contact will be/is being used in multiple regions. Should it be rather "regions" as many to many field?

There are also some cases where one contact will be/is being used in multiple regions. Should it be rather "regions" as many to many field?

How would that work? Right now, as I understand it, a contact can only have one poi, so it could only be used in one region. Also, there is currently no way to add the same contact to multiple pois. Is that a problem?

Also, have we already decided about how to represent contacts that are embedded in pages? This seems nontrivial to me, tbh and could maybe influence how the model should be laid out.

There are also some cases where one contact will be/is being used in multiple regions. Should it be rather "regions" as many to many field?

How would that work? Right now, as I understand it, a contact can only have one poi, so it could only be used in one region. Also, there is currently no way to add the same contact to multiple pois. Is that a problem?

@osmers ?

I'm very confused by this region label :D what is the purpose of these if the CMS user does not input the data?
One contact can only belong to one POI - that is ok bcs we decided that even if the same person works in two different locations, he/she likely has different job descriptions, different adresses, contact details etc

@osmers The region is just implicit information, that's required for the system to place the contact correctly. This is not label/field that is going to be shown to the user. I hope that clarifies this a bit :)


Preserve order in hashmap-backed data

Closes #5
Looking at the toml source, it looks like Map is implemented with IndexMap to preserve order. Map<String, Value> implements the Serialize and Deserialize traits. My first thought would be to use this since it's already a pyproject-toml dependency and is public.
I don't believe other variants of Map implement the traits. So I'll open this as a draft and look into getting the rest of the data backed by Map or something similar.
Let me know if you'd like to do this differently. I'd think Value may introduce more change than originally expected.

I'd think Value may introduce more change than originally expected.

I think so too, maybe just use IndexMap, IMO the only benefit of using toml::map::Map is that it's underlaying implementation can be changed by the preserve_order feature of toml crate which we can also do by adding a similar feature gate.

IndexMap would need to implement:

ser::Serialize
de::Deserialize
IntoIterator
Clone
Debug
Indexing (i.e. map["key"])

Along with the Values of IndexMap.
Right now I've literally just pulled parts of toml's implementation adapted for Map<String, String> but we'd want implementations for

Map<String, Map<String, String>> (project.entry_points)
Map<String, Vec<String>> (project.optional_dependencies)

Without some enum similar to Value, would we just implement each variant individually?
Also

which we can also do by adding a similar feature gate

Do we want that here? Is that something pyproject-toml needs? That seems like a more generic requirement, but I'm happy to incorporate that if you'd like.

Doesn't it only require the following change?
diff --git a/Cargo.toml b/Cargo.toml
index 7f0e549..a607602 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,5 +12,6 @@ repository = "https://github.com/PyO3/pyproject-toml-rs.git"
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

 [dependencies]
+indexmap = { version = "1.9.2", features = ["serde-1"] }
 serde = { version = "1.0.125", features = ["derive"] }
 toml = { version = "0.7.0", default-features = false, features = ["parse"] }
diff --git a/src/lib.rs b/src/lib.rs
index 89f9902..29b3984 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,5 +1,5 @@
+use indexmap::IndexMap;
 use serde::{Deserialize, Serialize};
-use std::collections::HashMap;

 /// The `[build-system]` section of a pyproject.toml as specified in PEP 517
 #[derive(Serialize, Deserialize, Debug, Clone)]
@@ -52,17 +52,17 @@ pub struct Project {
     /// Trove classifiers which apply to the project
     pub classifiers: Option<Vec<String>>,
     /// A table of URLs where the key is the URL label and the value is the URL itself
-    pub urls: Option<HashMap<String, String>>,
+    pub urls: Option<IndexMap<String, String>>,
     /// Entry points
-    pub entry_points: Option<HashMap<String, HashMap<String, String>>>,
+    pub entry_points: Option<IndexMap<String, IndexMap<String, String>>>,
     /// Corresponds to the console_scripts group in the core metadata
-    pub scripts: Option<HashMap<String, String>>,
+    pub scripts: Option<IndexMap<String, String>>,
     /// Corresponds to the gui_scripts group in the core metadata
-    pub gui_scripts: Option<HashMap<String, String>>,
+    pub gui_scripts: Option<IndexMap<String, String>>,
     /// Project dependencies
     pub dependencies: Option<Vec<String>>,
     /// Optional dependencies
-    pub optional_dependencies: Option<HashMap<String, Vec<String>>>,
+    pub optional_dependencies: Option<IndexMap<String, Vec<String>>>,
     /// Specifies which fields listed by PEP 621 were intentionally unspecified
     /// so another tool can/will provide such metadata dynamically.
     pub dynamic: Option<Vec<String>>,

[lol])(https://docs.rs/indexmap/latest/indexmap/serde_seq/index.html) good call. ty


Embed US map

Unfinished, TODO:

Match designs (see below) -- namely the footer
Wrap in a link
Verify existing embeds work correctly

a few small TODOs but not sure I'll get them across the line , it works generally just needs:

updated footer
SocialLocationPreview needs to add an optional link behavior for when we embed

Is this expected to change our social share images for the homepage?  The share preview on the homepage is quite large now:

And if that's actually what we want, then the actual social share image page needs to be reworked to accomodate:
https://covid-projections-git-embed-us-map.covidactnow.vercel.app/internal/share-image

PTAL @mikelehen


Add min_issue to metadata

Closes https://github.com/cmu-delphi/delphi-epidata/issues/232
Summary:
Calculate and include min_issue in metadata.
Prerequisites:

[x] Unless it is a documentation hotfix it should be merged against the dev branch
[x] Branch is up-to-date with the branch to be merged with, i.e. dev
[ ] Build is successful
[x] Code is cleaned up and formatted

I know why that test is failing, and its related to a semi-bug that i thought i had documented already (but i apparently didn't).  We can work around it with a small change to the test -- i will show you tomorrow or monday.

The test failure stems from this issue i just created: https://github.com/cmu-delphi/delphi-epidata/issues/1427
You can fix this PR in the meantime by changing the way rows are created and inserted by the failing test...  Right now, it creates the rows by a list comprehension and then inserts them all at once.  I think that if you move the call to self._insert_rows() inside of one or both of those for loops, it should do the trick (🤞).

Changed that here. Based on the previous failure, I think that's the only spot that needs to change.


Thoughts on encoding XML entities

Expanding my test cases ...
One of the products I found has a name like Bestellerweiterung für E&F Umbau. This confuses the XML parser when I'm attaching the ZUGFeRD file to the PDF:
org.dom4j.DocumentException: Error on line 26 of document  : Referenz zu Entity "F" muss mit dem Begrenzungszeichen ";" enden.
	at org.dom4j.io.SAXReader.read(SAXReader.java:462)
	at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:286)
	at org.mustangproject.ZUGFeRD.ZUGFeRD2PullProvider.getXML(ZUGFeRD2PullProvider.java:143)
	at org.mustangproject.ZUGFeRD.ZUGFeRDExporter.PDFattachZugferdFile(ZUGFeRDExporter.java:375)

Is the user responsible for encoding the basic XML entities <, >, &, " and ' in the input? If so, the documentation should say so more loudly.
If we forced encoding in the ZUGFeRD*PullProvider, it would break the code of users who already encoded the strings in their code.
In the interest of streamlining the user experience : How about providing a helper like this one as, say, ZUGFeRDExporter.encode(string), and introducing it in the example on the website with a company name like "Eine GmbH & Co. KG"? That would be in step 14 in "Write a ZUGFeRD-PDF file".

no, that's a bug. I thought I had added a unit test with < but somehow that seemed to work. I added a unit test ZF2EdgeTest for this kind of cases but it does not yet fail, I guess it's soon time to merge ZUV (and integrate in the unit tests). The helper looks reasonable but it should automatically be called internally on all strings.
Despite this is clearly my fault because I still refuse to switch to JAXB for ZF2 (#87) despite it is already used for ZF1 (these kind of issues do not happen there):  I do still consider JAXB a big overhead.


Is this project abandoned?

No commits to the master branch since Jul 2, 2021.

Good questions there are also multiple pending PRs

https://github.com/wagoodman/dive/issues/553#issuecomment-2461854191


k3s: Error syncing job: rpc error: code = Unknown desc = database is locked

Production Environment:
K3s Version:
k3s:v1.21.4-k3s1
Node(s) CPU architecture, OS, and Version:
Linux ip-10-151-40-235.ec2.internal 5.4.188-104.359.amzn2.x86_64 #1 SMP Thu Apr 14 20:53:13 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Cluster Configuration:
Eks clusters having 4 spot nodes.
Describe the bug:
We noticed our workflows are failing due to database lock failure and found this to be happening due to k3s. Would be great if we get a solution.
Steps To Reproduce:
Not sure on how to reproduce this. Here, we are deploying our clusters via Loft (https://loft.sh/).
A virtual Kubernetes cluster in Loft is tied to a single namespace. The virtual cluster and hypervisor run within a single pod that consists of two parts:

A k3s instance which contains the Kubernetes control plane (API server, controller manager and etcd) for the virtual cluster
An instance of a virtual cluster hypervisor which is mainly responsible for syncing cluster resources between the k3s powered virtual cluster and the underlying host cluster. (Ref: https://loft.sh/docs/1.15/self-service/virtual-clusters)

Please find the k3s logs below:
E0812 10:58:56.903092       7 status.go:71] apiserver received an error that is not an metav1.Status: &errors.errorString{s:"http: Handler timeout"}: http: Handler timeout
time="2022-08-12T10:59:00.173157384Z" level=error msg="error in txn: context canceled"
E0812 11:00:01.772938       7 cronjob_controllerv2.go:154] error syncing CronJobController atlas/atlas-statsd-job, requeuing: Operation cannot be fulfilled on cronjobs.batch "atlas-statsd-job": the object has been modified; please apply your changes to the latest version and try again
E0812 11:00:06.640284       7 cronjob_controllerv2.go:154] error syncing CronJobController monitoring/prometheus-health-monitor, requeuing: Operation cannot be fulfilled on cronjobs.batch "prometheus-health-monitor": the object has been modified; please apply your changes to the latest version and try again
time="2022-08-12T11:00:46.209517234Z" level=error msg="error in txn: database is locked"
E0812 11:00:46.209711       7 status.go:71] apiserver received an error that is not an metav1.Status: &status.statusError{Code:2, Message:"database is locked", Details:[]*anypb.Any(nil), XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}: rpc error: code = Unknown desc = database is locked
E0812 11:03:57.679420       7 status.go:71] apiserver received an error that is not an metav1.Status: &errors.errorString{s:"http: Handler timeout"}: http: Handler timeout
time="2022-08-12T11:03:57.815170693Z" level=error msg="error in txn: context canceled"
time="2022-08-12T11:04:01.362475215Z" level=error msg="Compact failed: failed to compact to revision 48700823: database is locked"
E0812 11:10:00.129181       7 cronjob_controllerv2.go:154] error syncing CronJobController atlas/atlas-statsd-job, requeuing: Operation cannot be fulfilled on cronjobs.batch "atlas-statsd-job": the object has been modified; please apply your changes to the latest version and try again
E0812 11:15:00.143464       7 cronjob_controllerv2.go:154] error syncing CronJobController monitoring/prometheus-health-monitor, requeuing: Operation cannot be fulfilled on cronjobs.batch "prometheus-health-monitor": the object has been modified; please apply your changes to the latest version and try again
E0812 11:18:06.399401       7 status.go:71] apiserver received an error that is not an metav1.Status: &errors.errorString{s:"http: Handler timeout"}: http: Handler timeout
E0812 11:20:00.138191       7 cronjob_controllerv2.go:154] error syncing CronJobController atlas/atlas-statsd-job, requeuing: Operation cannot be fulfilled on cronjobs.batch "atlas-statsd-job": the object has been modified; please apply your changes to the latest version and try again
time="2022-08-12T11:29:01.370345967Z" level=error msg="Compact failed: failed to compact to revision 48724650: database is locked"
E0812 11:29:10.846344       7 status.go:71] apiserver received an error that is not an metav1.Status: &errors.errorString{s:"http: Handler timeout"}: http: Handler timeout
E0812 11:30:02.035306       7 cronjob_controllerv2.go:154] error syncing CronJobController atlas/atlas-statsd-job, requeuing: Operation cannot be fulfilled on cronjobs.batch "atlas-statsd-job": the object has been modified; please apply your changes to the latest version and try again
E0812 11:30:04.198513       7 cronjob_controllerv2.go:154] error syncing CronJobController monitoring/prometheus-health-monitor, requeuing: Operation cannot be fulfilled on cronjobs.batch "prometheus-health-monitor": the object has been modified; please apply your changes to the latest version and try again
time="2022-08-12T11:30:08.967942410Z" level=error msg="error in txn: database is locked"
E0812 11:30:08.968146       7 status.go:71] apiserver received an error that is not an metav1.Status: &status.statusError{Code:2, Message:"database is locked", Details:[]*anypb.Any(nil), XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}: rpc error: code = Unknown desc = database is locked
E0812 11:30:08.968653       7 job_controller.go:866] rpc error: code = Unknown desc = database is locked
I0812 11:30:08.968741       7 event.go:291] "Event occurred" object="monitoring/prometheus-health-monitor-27671730" kind="Job" apiVersion="batch/v1" type="Warning" reason="FailedCreate" message="Error creating: rpc error: code = Unknown desc = database is locked"
E0812 11:30:08.969184       7 job_controller.go:404] Error syncing job: rpc error: code = Unknown desc = database is locked

The "database is locked" error indicates that sqlite's locks are running into conflicts, which is not something that should happen unless something strange is going on.
What is the backing filesystem for the K3s container? The only time I've ever seen this is when using k3s with kine/sqlite on a backing filesystem with poor locking semantics - NFS in particular, or when trying to run multiple copies of K3s against the same local filesystem.

We are using file system as EBS volume and mounting it as pvc

What is the filesystem on the EBS volume, and what is the volume type (gp2, st1, so on)? Are you passing K3s any additional datastore options that might change the sqlite locking semantics?
Also, can you reproduce this on more recent versions of k3s? The 1.21 branch is end of life.

Filesystem on EBS Volume: ext4
Volume Type: gp2
Not using any additional datastore options for k3s.
You mean should we try upgrading to v1.24.3+k3s1 and test if this is happening?

I would give that a try, although I regularly run K3s on EC2 instances with gp2 volumes and don't have any issues, so I suspect perhaps something else is going on. Can you provide the full yaml output of the k3s pod spec you're using?

Reference: https://loft.sh/docs/getting-started/explore/virtual-clusters
We are using vcluster template and we use the k3s image in it. Do you want the yaml output of that? @brandond

Does that end up running k3s directly in a pod? If so then yes.

`❯ k get pod onboarding-test15-0 -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
kubernetes.io/psp: eks.privileged
labels:
app: vcluster
controller-revision-hash: onboarding-test15-5585689d4
release: onboarding-test15
statefulset.kubernetes.io/pod-name: onboarding-test15-0
name: onboarding-test15-0
namespace: vcluster-onboarding-test15
ownerReferences:

apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: StatefulSet
name: onboarding-test15
spec:
affinity: {}
containers:
args:

-c
/bin/k3s server --write-kubeconfig=/data/k3s-config/kube-config.yaml --data-dir=/data
--disable=traefik,servicelb,metrics-server,local-storage,coredns --disable-network-policy
--disable-agent --disable-cloud-controller --flannel-backend=none --disable-scheduler
--kube-controller-manager-arg=controllers=*,-nodeipam,-nodelifecycle,-persistentvolume-binder,-attachdetach,-persistentvolume-expander,-cloud-node-lifecycle
--kube-apiserver-arg=endpoint-reconciler-type=none --service-cidr=<IP_ADDRESS>/16
&& true
command:
/bin/sh
image: rancher/k3s:v1.24.3-k3s1
imagePullPolicy: IfNotPresent
name: vcluster
resources:
limits:
memory: "0"
requests:
cpu: 200m
memory: "0"
securityContext:
allowPrivilegeEscalation: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
mountPath: /data
name: data
mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-jfkns
readOnly: true

args:

--name=onboarding-test15
--service-account=vc-workload-onboarding-test15
--sync=serviceaccounts
--fake-persistent-volumes=false
--enable-storage-classes
--fake-nodes=false
--node-selector=TENANT-NAME=onboarding-test15
--disable-sync-resources=ingresses
--override-hosts-container-image=ghcr.io/atlanhq/alpine
image: loftsh/vcluster:0.10.1
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 60
httpGet:
path: /healthz
port: 8443
scheme: HTTPS
initialDelaySeconds: 60
periodSeconds: 2
successThreshold: 1
timeoutSeconds: 1
name: syncer
readinessProbe:
failureThreshold: 60
httpGet:
path: /readyz
port: 8443
scheme: HTTPS
periodSeconds: 2
successThreshold: 1
timeoutSeconds: 1
resources:
limits:
memory: "0"
requests:
cpu: 100m
memory: "0"
securityContext:
allowPrivilegeEscalation: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
mountPath: /manifests/coredns
name: coredns
readOnly: true
mountPath: /data
name: data
readOnly: true
mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-jfkns
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
hostname: onboarding-test15-0
imagePullSecrets:

name: secret-name
nodeName: <node-ipx.x.x.x.x>
nodeSelector:
TENANT-NAME: onboarding-test15
preemptionPolicy: PreemptLowerPriority
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: vc-onboarding-test15
serviceAccountName: vc-onboarding-test15
subdomain: onboarding-test15-headless
terminationGracePeriodSeconds: 10
tolerations:
effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
name: data
persistentVolumeClaim:
claimName: data-onboarding-test15-0
configMap:
defaultMode: 420
name: onboarding-test15-coredns
name: coredns
name: kube-api-access-jfkns
projected:
defaultMode: 420
sources:

serviceAccountToken:
expirationSeconds: 3607
path: token
configMap:
items:

key: ca.crt
path: ca.crt
name: kube-root-ca.crt

downwardAPI:
items:

fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
path: namespace`

Please find file attached.
vcluster-pod.txt

Can you show the volume/pvc for this?
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: data-onboarding-test15-0

`❯ k get pvc data-onboarding-test15-0 -o yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
volume.kubernetes.io/selected-node: <node-ip.xxxx>
finalizers:

kubernetes.io/pvc-protection
labels:
app: vcluster
release: onboarding-test15
name: data-onboarding-test15-0
namespace: vcluster-onboarding-test15
spec:
accessModes:
ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: gp2
volumeMode: Filesystem
volumeName: pvc-fdfa68be-0984-4f84-a484-abe45f1bb658
status:
accessModes:
ReadWriteOnce
capacity:
storage: 50Gi
phase: Bound`

Hmm, that all looks pretty standard. How much load are you putting on that vcluster? The way GP2 throughput provisioning works, at 50GB you're only guaranteed 150 IOPS; is it possible you're exceeding that and the disk itself is blocking? The cloudwatch metrics should be able to tell you that pretty quickly.

@brandond Have checked with Write throughput (Ops/s) for the affected EBS volumes, noticed it's exceeding the 150 IOPS and dropping, and if not it's almost on the edge of guranteed IOPS value. This could be the major reason causing this. What should we consider next as this does not allow to use custom IOPS with the type "gp2".

You have a cap on iops and you're exceeding it. I am not sure that there is anything to be done on the K3s side; you need to ensure that your storage is sufficient for the workload you're putting on it.
I would probably either change to one of the Provisioned IOPS volume types, or (if you are stuck on General Purpose volumes) over-provision the volume size such that the allocated IOPS meets your required throughput. See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/general-purpose.html#gp2-performance

I'm testing this currently by modifying the volume to "gp3" from "gp2" to have higher IOPS (ex: 3000) allocated and observing the behavior for the same.

@brandond I have taken IOPS as a sum of Write throughput from the metrics per duration as mentioned in above screenshot, is that correct way of calculating that?

Total disk IOPS would be the sum of all read and write ops. For disk types that support burstable iops, I think there's another metric for the volume credits that you might also look at. We're working at the edge of my knowledge of EC2 though; you might need to consult AWS support for better advice.


maybe use external vlc player and communicate with it

[ ] firstly, play with (external) vlc player via cli, and ensure it works well
[ ] secondly, integrate it into flutter app

experiment 0: let's send a "start/stop/seek" command to a running vlc player

https://wiki.videolan.org/DBus-usage/

https://wiki.videolan.org/Console/
or, use other methods to connect?

approaches to control vlc player

rc
dbus
telnet
ncurses

ref https://wiki.videolan.org/Console/
https://wiki.videolan.org/Console/

[TODO] how to get a stream of current playing position?

may do it later if have time


Improve Lighthouse performance

Update:
https://pagespeed.web.dev/report?url=https%3A%2F%2Fscreeningtool.geoplatform.gov%2Fen%2Fcejst%233%2F39.75%2F-94.6


Add thevallians university

Add thevallians university

You can notify by writting us a comment to @jmderueda
Thank you very much

@jmderueda Pull request merged. Thank you.


Current Findings to fix

[x] Title needs to be capitalized: The Royal Canine

[x] When a modal appears for photos, please have the ability for the black part to be clicked on/to exit, just like the exit icon.

[x] Finish GitHub pages deployment
I have updated you as admin to this repo. Let me know if that does not work for deploying to GitHub pages.
Don't forget to:

Delete your intial-setup branch
pull your changes on the dev branch
Create a new branch for these changes
Then work normally
This is typical for work.

ok got those changes made


Account for more edge cases in entrypoint scripts

Not sure what to do about --config, since that makes things a lot more complicated to handle properly, but this at least allows users to still specify things like --port and not break initdb.

Not sure what to do about the users with a config file that specifies ssl key files but then we turn off ssl through the flags for the short init part and mongo fails to start.
They can work around it by skipping the entrypoint, but lose the init user creation and chown.
$ docker run -d --user mongo --entrypoint mongod mongo:3.4 --config /path/to/mongo.conf

Yeah, I'm not sure either, especially since the config file is a really irritatingly structured YAML, hence # TODO what do to about "--config" ? :( in this PR :innocent: :disappointed:

(In other words, this is still better than what we've got now -- our alternative is to back out of the initdb behavior entirely, which is not great IMO)

I guess add a warning to the docs along with the new initialization variables and information.  We could also do versions that don't do initialization scripts or user creation?

Wouldn't that be easier to just add an environment variable for, or to show users how to use --entrypoint to skip our scripts entirely?


[SPARK-6635][SQL] DataFrame.withColumn should replace columns with identical column names

JIRA https://issues.apache.org/jira/browse/SPARK-6635

Test build #30413 has started for   PR 5541 at commit 72f35b1.

Test build #30413 has finished for   PR 5541 at commit 72f35b1.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

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

Test build #30469 has started for   PR 5541 at commit b539c7b.

Test build #30469 has finished for   PR 5541 at commit b539c7b.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

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

Thanks!  Merged to master.

This should probably be noted here: https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.DataFrame

Pull requests to improve documentation are always welcome :)


[Bug] Dark mode activated but white flash persist

Hi, when the dark mode is on, there is still a white flash happening when the keyboard appears on screen (and also when a page is loaded). I noticed that the problem is solved when I disable and then enable again the dark mode
Kiwi version: 101.0.4951.48
Phone: Redmi note 10 (although, I had also noticed that this problem happens in other phones)

Can confirm this (Android 9/OnePlus 5)

If you are still using Kiwi, check the latest v116 and feel free to reopen the issue if it persists.


Publish to Maven/Ivy repo

Related to https://github.com/Redmart/micro-service-template-java/issues/6

Closing this since the official plugin now includes our fork's changes and it's published in the official repos.


Can't add cfs:gridfs

Per the readme,  trying to add cfs:gridfs (although that package says deprecating the collection FS readme still says to use it). That is failing with:
=> Errors while adding packages:
While checking for<EMAIL_ADDRESS>error: No compatible binary build found for this package. Contact the
package author and ask them to publish it for your platform.

Turns out if you install cfs:autoform BEFORE cfs:base-packages, then try cfs:gridfs, it fails. Uninstalled all then did base 1st, grid 2nd and autoform 3rd and it all seems OK now.


Add support for raise_on_error driver argument

Currently, if RPC operation fails, Scrapli-netconf result attribute contains rpc-error content, failed attribute also set to true. When doing many operations in a sequence, need to check failed for each and every request.
It would be good to have a raise_on_error type of argument supported by NetconfDriver, so that Scrapli will raise and error if operation fails e.g.
from scrapli_netconf.driver import NetconfDriver

my_device = {
    "host": "<IP_ADDRESS>",
    "auth_username": "vrnetlab",
    "auth_password": "VR-netlab9",
    "auth_strict_key": False,
    "port": 830,
    "raise_on_error": True
}

conn = NetconfDriver(**my_device)

# current way of doing it:
try:
    r = conn.lock()
    if r.failed:
        raise RuntimeError(r.result)
    r = conn.discard()
    if r.failed:
        raise RuntimeError(r.result)
    r = conn.edit_config(config="...", target="candidate")
    if r.failed:
        raise RuntimeError(r.result)
    r = conn.validate()
    if r.failed:
        raise RuntimeError(r.result)
    r = conn.commit()
    if r.failed:
        raise RuntimeError(r.result)
    r = conn.unlock()
    if r.failed:
        raise RuntimeError(r.result)
except:
    "catch error and do something"

# desired way if raise_on_error will be supported
try:
    r = conn.lock()
    r = conn.discard()
    r = conn.edit_config(config="...", target="candidate")
    r = conn.validate()
    r = conn.commit()
    r = conn.unlock()
except:
    "catch error and do something"

in such a case wrapping all the operations in try/except block will be able to catch an error for any operation without the need to explicitly check failed status.
or support raise_on_error argument for operation e.g.
response = conn.get_config(source="running", raise_on_error=True)

Have you seen this? I wonder if that gets you at least half way to what you are after?
That plus something maybe like this:
ops = [
    partial(conn.lock)
    partial(conn.discard)
    ...
]

for op in ops:
    r = op()
    r.raise_for_status()

I don't think I love the idea of adding a rase on error kind of thing when there is already the raise for status method. I could maybe be convinced but maybe/hopefully raise for status + some partial magic gets you close to what you are looking for?

raise_for_status looks like what I need, but seems that is raises without adding information for the error, would it make sense to update it to something like this:
    def raise_for_status(self, error_message="") -> None:
        """
...
        """
        if self.failed:
            raise ScrapliCommandFailure(error_message)

notice the addition of error_message, so that parent program can do something like:
r = conn.lock()
r.raise_for_status(r.result)

Yeah I think that is a great idea -- especially in scrapli_netconf where we can actually have useful rpc errors reported. Will keep this open till I get around to it :) I should be able to get to it before the next release!

Hey @dmulyalin !
Check out #92 and lemme know what you think? I also realized that the response object already has a error_messages attribute (I totally forgot about this till looking at this just now!). Between the raise_for_status, the error_messages, and the new addition of the exception message in #92 I think/hope this looks good -- what do you think?
Carl

Looks great, thank you for investing your time into it.

Np, thanks for raising this and your help!


⚠ Bofrost.be has degraded performance

In ab65c3b, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2439 ms

Resolved: Bofrost.be performance has improved in 306e49a.


Question: getting error - No podspec found for React-Core in ../node_modules/react-native/React while doing pod install. I am using react-native version "0.61.0-rc.3" and react version 16.9.0. Can someone help with please? Thanks in advance.

🚨 The issue tracker is not for questions. 🚨
As it happens, support requests that are created as issues are likely to be closed. We want to make sure you are able to find the help you seek. Please take a look at the following resources.
Coding Questions
https://stackoverflow.com/questions/tagged/react-native
If you have a coding question related to React Native, it might be better suited for Stack Overflow. It's a great place to browse through frequent questions about using React Native, as well as ask for help with specific questions.
Talk to other React Native developers
https://www.reactiflux.com/
Reactiflux is an active community of React and React Native developers. If you are looking for immediate assistance or have a general question about React Native, the #react-native channel is a good place to start.
If you want to participate in casual discussions about the use of React Native, consider participating in one of the following forums:

Discord Community: https://discord.gg/0ZcbPKXt5bZjGY5n
Spectrum Chat: https://spectrum.chat/react-native
Facebook Group: https://www.facebook.com/groups/react.native.community

If you'd like to discuss topics related to the future of React Native, or would like to propose a new feature or change before sending a pull request, please check out the discussions and proposals repo:

https://github.com/react-native-community/discussions-and-proposals

For a full list of community resources, check out React Native's Community page at https://facebook.github.io/react-native/help.

@ankitsaini2015 did you fix it?

I have faced the same problem while upgrading to 0.61.1.
It appears that the Podspec was moved from:
pod 'React-Core', :path => '../node_modules/react-native/React'
to
 pod 'React-Core', :path => '../node_modules/react-native'
This is clearly indicated in the upgrade tool report. You might want to upgrade your Podfile manually.

I think you should use the react-native upgrade tool instead, i'll fix the Podfile automatically

Podspec changes in ios/Podfile : https://react-native-community.github.io/upgrade-helper/?from=0.60.6&to=0.61.4

Same Error on 0.59


No resource, method, or local variable named `existing_vpc' when delete security group

When I try to delete a security group:
aws_security_group "provisioning-vpc-security-group" do
action :delete
end
I get:
ERROR: aws_security_group[provisioning-vpc-security-group] (@recipe_files::/home/christine/test/provision/network_aws_delete.rb line 10) had an error: NameError: No resource, method, or local variable named existing_vpc' for Chef::Provider::AwsSecurityGroup ""'
I think that 'existing_vpc' should be 'existing_sg' here:
https://github.com/chef/chef-provisioning-aws/blob/master/lib/chef/provider/aws_security_group.rb#L35

Seeing this too, has the side affect that you can't then destroy your VPC due to the dependency.

I submitted pull request  https://github.com/chef/chef-provisioning-aws/pull/76

@Jimflip Does that mean the VPC cannot be :destroyed after this security group is destroyed?  I'm trying to understand which way the dependency goes.

I suspect @Jimflip means you can't destroy the VPC because the security group wasn't destroyed (you get an EC2 error message saying the VPC still has dependencies i.e. the security group). I had the same thing...

@christinedraper you are correct.


Setup consistently fails

setup.bat consistently fails to build wheels for NumPy. Windows 11, python 3.10.6. Can't get the error message, the file closes when it fails to install. I think it said something to do with lapack atlas files missing.
I apologize if this is not helpful or formatted incorrectly/in the wrong place, I don't really have any idea what I'm doing here, just noticed a bug/ incompatibility that completely breaks crispy.

Hello,
No problem, the issue could be windows 11, we didn't test on it.
What you can do is open a command prompt, navigate to the directory using cd and run the command
pip install -r requirements.txt
You'll have some logs that you can copy paste here or debug.

Some of the dependencies in requirements.txt seemed to be outdated, mainly NumPy and iPython

Yes we know.
Unfortunately they are necessaries for other libraries.
For example librosa requires numpy to not be above 1.3 if I remember correctly.
The problem is that we have a lot of dependencies that restrict our versions.
They are a few vulnerabilities in the current numpy and IPython and we plan on upgrading them as soon as the bottleneck from other libraries is released.

I keep getting an error: NumPy 1.21.0 may not yet support Python 3.10. I also keep seeing that I am "missing blas and lapack"

The program has been created with python 3.8.10
Seems like 3.10 has issues indeed https://pullanswer.com/questions/python-3-10-6-for-windows-x86-is-missing-installed-blas-lapack
I updated the release, you can try to download it again and change the python version to 3.8.10

Mine now works, I would recommend adding instructions on how to manually install the dependencies using pip if people are on the wrong version of python to the documentation. Thank you!

still not working was there a python update i missed?

This seems to be a totally different issue from reading the output log.
I would recommend double checking all the steps in the installation, you might have skipped one


Add test-output/ to .gitignore

This ignores the generated output of running scan against its example projects.

:+1: :see_no_evil:


DF-730 : width of links fix

Ticket URL: https://national-archives.atlassian.net/browse/DF-730
About these changes
Reducing the width of the 'Available now' link
How to check these changes
Perform a search, select 'Online records at The National Archives', check the width of the 'Available now' link
Before assigning to reviewer, please make sure you have

[x] Checked things thoroughly before handing over to reviewer.
[x] Checked PR title starts with ticket number as per project conventions to help us keep track of changes.
[x] Ensured that PR includes only commits relevant to the ticket.
[x] Waited for all CI jobs to pass before requesting a review.
[x] Added/updated tests and documentation where relevant.

Merging PR guidance
Follow docs\developer-guide\contributing.md
Deployment guidance
Follow docs\infra\environments.md

Do we have a design for this element? I can't seem to find an example on Figma and I think I'm probably looking in the wrong place!

Closing this as this work has already been done in another PR


Creating peering-sessions via API raises error

Environment

Python version:  3.5.3
Peering Manager version:  master

Steps to Reproduce
Send a POST request to the API endpoint /api/peering/internet-exchange-peering-sessions/ with the appropriate payload.
Example payload:
{
        "autonomous_system": {
            "asn": 0000
        },
        "internet_exchange": {
            "name": "name",
            "slug": "slug"
        },
        "ip_address": "<IP_ADDRESS>",
        "enabled": true,
        "is_route_server": false
}

Expected Behavior
If all required values are set the expected behavior would be a successful request.
Observed Behavior
API returns Primary key must be an integer for autonomous_system and internet_exchange.

Nevermind, this was a malformed request. You cannot specify the ASn in this request, you have to specify the id of the ASn that already exists within the peering-manager database. Maybe unclear documentation?

@VilhelmPrytz would you mind posting the working payload and script snippets.  Someone (waves hand) may find that information useful, and it would serve as good seeding for API usage documentation as it grows.

Sure thing!
So I thought peering-manager would automatically create the AS by defining it per my initial request. I also thought that I could define the slug of the IX I wanted to create the session for.
It turns out you have to create the AS before you perform this request, and that you have to know the ID of both the AS and the IX to add a session to them.
The ´autonomous_systemandinternet_exchange` have to be defined like this:
internet_exchange: 0,```

... where the numbers are the ID's of the ASN and IX respectively (IDs that they have within the peering-manager database).

You can retrieve information about a specific AS using the following endpoint `/api/peering/autonomous-systems?asn={{ asn }}` for example (`id`will be the first variable).


More descriptive error messages for unsupported features during model validation for MJX

When doing MJX validation of a model with a currently unsupported feature (e.g. cone="elliptic"), the error message could be made more descriptive. Currently, it returns NotImplementedError: {1} not implemented.

Fixed by e4a9f535a4fe05c2120ae9cd7afb17665f917e6b.

Thanks for the report @driesmarzougui ! This was pushed out


Feature request: timeout for click.confirm

My application, which uses click, locks some global resource, and uses click.confirm before proceeding with action. Sometimes something distracts a user, leaving the application at the prompt in some forgotten window and locking out other team members from performing actions on the resource. The confirmation cannot be moved outside the scope of the lock. It would be great to have a way to time-out the click.confirm. This could possibly be also useful for click.prompt as well but my specific use case only needs click.confirm.

There are plenty of solutions for adding timeouts to Python code. Is there something Click-specific that needs to happen here?

Could you recommend any specific one which would work well with click on all the supported platforms? To me, most generic time-out solutions I have seen seem to be somewhat hackish (use of signals or dedicated threads to asynchronously raise an exception in the thread to be interrupted on timeout). To me, a cleaner solution would be having a proper timeout support that would essentially boil down to an equivalent of select syscall with timeout on the tty fd (or similar for Windows).

Oh, and definitely click-specific would be some visualization of count-down of remaining time.

Those aren't hacks, those are necessary parts of handling blocking and cancelling input. And a countdown would be outside the scope of click. This would probably be better as a project-specific thing or a separate Click extension.


Converted all asserts to use LogFata

Current dependencies on/for this PR:

main

PR #10

PR #12

PR #11

PR #13

PR #14

PR #15

PR #16

PR #17

Current dependencies on/for this PR:

main

PR #10

PR #12

PR #11

PR #13

PR #14

PR #15

PR #16

PR #17

Current dependencies on/for this PR:

main

PR #10

PR #12

PR #11

PR #13

PR #14

PR #15

PR #16

PR #17

Current dependencies on/for this PR:

main

PR #10

PR #12

PR #11

PR #13

PR #14

PR #15

PR #16

PR #17


Add a Codacy badge to README.md

Codecov Report

Merging #22 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #22   +/-   ##
=======================================
  Coverage   16.37%   16.37%
=======================================
  Files           1        1
  Lines         116      116
=======================================
  Hits           19       19
  Misses         97       97

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 c020c4a...92ff4fa. Read the comment docs.

close, already added the badge manually.


Document useContext bailout strategy

This keeps coming up, might as well document it.

Yeah, meh.

(We can do a pass to clean them up all together if we care someday)


Column .shrink + .small/medium/large-# class behaviour

How to reproduce this bug:
I have a container with .column.small-12.shrink class
If there is a medium-expand class or large-expand why there is not a .medium-shrink or .large-shrink or there is and I don't know. Should it be like it is or is a bug?
What should happen:
The container should be shrunk for medium-up if I have a small-12 class
What happened instead:
It gets shrunk for small devices
Browser(s) and Device(s) tested on:
not the case
Test case link:
No pen for this - busy right now. Sorry :(

In my opinion .shink class should be:
.shrink:not(class^="small"):not(class^="medium"):not(class^="large")

A cell can also be made to shrink, by adding the .shrink or .[size]-shrink class. This means it will only take up the space its contents need.
https://foundation.zurb.com/sites/docs/xy-grid.html#auto-sizing


Both enableClientValidation and enableAjaxValidation are set to true

From https://github.com/yiisoft/yii2/blob/fcfcdbdc34d57af74b2eb3a5d6da5a03b3dd90b1/docs/guide/input-validation.md

When both enableClientValidation and enableAjaxValidation are set to true, AJAX validation request will be triggered only after the successful client validation.

But on empty basic app when
'enableAjaxValidation' => true,
'enableClientValidation' => true,

Ajax request will send always.
p.s rules
return [
            [
                [
                    'firstName',
                    'lastName',
                ],
                'required'
            ],
            ['zip', 'number'],
            [['confirmSpecs','], 'boolean'],
            [[''remarks'], 'safe'],
            ['email', 'email'],
            [
                [
                    'invoiceCompany',
                ],
                'required',
                'when' => function ($model) {
                    return $model->useInvoiceAddress;
                },
                'whenClient' => <<<JS
function (attribute, value) {
    return $('#$useInvoiceAddressID').prop('checked') === true;
}
JS
            ],

Verified on basic app with regular contact form without any custom rules. The only modification is form opening in contact.php:
<?php $form = ActiveForm::begin([
        'id' => 'contact-form',
        'enableClientValidation' => true,
        'enableAjaxValidation' => true,
]); ?>

Seems description isn't accurate. Indeed, AJAX request is only issued after successful client validation but since only one field is being validated at a time, the statement isn't about the whole form but about the field being validated.

By history after this commit https://github.com/yiisoft/yii2/commit/9eaa82e15dfeca9ce0588bf75b1c000cd189deec it started


Prisma migrate reset + seed fails for Planetscale

Bug description
Seed script fails after prisma migrate reset due the tables not existing as you query them.
Right now this can be circumvented by running prisma db push after your seed script fails then re-run your script but it ruins the flow of development.
How to reproduce

prisma migrate reset
seed script triggers
prisma fails The table (not available) does not exist in the current database.

Prisma information
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}
datasource db {
  provider = "mysql"
  url = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

model Video {
  id String @id
  lastUpdated DateTime @updatedAt
  name String
  viewCount String // Viewcount is string bc Youtube API returns string and I don't want to deal with BIGINTs
  thumbnail String
  playlist Playlist @relation(fields: [playlistId], references: [id])
  playlistId Int

  @@index([playlistId])
}

model Playlist {
  id Int @id @default(autoincrement())
  youtubeId String?
  name String
  createdAt DateTime
  thumbnail String
  type PLAYLIST_TYPE
  videos Video[]
}

enum PLAYLIST_TYPE {
  PLAYLIST
  CHANNEL
}

Environment & setup

OS:  Windows, Ubuntu (via WSL)
Database: Planetscale
Node.js version: 17.5.0

Prisma Version
prisma                  : 3.11.1
@prisma/client          : 3.11.1
Current platform        : debian-openssl-1.1.x
Query Engine (Node-API) : libquery-engine 1a2506facaf1a4727b7c26850735e88ec779dee9 (at<EMAIL_ADDRESS>Migration Engine        : migration-engine-cli 1a2506facaf1a4727b7c26850735e88ec779dee9 (at<EMAIL_ADDRESS>Introspection Engine    : introspection-core 1a2506facaf1a4727b7c26850735e88ec779dee9 (at<EMAIL_ADDRESS>Format Binary           : prisma-fmt 1a2506facaf1a4727b7c26850735e88ec779dee9 (at<EMAIL_ADDRESS>Default Engines Hash    : 1a2506facaf1a4727b7c26850735e88ec779dee9
Studio                  : 0.458.0
Preview Features        : referentialIntegrity

migrate reset is a command meant to be used in combination with a migrations folder with individual migrations. On PlanetScale you usually do not use that, but prisma db push, to migrate your changes. So reset is removing your information, but can not recreate it as it is missing the information what to do.

Yes after playing around I see that that's the current best practice for Planetscale. The problem then becomes when you are iterating on your schema or your seed script, how are you supposed to reset your DB to re-seed?

I went over a bunch of resources from Prisma and Planetscale and it looks like the best way is to use prisma db push --force-reset then prisma db seed independently. Is this correct?


Question: can vue-multiselect handle large (2000+ entries) lists?

Hey! Just a quick question.
Context: I'm working on an SPA using React at the moment, but Vue 2.0 looks very appealing and I'm thinking of switching while the app is still small enough. However, there is one input component that is critical for our application; you guessed it: multi-select.
Our users need to be able to quickly select multiple out of literally thousands of options. So type-to-find and autocomplete is crucial, and it needs to perform well with these huge lists. In React we're currently using react-virtualized-select with react-select-fast-filter-options.
Like I said, this is pretty much the only thing "binding" us to React at the moment, and since this isn't the most common use-case out there I can imagine if vue-multiselect isn't currently made to handle it, but maybe I'm lucky and it already works? In every other respect it looks like a perfect match for our needs.
Thanks, keep up the good work!
/Job

Hey @JobLeonard!
Vue 2.0 is really awesome! I too, would like to migrate the current app that I’m working on. Sadly it’s already quite large, so it’s hard to find the time for it.
Anyway, I’m not a big fan of the way react-virtualized-select handles those amounts of options. Sure, virtualization is cool, but it will probably only impress other developers. Even if it can handle thousands of options I believe that virtualization is completely unnecessary. I mean – who is going to scroll through all those options? The user experience doesn’t get better this way.
The key here is – like you said – effective filtering/searching, but this is something JavaScript does pretty well, even without such libraries like js-search (which is what react-select-fast-filter-options uses internally).
Knowing this, there is a simple solution for this problem, which is basically limiting the options that are displayed. Vue-multiselect 1.x already has the functionality for it, for example, setting :options-limit="200" will result in displaying only the first 200 options that match the search query. And that’s basically it.
I just made a quick test drive with the 2.0-beta version with 24300 options (world countries JSON times 100), :options-limit="300" and it works flawlessly using the internal filtering mechanism.
Also added the functionality to the 2.0-beta branch, as it was missing (thanks for bringing this subject!), it should be released today evening.
Additionally vue-multiselect also supports disabling the local search (:local-search="false" prop) and emitting the current search phrase with @search-change="searchHandler". This makes it further possible to provide your own search engine.
This is how the ajax example in the docs actually works.
You could, for example, return most likely to be correct options on top based on popularity or user’s previous searches. Or supporting more than just simple text search, for example, if you’re searching for movies you could do '#superhero +2010' to return only movies made after 2010, with the #superhero tag.
This would probably bring much better user experience than just the ability to scroll through 5k of options.
I hope this helps with the decision. :)
Useful links:
http://monterail.github.io/vue-multiselect/#ajax
http://monterail.github.io/vue-multiselect/#props

Alright, sounds like it should at least be worth a try! Thanks for the swift resosponse!

Let me know how it works for you and good luck! :)
The optionsLimit functionality should be on the 2.0 branch later today.

Published 2.0-beta.9 which includes the options-limit prop. The component is ready for you to test :)

Well, migration will take a while before I can actually get around to testing this, but I'll let you know if it works out :)


✨ Postgres Synchronization Backend from environment variable

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

Files with missing lines
Coverage Δ

grelmicro/errors.py
100.00% <100.00%> (ø)

grelmicro/logging/errors.py
100.00% <100.00%> (ø)

grelmicro/logging/loguru.py
100.00% <100.00%> (ø)

grelmicro/sync/errors.py
100.00% <100.00%> (ø)

grelmicro/sync/postgres.py
100.00% <100.00%> (ø)


[Event Request] Table 36 "Purchase Line" - procedure InitOutstanding - OnBeforeInitOutstanding

Please add an Event OnBeforeInitOutstanding in procedure InitOutstanding in Table 36 "Purchase Line"
procedure InitOutstanding()
    var
        IsHandled: Boolean; <-- NEW VAR
    begin
        IsHandled := false;
        OnBeforeInitOutstanding(Rec,IsHandled); <-- NEW EVENT
        If IsHandled then
            exit;

        if IsCreditDocType() then begin
            "Outstanding Quantity" := Quantity - "Return Qty. Shipped";
            "Outstanding Qty. (Base)" := "Quantity (Base)" - "Return Qty. Shipped (Base)";
            "Return Qty. Shipped Not Invd." := "Return Qty. Shipped" - "Quantity Invoiced";
            "Ret. Qty. Shpd Not Invd.(Base)" := "Return Qty. Shipped (Base)" - "Qty. Invoiced (Base)";
        end else begin
            "Outstanding Quantity" := Quantity - "Quantity Received";
            "Outstanding Qty. (Base)" := "Quantity (Base)" - "Qty. Received (Base)";
            "Qty. Rcd. Not Invoiced" := "Quantity Received" - "Quantity Invoiced";
            "Qty. Rcd. Not Invoiced (Base)" := "Qty. Received (Base)" - "Qty. Invoiced (Base)";
        end;

        OnAfterInitOutstandingQty(Rec, xRec);
        "Completely Received" := (Quantity <> 0) and ("Outstanding Quantity" = 0);
        OnInitOutstandingOnBeforeInitOutstandingAmount(Rec, xRec);
        InitOutstandingAmount();
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeInitOutstanding(var Rec: Record "Purchase Line"; var IsHandled: Boolean)
    begin
    end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 44362.


Feat: Rephrase for a more relaxed notification style, see #42

Removes the !!! shouting,
Removes unnecessary space usage,
Tries to to use Corectl instead of the corectl variant found here and there
Some rephrasing
Be nicer: Say please
Do not panic – we are dealing with developers (who do not read anyway) – when a VM goes down, then it goes dow
A little bit of grammar and such things here and there
Consolidates; Server is Off and Server is running into Server status: Off/Running
Replaces Active VMs: 0 with No Active VMs
… minor things

Hope you like it.

Puh … realized the wrong target branch (master) when I hit the "send" button. The target branch now is dev for a test run.

awesome,  thanks. will test it out next when i'm back from holiday:)


Azure Blob: Unable to access Metadata when listing blobs

Bug Report

import path of package in question, e.g. github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

require github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.2.0
require (
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.20.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.1 // indirect
github.com/stretchr/objx v0.2.0 // indirect
)

output of go version
go version go1.17.2 darwin/arm64

What happened?

I'm trying to list metadata associated with blobs, but it appears to be incorrectly handled in the SDK code so it always comes back empty.
To reproduce, upload some blobs with custom metadata like so:
	resp, err := bc.Upload(ctx, data.Reader(), &azblob.UploadBlockBlobOptions{
		Metadata: map[string]string{"Kopiamtime": "1577968240000000000"},
	})

Now when listing the blobs there are 2 sub-issues, one blocking the other:

Incorrect handlng of ContainerListBlobFlatSegmentOptions.Include:

My first attempt was to try:
bucket.ListBlobsFlat(&azblob.ContainerListBlobFlatSegmentOptions{
		Prefix: &prefixStr,
		Include: []azblob.ListBlobsIncludeItem{azblob.ListBlobsIncludeItemMetadata},
	})

but the server never returns any metadata. I read through the code and I think there's a bug generating the include query parameter and server silently ignores invalid value (bug in itself?), and to overcome it I have to add artificial square brackets, which makes it work partially - see below:
bucket.ListBlobsFlat(&azblob.ContainerListBlobFlatSegmentOptions{
		Prefix: &prefixStr,
		Include: []azblob.ListBlobsIncludeItem{"["+azblob.ListBlobsIncludeItemMetadata+"]"},
	})

Incorrect mapping of Metadata

After applying the workaround above, I get the following response from the server (there are 4 files in the bucket that match the prefix) - the response was captured using io.Copy(os.Stderr, resp.RawResponse.Body):
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ServiceEndpoint="https://kopiatesting.blob.core.windows.net/" ContainerName="kopia-testing">
    <Prefix>sastest-1639703094-ed1304df8b99da34-</Prefix>
    <Blobs>
        <Blob>
            <Name>sastest-1639703094-ed1304df8b99da34-abcdbbf4f0507d054ed5a80a5b65086f602b</Name>
            <Properties>
                <Creation-Time>Fri, 17 Dec 2021 01:04:55 GMT</Creation-Time>
                <Last-Modified>Fri, 17 Dec 2021 01:04:55 GMT</Last-Modified>
                <Etag>0x8D9C0F93CEC42AE</Etag>
                <Content-Length>0</Content-Length>
                <Content-Type>application/octet-stream</Content-Type>
                <Content-Encoding />
                <Content-Language />
                <Content-CRC64 />
                <Content-MD5>1B2M2Y8AsgTpgAmY7PhCfg==</Content-MD5>
                <Cache-Control />
                <Content-Disposition />
                <BlobType>BlockBlob</BlobType>
                <AccessTier>Hot</AccessTier>
                <AccessTierInferred>true</AccessTierInferred>
                <LeaseStatus>unlocked</LeaseStatus>
                <LeaseState>available</LeaseState>
                <ServerEncrypted>true</ServerEncrypted>
            </Properties>
            <Metadata>
                <Kopiamtime>1577968240000000000</Kopiamtime>
            </Metadata>
            <OrMetadata />
        </Blob>
        <Blob>
            <Name>sastest-1639703094-ed1304df8b99da34-abff4585856ebf0748fd989e1dd623a8963d</Name>
            <Properties>
                <Creation-Time>Fri, 17 Dec 2021 01:04:55 GMT</Creation-Time>
                <Last-Modified>Fri, 17 Dec 2021 01:04:55 GMT</Last-Modified>
                <Etag>0x8D9C0F93D28CE3A</Etag>
                <Content-Length>1000</Content-Length>
                <Content-Type>application/octet-stream</Content-Type>
                <Content-Encoding />
                <Content-Language />
                <Content-CRC64 />
                <Content-MD5>8INdvman6QsODoZHNU0MCw==</Content-MD5>
                <Cache-Control />
                <Content-Disposition />
                <BlobType>BlockBlob</BlobType>
                <AccessTier>Hot</AccessTier>
                <AccessTierInferred>true</AccessTierInferred>
                <LeaseStatus>unlocked</LeaseStatus>
                <LeaseState>available</LeaseState>
                <ServerEncrypted>true</ServerEncrypted>
            </Properties>
            <Metadata>
                <Kopiamtime>1577968240000000000</Kopiamtime>
            </Metadata>
            <OrMetadata />
        </Blob>
        <Blob>
            <Name>sastest-1639703094-ed1304df8b99da34-abgc3dca496d510f492c858a2df1eb824e62</Name>
            <Properties>
                <Creation-Time>Fri, 17 Dec 2021 01:04:55 GMT</Creation-Time>
                <Last-Modified>Fri, 17 Dec 2021 01:04:55 GMT</Last-Modified>
                <Etag>0x8D9C0F93D3F6062</Etag>
                <Content-Length>10000</Content-Length>
                <Content-Type>application/octet-stream</Content-Type>
                <Content-Encoding />
                <Content-Language />
                <Content-CRC64 />
                <Content-MD5>Gvp7eHd5/MlEV1brkD9viQ==</Content-MD5>
                <Cache-Control />
                <Content-Disposition />
                <BlobType>BlockBlob</BlobType>
                <AccessTier>Hot</AccessTier>
                <AccessTierInferred>true</AccessTierInferred>
                <LeaseStatus>unlocked</LeaseStatus>
                <LeaseState>available</LeaseState>
                <ServerEncrypted>true</ServerEncrypted>
            </Properties>
            <Metadata>
                <Kopiamtime>1577968240000000000</Kopiamtime>
            </Metadata>
            <OrMetadata />
        </Blob>
        <Blob>
            <Name>sastest-1639703094-ed1304df8b99da34-kopia.repository</Name>
            <Properties>
                <Creation-Time>Fri, 17 Dec 2021 01:04:55 GMT</Creation-Time>
                <Last-Modified>Fri, 17 Dec 2021 01:04:55 GMT</Last-Modified>
                <Etag>0x8D9C0F93D5640A2</Etag>
                <Content-Length>100</Content-Length>
                <Content-Type>application/octet-stream</Content-Type>
                <Content-Encoding />
                <Content-Language />
                <Content-CRC64 />
                <Content-MD5>S3ixhZH4sRD+KIqBPwIHFw==</Content-MD5>
                <Cache-Control />
                <Content-Disposition />
                <BlobType>BlockBlob</BlobType>
                <AccessTier>Hot</AccessTier>
                <AccessTierInferred>true</AccessTierInferred>
                <LeaseStatus>unlocked</LeaseStatus>
                <LeaseState>available</LeaseState>
                <ServerEncrypted>true</ServerEncrypted>
            </Properties>
            <Metadata>
                <Kopiamtime>1577968240000000000</Kopiamtime>
            </Metadata>
            <OrMetadata />
        </Blob>
        <Blob>
            <Name>sastest-1639703094-ed1304df8b99da34-zxce0e35630770c54668a8cfb4e414c6bf8f</Name>
            <Properties>
                <Creation-Time>Fri, 17 Dec 2021 01:04:55 GMT</Creation-Time>
                <Last-Modified>Fri, 17 Dec 2021 01:04:55 GMT</Last-Modified>
                <Etag>0x8D9C0F93D11C6F2</Etag>
                <Content-Length>1</Content-Length>
                <Content-Type>application/octet-stream</Content-Type>
                <Content-Encoding />
                <Content-Language />
                <Content-CRC64 />
                <Content-MD5>VaVACK0bpYmqIQ0mKcHfQQ==</Content-MD5>
                <Cache-Control />
                <Content-Disposition />
                <BlobType>BlockBlob</BlobType>
                <AccessTier>Hot</AccessTier>
                <AccessTierInferred>true</AccessTierInferred>
                <LeaseStatus>unlocked</LeaseStatus>
                <LeaseState>available</LeaseState>
                <ServerEncrypted>true</ServerEncrypted>
            </Properties>
            <Metadata>
                <Kopiamtime>1577968240000000000</Kopiamtime>
            </Metadata>
            <OrMetadata />
        </Blob>
    </Blobs>
    <NextMarker />
</EnumerationResults>

I was looking to retrieve metadata named Kopiamtime which shows up in the server response, but unfortunately cannot be read in Go code, because it.Metadata is always an empty map:
for _, it := range resp.Segment.BlobItems {
  fmt.Println(it.Metadata.AdditionalProperties)
}

This always prints map[].
I'm not an expert in Golang XML handling, but I think this mapping is to blame, probably because of extra nesting:
https://github.com/Azure/azure-sdk-for-go/blob/a330caebda630563b60b5006a5485daa68d1f75d/sdk/storage/azblob/zz_generated_models.go#L381
Also notice how the server returns OrMetadata but the code is mapping ObjectReplicationMetadata which is also incorrect.
BTW. Thanks for the library. I'm trying to use it in https://github.com/kopia/kopia - all other things are working fine, except this one issue which is currently blocking.
Is there a workaround that can be applied here? I was thinking of manually parsing the XML for the time being until this issue is resolved.

In case this helps anybody, here's a quick-and-dirty XML parsing workaround that works and allows me to read the one metadata I'm interested in:
		var enumerationResults struct {
			Blobs struct {
				Blob []struct {
					Name          string
					ContentLength int64
					LastModified  time.Time
					Metadata      struct {
						Kopiamtime string
					}
				}
			}
		}

		if err := xml.NewDecoder(resp.RawResponse.Body).Decode(&enumerationResults); err != nil {
			return errors.Wrap(err, "unable to decode response")
		}

I just came here to report the same issue. For example ContentMD5 property isn't returned from the List Response.
Here is a complete way to reproduce specifically for the ContentMD5 property:

package main

import (
	"context"
	"crypto/md5"
	"encoding/base64"
	"fmt"
	"os"

	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

func main() {
	cred, err := azblob.NewSharedKeyCredential(os.Getenv("AzureBlobStorageAccount"), os.Getenv("AzureBlobStorageAccessKey"))
	if err != nil {
		fmt.Printf("failed to create credential %v", err)
	}
	url := fmt.Sprintf("https://%s.blob.core.windows.net/%s", os.Getenv("AzureBlobStorageAccount"), os.Getenv("AzureBlobStorageContainer"))
	container, err := azblob.NewContainerClientWithSharedKey(url, cred, nil)
	if err != nil {
		fmt.Printf("failed to create container client %v", err)
	}
	blockBlob := container.NewBlockBlobClient("randomfile.txt")
	content := []byte("Hello World!")
	md5hash := md5.New()
	md5hash.Write(content)
	b64md5hash := base64.StdEncoding.EncodeToString(md5hash.Sum(nil))

	blockBlob.UploadBufferToBlockBlob(context.Background(), content, azblob.HighLevelUploadToBlockBlobOption{
		HTTPHeaders: &azblob.BlobHTTPHeaders{
			BlobContentMD5: []byte(b64md5hash),
		},
	})
	props, _ := blockBlob.GetProperties(context.Background(), nil)

	receivedB64md5hash := base64.StdEncoding.EncodeToString(props.ContentMD5)
	if b64md5hash != receivedB64md5hash {
		panic("MD5 hash mismatch")
	}
	fmt.Println("MD5 hash from GetProperties response verified")

	pager := container.ListBlobsFlat(nil)

	blobs := []*azblob.BlobItemInternal{}
	for pager.NextPage(context.Background()) {
		response := pager.PageResponse()
		blobs = append(blobs, response.ContainerListBlobFlatSegmentResult.Segment.BlobItems...)
	}

	for _, blob := range blobs {
		if *blob.Name == "randomfile.txt" {
			receivedListb64md5Hash := base64.StdEncoding.EncodeToString(blob.Properties.ContentMD5)

			// blob.Properties.ContentMD5 is nil
			// this seems to be an issue marshalling the response from the server, but in the List request only
			if b64md5hash != receivedListb64md5Hash {
				fmt.Println("MD5 hash from ListBlobsFlat response does not match")
				panic("MD5 hash mismatch")
			}
			break
		}
	}
}

@RickWinter @jhendrixMSFT FYI I am currently rewriting the Dapr Blob Storage Output Binding component to use the Track 2 SDK and I encountered this issue in my tests.
Until the List response contains all the properties I will not be able to certify this component as Stable as far as Dapr is concerned.

Thanks for the tip @jkowalski it seems the data type for Content MD5 is wrong also. I used your approach to make it work:
The following code depends on my code snippet from above.
var enumerationResults struct {
		Blobs struct {
			Blob []struct {
				Name       string `xml:"Name"`
				Properties struct {
					ContentMD5 string `xml:"Content-MD5"`
				}
			}
		}
	}

	for pager.NextPage(context.Background()) {
		response := pager.PageResponse()

		if err := xml.NewDecoder(response.RawResponse.Body).Decode(&enumerationResults); err != nil {
			panic(err)
		}

		for _, blob := range enumerationResults.Blobs.Blob {
			if blob.Name == "randomfile.txt" {
				receivedListb64md5Hash := blob.Properties.ContentMD5
				if b64md5hash != receivedListb64md5Hash {
					fmt.Println("MD5 hash from ListBlobsFlat response does not match")
					panic("MD5 hash mismatch")
				}
				fmt.Println("MD5 hash from ListBlobsFlat response verified")
				break
			}
		}

	}

Hello,
I have the same issue. Could you please review my fix:
--- azure-sdk-for-go/sdk/storage/azblob/zz_generated_models.go 2022-01-14 22:44:54.382333817 +0000
+++ azure-sdk-for-go/sdk/storage/azblob/zz_generated_models.go 2022-01-14 22:44:29.330518663 +0000
@@ -512,6 +512,9 @@
        b.DeletedTime = (*time.Time)(aux.DeletedTime)
        b.ExpiresOn = (*time.Time)(aux.ExpiresOn)
        b.LastModified = (*time.Time)(aux.LastModified)
+       if aux.ContentMD5 != nil {
+               b.ContentMD5 = *aux.ContentMD5
+       }
        return nil
 }

and the blob properties is:
Properties &{Etag:0xc000365250 LastModified:2022-01-14 22:23:04 +0000 GMT AccessTier:0xc0003652c0 AccessTierChangeTime:<nil> AccessTierInferred:0xc00021bacd ArchiveStatus:<nil> BlobSequenceNumber:<nil> BlobType:0xc0003652b0 CacheControl:0xc000365290 ContentDisposition:0xc0003652a0 ContentEncoding:0xc000365270 ContentLanguage:0xc000365280 ContentLength:0xc00021b9a8 ContentMD5:[106 88 100 47 79 70 48 57 47 115 105 66 88 83 68 51 83 87 65 109 51 65 61 61] ContentType:0xc000365260 CopyCompletionTime:<nil> CopyID:<nil> CopyProgress:<nil> CopySource:<nil> CopyStatus:<nil> CopyStatusDescription:<nil> CreationTime:2022-01-14 21:24:17 +0000 GMT CustomerProvidedKeySHA256:<nil> DeletedTime:<nil> DestinationSnapshot:<nil> EncryptionScope:<nil> ExpiresOn:<nil> IncrementalCopy:<nil> IsSealed:<nil> LeaseDuration:<nil> LeaseState:0xc0003652e0 LeaseStatus:0xc0003652d0 RehydratePriority:<nil> RemainingRetentionDays:<nil> ServerEncrypted:0xc00021bb59 TagCount:<nil>}

Thank you!

And of course we can decode base64 to []byte:
        if aux.ContentMD5 != nil {
                contentMD5, err := base64.StdEncoding.DecodeString(*aux.ContentMD5)
                if err != nil {
                        return err
                }
                b.ContentMD5 = contentMD5
        }

I'm encountering this issue as well. Had to apply @deiter's fix to a fork of mine in order to get Content-MD5 in properties response. How can the community best help in order to get this bug fixed?

Fixed in sdk/storage/azblob/v0.3.0

0.3.0 doesn't seem different in this regard than 0.2.0 to me

Are you able to reproduce this issue again @evenh ?
Here's a test which I added to make sure this issue isn't happening again. https://github.com/Azure/azure-sdk-for-go/blob/a616d27573e7bb97cf35994448013ff70c31843a/sdk/storage/azblob/zt_container_client_test.go#L1234

I see that I wasn't specific enough about mye use case. I'm specifically interested in the Content-MD5 property, which in my testing always is []. I've fixed it using @deiter's fix in https://github.com/evenh/azure-sdk-for-go/commit/5d716a1d24c2e4ede5543f73fd2270d2b462f59f for my own purposes.

This is a codegen issue, I've opened https://github.com/Azure/autorest.go/issues/774 to track it.
For now, @mohsha-msft can you fix this up manually?  I don't know how many locations we improperly unmarshal base-64 strings.

Thanks Joel. I'll keep track of this. I'll fix it manually for now. Do we have any transform to fix this?

Hey @jkowalski , @berndverst , @evenh , and @deiter,
azblob v0.4.0 is now publically available. I have fixed the issue here and here.
Please reach out and reopen the issue if it still persists.
Thanks a lot for your feedbacks!


User cannot register

Arizen version: 0.1.0-beta
Somebody from Slack cannot even register, see pic below:

Just a note: that was Windows OS

cannot reproduce in 8892b59171b355b0990ce6e3e21d6381b62967ee

Fixed in v1.0.0 for W7.
Thank you :+1:


Hard Fault in sdmmc_spi_read_cxd() due to sd_card.card_buffer alignment.

Describe the bug
Since a85ffa8, I reliably get a hard-fault in sdmmc_spi_read_cxd() when dereferencing &sd_card.card_buffer when it's cast to uint32_t * (line 221 below).
https://github.com/zephyrproject-rtos/zephyr/blob/38c918164217965c92b04f23ca894f926bc11219/subsys/sd/sd_ops.c#L195-L224
Note that sd_card.card_buffer is tagged for alignment using CONFIG_SDHC_BUFFER_ALIGNMENT, which defaults to 1, and is set to 4 in some instances...
https://github.com/zephyrproject-rtos/zephyr/blob/38c918164217965c92b04f23ca894f926bc11219/include/zephyr/sd/sd.h#L43-L70
It appears that this probably only worked by chance previously, with .card_buffer happening to fall on a 32-bit word boundary...
Peeling back the changes from my starting point of 38c9181 shows the change in size of the structure, and the offset to that member:

HEAD / 38c9181: sizeof(struct sd_card): 180,  __builtin_offsetof (struct sd_card, card_buffer): 113
after reverting a85ffa8: sizeof(struct sd_card): 176,  __builtin_offsetof (struct sd_card, card_buffer): 112
after also reverting b2172a9: sizeof(struct sd_card): 192,  __builtin_offsetof (struct sd_card, card_buffer): 128

I'm surprised an alignment of 1 is ever used, let alone the default (given that this is intended to be accessed as 32-bit values).
To Reproduce
See below.
Expected behavior
The SD card is accessible, and no hard fault presents
Impact
"Annoyance", and derailed development to chase down the bug... will likely be "showstopper" for those less experienced.
Logs and console output
PK: WEST_TOPDIR/zephyr/subsys/sd/sd_ops.c:222 sdmmc_spi_read_cxd(): sizeof(struct sd_card): 180,  __builtin_offsetof (struct sd_card, card_buffer): 113
PK: WEST_TOPDIR/zephyr/subsys/sd/sd_ops.c:224 sdmmc_spi_read_cxd(): i: 0,  &(cxd_be[i]): 0x20000161
PK: WEST_TOPDIR/zephyr/subsys/sd/sd_ops.c:225 sdmmc_spi_read_cxd(): i: 0,  ((uint8_t*)cxd_be)[i]: 0x74
[00:00:00.255,000] <err> os: ***** HARD FAULT *****
[00:00:00.255,000] <err> os: r0/a1:  0x2000035c  r1/a2:  0x0000001c  r2/a3:  0x00000000
[00:00:00.255,000] <err> os: r3/a4:  0x00007f17 r12/ip:  0x00000003 r14/lr:  0x00011dab
[00:00:00.255,000] <err> os:  xpsr:  0x81000000
[00:00:00.255,000] <err> os: Faulting instruction address (r15/pc): 0x00007f16
[00:00:00.256,000] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:00:00.256,000] <err> os: Current thread: 0x20001b60 (main)
[00:00:00.343,000] <err> os: Halting system

The fault above occurs inside sdmmc_spi_read_cxd(), while attempting to print (and thus dereference) cxd_be[i].
Environment (please complete the following information):

OS: Linux
Toolchain: zephyr-sdk-0.16.1 & arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi
Commit: 38c9181

Steps to Reproduce

Use an ATSAML21-XPRO, and connect an ATIO1-XPRO to the EXT1 header.
Place atsaml21_xpro.overlay (below) in .../zephyr/samples/subsys/fs/fs_sample/boards/
cmake -GNinja .../zephyr/samples/subsys/fs/fs_sample -D BOARD=atsaml21_xpro && ninja && ninja flash
Observe "hard fault" output (below)
Apply 0001-DEBUG-force-sd_card.card_buffer-alignment-to-4-bytes.patch
Rebuild, and observe "success" output (below)

atsaml21_xpro.overlay
#include <freq.h>

&sercom0 {
	status = "okay";
	cs-gpios = <&porta 5 GPIO_ACTIVE_LOW>;

	sdhc0: sdhc@0 {
		compatible = "zephyr,sdhc-spi-slot";
		reg = <0>;
		status = "okay";
		spi-max-frequency = <DT_FREQ_M(1)>;

		mmc {
			compatible = "zephyr,sdmmc-disk";
			status = "okay";
		};
	};
};

Hard Fault
*** Booting Zephyr OS build zephyr-v3.4.0-3659-g4b70723faafb ***
[00:00:00.041,000] <err> os: ***** HARD FAULT *****
[00:00:00.041,000] <err> os: r0/a1:  0x00000000  r1/a2:  0x00000000  r2/a3:  0x00000000
[00:00:00.041,000] <err> os: r3/a4:  0x00000001 r12/ip:  0x00000003 r14/lr:  0x0000662b
[00:00:00.041,000] <err> os:  xpsr:  0x01000000
[00:00:00.041,000] <err> os: Faulting instruction address (r15/pc): 0x000080ac
[00:00:00.041,000] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:00:00.041,000] <err> os: Current thread: 0x200007e8 (unknown)
[00:00:00.092,000] <err> os: Halting system

Disassembly
00008068 <sdmmc_spi_read_cxd>:
{
    8068:   b5f0        push    {r4, r5, r6, r7, lr}
    struct sdhc_data data = {0};
    806a:   2510        movs    r5, #16
{
    806c:   0004        movs    r4, r0
    806e:   b091        sub sp, #68 @ 0x44
    8070:   000f        movs    r7, r1
    8072:   0016        movs    r6, r2
    struct sdhc_command cmd = {0};
    8074:   2100        movs    r1, #0
    8076:   221c        movs    r2, #28
    8078:   a808        add r0, sp, #32
    807a:   f7ff fe7f   bl  7d7c <memset>
    struct sdhc_data data = {0};
    807e:   002a        movs    r2, r5
    8080:   2100        movs    r1, #0
    8082:   a801        add r0, sp, #4
    8084:   f7ff fe7a   bl  7d7c <memset>
    data.blocks = 1U;
    8088:   2201        movs    r2, #1
    cmd.response_type = SD_SPI_RSP_TYPE_R1;
    808a:   950d        str r5, [sp, #52]   @ 0x34
    data.block_size = 16;
    808c:   9502        str r5, [sp, #8]
    uint32_t *cxd_be = (uint32_t *)card->card_buffer;
    808e:   0025        movs    r5, r4
    cmd.timeout_ms = CONFIG_SD_CMD_TIMEOUT;
    8090:   23c8        movs    r3, #200    @ 0xc8
    ret = sdhc_request(card->sdhc, &cmd, &data);
    8092:   6820        ldr r0, [r4, #0]
    data.blocks = 1U;
    8094:   9203        str r2, [sp, #12]
    uint32_t *cxd_be = (uint32_t *)card->card_buffer;
    8096:   3571        adds    r5, #113    @ 0x71
    ret = sdhc_request(card->sdhc, &cmd, &data);
    8098:   aa01        add r2, sp, #4
    809a:   a907        add r1, sp, #28
    cmd.opcode = opcode;
    809c:   9707        str r7, [sp, #28]
    cmd.timeout_ms = CONFIG_SD_CMD_TIMEOUT;
    809e:   930f        str r3, [sp, #60]   @ 0x3c
    data.data = cxd_be;
    80a0:   9505        str r5, [sp, #20]
    data.timeout_ms = CONFIG_SD_CMD_TIMEOUT;
    80a2:   9306        str r3, [sp, #24]
    ret = sdhc_request(card->sdhc, &cmd, &data);
    80a4:   f7ff ffcc   bl  8040 <sdhc_request>
    for (i = 0; i < 4; i++) {
    80a8:   360c        adds    r6, #12
    80aa:   3481        adds    r4, #129    @ 0x81
        cxd[3 - i] = sys_be32_to_cpu(cxd_be[i]);
    80ac:   cd02        ldmia   r5!, {r1}
    for (i = 0; i < 4; i++) {
    80ae:   3e04        subs    r6, #4
    80b0:   ba09        rev r1, r1
        cxd[3 - i] = sys_be32_to_cpu(cxd_be[i]);
    80b2:   6071        str r1, [r6, #4]
    for (i = 0; i < 4; i++) {
    80b4:   42a5        cmp r5, r4
    80b6:   d1f9        bne.n   80ac <sdmmc_spi_read_cxd+0x44>
}
    80b8:   2000        movs    r0, #0
    80ba:   b011        add sp, #68 @ 0x44
    80bc:   bdf0        pop {r4, r5, r6, r7, pc}

Success!
*** Booting Zephyr OS build zephyr-v3.4.0-3659-g718aa882bde2 ***
[00:00:00.042,000] <inf> sd: Maximum SD clock is under 25MHz, using clock of 1000000Hz
[00:00:00.045,000] <inf> main: Block count 15523840
Sector size 512
Memory Size(MB) 7580
Disk mounted.

Listing dir /SD: ...
[FILE] TESTING.TXT (size = 0)
[FILE] HELLO.TXT (size = 0)

Ping @danieldegrasse

Hi @attie-argentum- thank you for narrowing this down. I think you are correct that the best way to fix this is to make the default 4. We can also add a BUILD_ASSERT in subsys/sd/sd.c to insure the value is always greater than 4.
If you're willing to submit a patch to fix this, I'd appreciate it, otherwise I'm happy to.

No worries!
Can you expand on the reasoning for having the alignment configurable?
I wonder if it would be better to just align the buffer to the machine's word-size and be done with it (i.e: sizeof(size_t), or something else if it's available in Zephyr).
I see ARCH_IRQ_VECTOR_TABLE_ALIGN and ARCH_SW_ISR_TABLE_ALIGN both use a default of 4, and aside from RSICV there are no overrides visible... so perhaps that's the way to go...?

Can you expand on the reasoning for having the alignment configurable?

Of course- this is intended to enable DMA support in SD host controller drivers. You can see in the card_write_blocks function that CONFIG_SDHC_BUFFER_ALIGNMENT is used to make sure any data buffer passed to the SD host controller is aligned. This can be used to enforce additional alignment requirements if a given DMA controller needs them


pod transcriber torchaudio version

[error] When I locally served the pod transcriber example, the current pip install torchaudio version gives error
ERROR: Could not find a version that satisfies the requirement torchaudio==0.12.1 (from versions: 2.0.0, 2.0.1, 2.0.2, 2.1.0)
ERROR: No matching distribution found for torchaudio==0.12.1

[fix] Fixed by changing "torchaudio==0.12.1" to "torchaudio==2.1.0" (latest version) in main.py, line 37
https://modal-labs--whisper-pod-transcriber-fastapi-app.modal.run/ is also down right now, not sure if that's related to this error or not.

Thanks for pointing this out! Updated example :)


Provide Documentation for send_email function

Hello,
I have been attempting to use the SendInBlue Node.js API however there is no JavaScript documentation on the send_email function (the only available documentation I found was in PHP).
I continue to receive a "Bad sender address syntax" despite trying many variations of the "from" field. Could you provide an example of how to format the "from" field when using send_email with Node.js?
Thanks,
Curtis

Hello Curtis,
Thank you for contacting us.
Our API documentation is available in 6 different languages, including Node.js.
Please refer Apidoc and click on Node.js code preference to check the sample for send_email function.
Regards,
Sendinblue Team


[BUG] {Couldnt install DepthAI requirements}

Describe the bug
I cant install DepthAI program for windows.
To Reproduce
Steps to reproduce the behavior:

Install DepthAI

Attach system log
I cant attach the .dat file but I also opened it and it was empty.

@Swazir9449
Can you post the output that is shown in the command line window once starting the DepthAI launcher?
Also, which version did you install and which version of Windows are you on?

@Swazir9449 are you behind a corporate network proxy and the proxy environment variables are not exposed globally?
Or can you check your VPN-connection if needed to use VPN?

i had this problem too i use Pihole on my network I am wondering ...


fix(drawer): make drawer items use the pointer cursor

drawer items in demo will now trigger the pointer cursor mode
closes #124

@griest024
Sorry, I didn't answer you yesterday: styles have to go to components/drawer/styles.scss to be available to drawer only distribution.
I have merged your branch and refactored
Thanks for the fix


CompletableFuture composition is expensive due to CompletionException.fillInStackTrace()

https://gist.github.com/trustin/52c5014a04331cf4c6a452e2cd6880b3 shows that CompletionException.fillInStackTrace() is taking 4-5% of samples.
CompletionException is instantiated when your callback is added to a child CompletableFuture of another future. See https://stackoverflow.com/questions/49230980/does-completionstage-always-wrap-exceptions-in-completionexception for more information.
Unfortunately, it is very hard to fix this problem because of the two reasons:
First, CompletableFuture.encodeThrowable(), which wraps an exception with a new CompletionException is a static package-local method that's not overridable.
// From OpenJDK 10
static AltResult encodeThrowable(Throwable x) {
    return new AltResult((x instanceof CompletionException) ? x :
                         new CompletionException(x));
}

Second, even if we extend CompletableFuture, we have no control over what CompletableFuture instance is returned when future is chained. This is possible since Java 9, but our minimum requirement is Java 8. And the first problem is still not solved.
OurCustomCompletableFuture f = ...;
// We can't make this return OurCustomCompletableFuture. It's always CompletableFuture.
CompletableFuture child = f.whenComplete(...);

There are a few options for fixing this.

Implement our own CompletionStage implementation similar to CompletableFuture.
Consider adopting Reactor Core again. Replacing StreamMessage with Flux would

offload us from stream-related optimization to some extent
enable easier integration with other projects that rely on Reactor Core, reducing the cost of building adapters, etc.
provide rich stream manipulation capability of Reactor Core to our users
.. at the cost of huge refactoring or at the risk of getting worse performance.
Previous discussion: https://github.com/line/armeria/issues/970

I was very surprised that the completion attached to the child receives a CompletionException wrapping the original Exception because that's totally different what I learnt from the javadoc.
Anyway I tried to find out the cases which a callback is added to a child CompletableFuture in the gRPC module, but I couldn't.
Instead I'm kind of suspicious of this.
In framer.writePayload(message) throws an Exception, but there's no catch so CompletionException wraps the thrown exception because it's executed in whenComplete().

Please ignore the comment above. I have tested several times to remove the CompletionExeption by catching exceptions in the callback but the result was same as usual :(

By the way, I found a case that using child CompletionFuture which is created from the root CompletionFuture by calling whenComplete() here.
Perhaps we can just do this.future = stopFuture; (not creating a new future.)


[Crash] Hovering over ANY heart aspect in REI crashes the game with an IndexOutOfBounds exception

Crash Report
Victus 0.1
Roughly Enough Items 6.0.279-alpha
FAPI 0.40.1
owo 2.2.4

Fixed in 0.1.1


Fix async void

Fixed several async void tests as at least a couple were intermittently failing in CI.
Avoid async void

Sorry @tim-wilde-nimble looks like a couple of the tests are failing.


Redirect to Home page on click of logo

Is your feature request related to a problem? Please describe.
Currently if we are on credits or login page, we need to click on the back button to go back to the home page.
Describe the solution you'd like
Redirect to home page on click of the logo.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

@BRAVO68WEB can i work on this issue?

Good take @akankshat05 Go ahead

@BRAVO68WEB can you add this under GSSoC22?


Arc: Add new command to show bookmarks

Description
Arc doesn't support bookmarks for now. Many times, I felt the requirement of saving some tabs that I won't be using frequently. I used to do these via chrome bookmark folders.
In this PR, I added a way to save any tab in the local storage of raycast. Users can show all the bookmarks and remove them using the action panel. I'm utilizing the existing Search Tab command to bookmark any tab.
Screencast
https://youtu.be/_Fgn-b-mQTg
Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

The issue with pinned/top tabs is that they are writable, which means if you play around with Tab and move to some other link, the original saved URL is lost. This frustrates me since I don't want to lose the original pinned URL.
I agree though that it can be confusing UX. The best solution will be if Arc opens up a new way of storing read-only links.
I'm not sure how much pin/unpin a tab will be useful. I prefer to move them using drag and drop.

Should we play around with naming? Instead of saying bookmarks, it can be just Saved Tabs or something..

Should we play around with naming? Instead of saying bookmarks, it can be just Saved Tabs or something..

That could work. I wonder if this should then be just part of the "Search Tabs" command? So you can save a tab and it will be another section?
I'm planning to add some preferences to sort and filter sections, which can then also cover your usecase. Just a heads up that I'm also adding a new command to search tabs, history, and suggestions in #4294.

Yeah... make sense. We can use filters to view the saved tabs instead of a whole command.


Adding support for run on detached setup with custom setup file:

1. Adding get cluster setup file path as argument and uptading test module
2. Adding use of this path to executioner

@eliran-stratoscale  please review
@rom-stratoscale @eliran-stratoscale @michaelk-stratoscale updated pyracktest pull request

@igal-stratoscale  please add a jira ticket number to the commit message

Shipit

shipit

@igal-stratoscale please add ticket number


Update metaconfig-core, ... to 0.9.11

Updates

com.geirsson:metaconfig-core
com.geirsson:metaconfig-typesafe-config

from 0.9.4 to 0.9.11.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.geirsson" } ]

labels: library-update, semver-patch

Superseded by #120.


Feat/issue 24 11ty static website

This PR complements PR #30 for the cli
Please note the eleventy workflow action has some temporary values in order to demonstrate functionality
I have added a super basic 11ty starter and config that can be edited, with new styles, liquid templates and plugins. But as is at the moment, the contents of the produced document are not configurable.
How it works:
When the eleventy workflow action runs, it copies the original generated markdown file in the gigsboat-eleventy-starter directory adding some basic yaml metadata. In this metadata we define the layout template file. This liquid template file already exists in the gigsboat-eleventy-starter directory which also contains some very basic styles. Then using that directory, the eleventy script generates an HTML in a docs directory from which we can automatically deploy to github pages if desired. The output directory is configurable through the .eleventy.js file if we don't want it to be docs.

Closing this as we will try to solve the issue with documentation instead

Closing this as we will try to solve the issue with documentation instead

@estherixz I like the idea of the HTML output (11ty or others) to be part of the gigs-template rather than the cli project.

After going through quite a 🐰 🕳  I realised I can probably just document the process of generating a static page without the need for any code changes. I will also try to propose changes to the template and you can decide what you prefer @lirantal. Sorry for the change in direction, I have just been trying to find the simplest way to do that and there are some very straight-forward options available after all.

I love the experimentation here, nothing to be sorry of.
How about you also ping Matteo Collina on that pull request to get his thoughts of what he'd like to see as an optimal developer experience for this feature? he was asking for it :-)


Support for 3rd-party simulator extensions

This change introduces a more robust system for supporting simulator extensions, making it possible to support third-party extensions (though such extensions must be approved by the team).
Summary of changes

New config section in targetconfig.json

Entries in the existing approvedRepoLib map have a new subsection called simx. This is used by both the client and the backend to specify and serve simulator extensions. See SimulatorExtensionConfig in localtypings/pxtarget.d.ts for specifics.

New config section in pxtarget.json

To support testing new or updated 3rd party simulator extensions before they go live, I've added a testSimulatorExtensions section to pxtarget.json. This allows simulator extensions to be configured in an upload target.

New URL parameter for local testing

To support local simulator extension development, I've added a new URL parameter called simxdev. Including this parameter will cause simulator extensions to be loaded from their configured devUrl (only applicable when serving the target locally).

pxt serve changes

Added a new optional parameter to pxt serve called backport. It takes a port number where the locally running backend is listening (typically 8080). This is used to proxy simulator extension requests to the locally running backend. Simulator extensions are not loadable through pxt serve directly due to the complexities of syncing the extension's repo/branch/commit sha. This approach was simpler, and it enabled simultaneous local testing of frontend and backend changes. It works in concert with a new backend setting called LOCAL_SIM_PORT, which I will document in the backend repo. I doubt anyone will ever need to use this :)

Test target: https://microbit.staging.pxt.io/app/6682aff4715e69b108f5b555a1949d807a7ca082-832f04f750
Test project (must import URL): https://makecode.microbit.org/_XHCbXc53mH5X


[Bug]: Existing git connected apps throws repository not found error while opening app for the first time

Is there an existing issue for this?

[X] I have searched the existing issues

Description

https://github.com/appsmithorg/appsmith/assets/80334441/f5e733b9-ade7-43ab-b31e-554ef021c538
Steps To Reproduce

Login to this https://ee-2119.dp.appsmith.com/
Open any git connected app
Observe error toast comes up

Public Sample App
No response
Environment
Production
Issue video log
No response
Version
Regression Deploy preview

This is because the promotion DP does not have EFS volume used in release env.


First dockerfile

This PR makes a first pass at a working Docker container for stdpipe.

Is there a reason for manually installing cfitsio, psfex, scamp etc? They are available in the repos

@karpov-sv good point, that helped a lot.


It would be nice if table.put() returned the preprocessed/serialized record which will be inserted.

My usecase: I'm adding some timestamps when serializing, and it would be nice to be able to return those from my API.
Should be a one-line change from what I can tell! :)

Actually, never mind! Realised that it returns the URL while reading the tests, which is good enough.
This should be updated in the docs, they say it returns Promise<void>.
https://github.com/beakerbrowser/webdb#tableputurl-record

Ah yes, thanks. Will fix now.

Docs updated. Closing!


Add support or separate backgroundColor and borderColor

It's possible to support backgroundColor which have separate opacity value than borderColor have?
I would like to have horizontal + vertical scope lines with opacity 1 + add background color to property which has opacity 0.2. My settings code is:
    "bracketPairColorizer.scopeLineCSS": [
        "backgroundColor : {color}; opacity: 0.15",
        "borderStyle : solid",
        "borderWidth : 1px",
        "borderColor : {color}; opacity: 1"
    ],

but I have borderColor + backgroundColor always in this same opacity. It's possible to separate it?

It is possible, I but requires code changes. I will look into it because this is a really cool effect with borderColor and scopeLine that I didn't even know about

I'll leave this open for now until I'm sure its working correctly

wow that was a poor release, should be working now for real in 1.0.53

It works perfect, thanks!

I had to roll-back the release as a dependency broke some global objects, hope to bring it back soon

OK. Please write comment here (or open this issue right now), when it will be available again. Thanks :)

and its back again

Is backgroundColor opacity of activeScopeCSS should work?

@Rasarts No, I have to add that separately