✨feat:Booklets page hero section #73

Description
Created the Booklets page hero section in respone to issue #73
Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change.
Reference the issue related to this PR as shown below. Every issue has it's own number you can find the issue numbers here.
Fixes # (issue) - Example: Fixes #10, #20 NOTE: GitHub issue numbers should be prefixed with # to aid with issue tracking.
Type of change
Please delete options that are not relevant.

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

Screenshot (optional)
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A
[ ] Test B

Test Configuration: (optional)

Firmware version:
Hardware:
Toolchain:
SDK:

Checklist

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

Good attempt closing this pr as it is already done, please pick another issue

Thanks for the feedback!
On Sat, 21 Oct 2023, 8:02 pm Japheth Nyaranga, @.***>
wrote:

Closed #247 https://github.com/italanta/elewa-website-html/pull/247.
—
Reply to this email directly, view it on GitHub
https://github.com/italanta/elewa-website-html/pull/247#event-10731733632,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A4FFFPJA77EUKFIQE54NFGDYAP54HAVCNFSM6AAAAAA5ZYEFZKVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJQG4ZTCNZTGM3DGMQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


[Storage] Fix #23262: az storage blob metadata: Add --lease-id back

Related command

az storage blob metadata show/update
Description

Fix #23262
--lease-id was missing during track2 migration for az storage blob metadata

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

Storage


R119 tests fixes

TAD-related updates for CUDA
Concat now uses pre-calculated TAD as well as all other kernels now.

Build triggered. sha1 is merged.

Build finished. No test results found.

Refer to this link for build results (access rights to CI server needed):
/job/nd4j_PR/277/


added new adobe version

this is my own PR, i added a new adobe dc reader version  AcroRdrDC2200320310_en_US.exe

@frankroj please verify this PR #11271 and merge it.

Thank you @RAJU2529 for the suggestion. However, this document is a walkthrough and the file name for the adobe file is just an example of the name of the file. It is not supposed to convey the latest version of adobe. I do not want to start getting into continuously updating this document with the name of the latest version of the adobe file, especially when the example file is from a 3rd party that Microsoft has no control over. I am therefore closing the PR without merging.


Apply some treatment over VP-tree code. Closes #33.

Use vector instead of pointer+size
Remove redundant checks

@iglesias could you please merge if it looks good to you?

Looking good!
What about stop treating this part as external after the changes as you mentioned? For me either way is fine. The modifications do not really change the behaviour of the code.

@iglesias yeah we should rename it at some point I guess (once we diverge seriously)


Add support for template id, language and vars

Added support for setting the template id, language interpretation, and variables.
Fixes #3

Hello,
Thank you for your contribution ;-)


Update Changelog

Hey Paolo,
I understand this is "only" an alpha release.
It starts to be hard to check what is changed form one release to another.
It could be possible to keep updated the CHANGELOG.md file?
:)
thanks!

@pbernasconi Maybe you could simply put a link to the releases at the beginning of CHANGELOG.md. That way you wouldn't have to update both, and people would easily be able to find them.


Issue creating a volume and mounting to a pod in GKE with Trident

Describe the bug
Following a fresh Trident installation and backend creation according to the NetApp Trident Backend Configuration, we had an issue with volume creation and mounting on the NetApp backend (CVO).
Despite the backend's successful creation, the expected volume still needs to be created on the backend. Instead, a "magic" volume appears mounted in the pod as the PVC, which is of "tmpfs" type rather than the anticipated shared volume from the NetApp backend.
The Trident operator, controller, and node pods fail to bind to the "ontap-nas" storage class and do not create a volume on the NetApp backend upon PV or PVC creation. Although the PV, PVC, and pod are successfully created, the NFS shared NetApp volume is not displayed in the pod.
Trident-controller pod logs show errors and warnings potentially related to this issue.
Environment
Provide accurate information about the environment to help us reproduce the issue.

Trident version: 23.10
Trident installation flags used:
Container runtime: containerd://1.6.18
Kubernetes version: v1.28.1
Kubernetes orchestrator: GKE v1.26.6-gke.1700
Kubernetes enabled feature gates:
OS: Container-Optimized OS from Google (Kernel Version: 5.15.107+)
NetApp backend types: CVO NetApp Release 9.14.0: Sun Jul 30 11:19:35 UTC 2023
Other:

To Reproduce
kubectl apply -f merged_manifests.yml -n trident
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nas-secret
type: Opaque
stringData:
  username: <redacted>
  password: <redacted>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-ontap-nas
spec:
  version: 1
  backendName: ontap-nas-backend
  storageDriverName: ontap-nas
  managementLIF: <redacted>
  dataLIF: <redacted>
  svm: <svm>
  credentials:
    name: backend-tbc-ontap-nas-secret
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontapnasudp
provisioner: csi.trident.netapp.io
mountOptions: ["rwx", "nfsvers=3", "proto=udp"]
parameters:
  backendType: "ontap-nas"
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-storage
  labels:
    type: local
spec:
  storageClassName: ontapnasudp
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/tmp/trident-test"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-storage
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: ontapnasudp
---
kind: Pod
apiVersion: v1
metadata:
  name: pv-pod
spec:
  volumes:
    - name: pv-storage
      persistentVolumeClaim:
       claimName: pvc-storage
  containers:
    - name: pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/tmp/trident-test"
          name: pv-storage

Expected behavior
Upon successful creation of the Trident backend, it is expected that a volume would be created on the NetApp backend (CVO) that corresponds to any PV or PVC created in the Kubernetes cluster. The Trident operator, controller, and node pods should bind to the "ontap-nas" storage class and initiate the volume creation on the backend.
Once the PV, PVC, and pod are created, the NFS shared NetApp volume should be mounted in the pod and be visible when inspecting the pod's volume details. Thus, the expected behavior is a seamless creation and mounting of NetApp volumes in the Kubernetes pods through the Trident operator.
 ~/repo/ kubectl get tridentbackendconfigs -n trident-helm
NAME                    BACKEND NAME        BACKEND UUID                           PHASE   STATUS
backend-tbc-ontap-nas   ontap-nas-backend   54168d75-18e7-46e9-8b1a-d50a467c6aab   Bound   Success
 ~/repo/ kubectl get tridentbackendconfigs -n trident-helm -o yaml
apiVersion: v1
items:
- apiVersion: trident.netapp.io/v1
  kind: TridentBackendConfig
  metadata:
    creationTimestamp: "2023-11-30T11:06:38Z"
    finalizers:
    - trident.netapp.io
    generation: 1
    name: backend-tbc-ontap-nas
    namespace: trident-helm
    resourceVersion: "548627922"
    uid: d32f26e6-b942-4243-a9d3-007b0786c10d
  spec:
    backendName: ontap-nas-backend
    credentials:
      name: backend-tbc-ontap-nas-secret
    dataLIF: <redacted>
    managementLIF: <redacted>
    storageDriverName: ontap-nas
    svm: <redacted>
    version: 1
  status:
    backendInfo:
      backendName: ontap-nas-backend
      backendUUID: 54168d75-18e7-46e9-8b1a-d50a467c6aab
    deletionPolicy: delete
    lastOperationStatus: Success
    message: Backend 'ontap-nas-backend' created
    phase: Bound
kind: List
metadata:
  resourceVersion: ""

Storage Class:
 ~/repo/ kubectl get sc ontapnasudp -o yaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"ontapnasudp"},"mountOptions":["rwx","nfsvers=3","proto=udp"],"parameters":{"backendType":"ontap-nas"},"provisioner":"csi.trident.netapp.io","volumeBindingMode":"Immediate"}
  creationTimestamp: "2023-11-30T12:32:00Z"
  name: ontapnasudp
  resourceVersion: "548675493"
  uid: 29728bf2-dd12-45ac-9111-abe15a6c25f2
mountOptions:
- rwx
- nfsvers=3
- proto=udp
parameters:
  backendType: ontap-nas
provisioner: csi.trident.netapp.io
reclaimPolicy: Delete
volumeBindingMode: Immediate

Physical Volume (PV)
~/repo/ kubectl get pv -n trident -o yaml pv-storage
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"PersistentVolume","metadata":{"annotations":{},"labels":{"type":"local"},"name":"pv-storage"},"spec":{"accessModes":["ReadWriteMany"],"capacity":{"storage":"10Gi"},"hostPath":{"path":"/tmp/trident-test"},"storageClassName":"ontapnasudp"}}
    pv.kubernetes.io/bound-by-controller: "yes"
  creationTimestamp: "2023-11-30T12:33:09Z"
  finalizers:
  - kubernetes.io/pv-protection
  labels:
    type: local
  name: pv-storage
  resourceVersion: "548676147"
  uid: 7519b4d8-8f29-4a09-bad8-412082192e20
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 10Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: pvc-storage
    namespace: trident
    resourceVersion: "548676145"
    uid: d2e363e4-79f4-4f79-bdb2-c4374e37e2ad
  hostPath:
    path: /tmp/trident-test
    type: ""
  persistentVolumeReclaimPolicy: Retain
  storageClassName: ontapnasudp
  volumeMode: Filesystem
status:
  phase: Bound

Physical VOlume Claim (PVC)
 ~/repo/ kubectl get pvc -n trident -o yaml pvc-storage
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"pvc-storage","namespace":"trident"},"spec":{"accessModes":["ReadWriteMany"],"resources":{"requests":{"storage":"10Gi"}},"storageClassName":"ontapnasudp"}}
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
  creationTimestamp: "2023-11-30T12:33:09Z"
  finalizers:
  - kubernetes.io/pvc-protection
  name: pvc-storage
  namespace: trident
  resourceVersion: "548676149"
  uid: d2e363e4-79f4-4f79-bdb2-c4374e37e2ad
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  storageClassName: ontapnasudp
  volumeMode: Filesystem
  volumeName: pv-storage
status:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 10Gi
  phase: Bound

the mount in pv-pod (the pod)
root@pv-pod:/# df -h | grep trid
tmpfs           3.9G  4.0K  3.9G   1% /tmp/trident-test

Additional context
We have errors, and some additional information from the trident-controller pod:
csi-attacher I1205 10:46:30.285060       1 connection.go:201] GRPC error: <nil>                                                                                csi-attacher I1205 10:47:30.287315       1 connection.go:201] GRPC error: <nil>                                                                                │
│ csi-attacher I1205 10:48:30.294277       1 connection.go:201] GRPC error: <nil>                                                                                │
│ trident-main time="2023-12-05T10:48:31Z" level=error msg="Trident-ACP version is empty." error="<nil>" logLayer=rest_frontend requestID=19bcda76-3268-4fa1-b7e1-6f2ae7ff0833 requestSource=REST work │
│ flow="core=version"
csi-attacher W1205 10:48:30.294433       1 csi_handler.go:173] Failed to repair volume handle  for driver pd.csi.storage.gke.io: node handle has wrong number of elements; got 1, wanted 6 or more   │
│ csi-attacher I1205 10:48:30.294442       1 csi_handler.go:740] Found NodeID <redacted> in CSINode <redacted>                           │
│ csi-attacher W1205 10:48:30.294461       1 csi_handler.go:173] Failed to repair volume handle  for driver pd.csi.storage.gke.io: node handle has wrong number of elements; got 1, wanted 6 or more   │
│ trident-main time="2023-12-05T10:48:31Z" level=debug msg="REST API call received." Duration="10.192µs" Method=GET RequestURL=/trident/v1/version Route=GetVersion logLayer=rest_frontend requestID=1 │
│ 9bcda76-3268-4fa1-b7e1-6f2ae7ff0833 requestSource=REST workflow="trident_rest=logger"                                                                                │
│ trident-main time="2023-12-05T10:48:31Z" level=debug msg="Getting Trident-ACP version." logLayer=rest_frontend requestID=19bcda76-3268-4fa1-b7e1-6f2ae7ff0833 requestSource=REST workflow="core=vers │
│ ion"                                                                                │
│ trident-main time="2023-12-05T10:48:31Z" level=warning msg="ACP is not enabled." logLayer=rest_frontend requestID=19bcda76-3268-4fa1-b7e1-6f2ae7ff0833 requestSource=REST workflow="core=version"    │
│ trident-main time="2023-12-05T10:48:31Z" level=error msg="Trident-ACP version is empty." error="<nil>" logLayer=rest_frontend requestID=19bcda76-3268-4fa1-b7e1-6f2ae7ff0833 requestSource=REST work │
│ flow="core=version"                                                                                │
│ trident-main time="2023-12-05T10:48:31Z" level=debug msg="REST API call complete." Duration="978.427µs" Method=GET RequestURL=/trident/v1/version Route=GetVersion StatusCode=200 logLayer=rest_fron │
│ tend requestID=19bcda76-3268-4fa1-b7e1-6f2ae7ff0833 requestSource=REST workflow="trident_rest=logger"                                                                                │
│ trident-main time="2023-12-05T10:48:37Z" level=debug msg="Node updated in cache." logLayer=csi_frontend name=<redacted> requestID=7a27627a-c480-446c-a35a-9addc41b169 │
│ 2 requestSource=Kubernetes workflow="node=update"                                                                                │
│ trident-main time="2023-12-05T10:48:37Z" level=debug msg="Node updated in cache." logLayer=csi_frontend name=<redacted> requestID=d33b8f54-6142-4e3d-bc0b-f9458a7c37e │
│ c requestSource=Kubernetes workflow="node=update"                                                                                │
│ trident-main time="2023-12-05T10:48:37Z" level=warning msg="K8S helper has no record of the updated storage class; instead it will try to create it." logLayer=csi_frontend name=ontapnasudp paramet │
│ ers="map[backendType:ontap-nas]" provisioner=csi.trident.netapp.io requestID=c2f7f1ba-2333-4d73-b142-ac072a9ef5fd requestSource=Kubernetes workflow="storage_class=update"                           │
│ trident-main time="2023-12-05T10:48:37Z" level=debug msg="Node updated in cache." logLayer=csi_frontend name=gke-e-infra-gke-e-infra-gke-b083af15-zn8s requestID=86a4ae35-eeb7-4340-a415-929d93b662c │
│ f requestSource=Kubernetes workflow="node=update"                                                                                │
│ trident-main time="2023-12-05T10:48:37Z" level=debug msg="Node updated in cache." logLayer=csi_frontend name=gke-e-infra-gke-e-infra-gke-88607822-luiw requestID=8ea3a1cc-0807-4ae3-893e-ddb8f4ed476 │
│ 6 requestSource=Kubernetes workflow="node=update"                                                                                │
│ trident-main time="2023-12-05T10:48:37Z" level=warning msg="K8S helper could not add a storage class: object is being deleted: tridentstorageclasses.trident.netapp.io "ontapnasudp" already exist │
│ s" logLayer=csi_frontend name=ontapnasudp parameters="map[backendType:ontap-nas]" provisioner=csi.trident.netapp.io requestID=c2f7f1ba-2333-4d73-b142-ac072a9ef5fd requestSource=Kubernetes workflow │
│ ="storage_class=update"                                                                                │
│ trident-main time="2023-12-05T10:48:49Z" level=debug msg="Node updated in cache." logLayer=csi_frontend name=<redacted> requestID=e3db19b3-4afd-441d-85dd-37022ed9831 │
│ b requestSource=Kubernetes workflow="node=update"

Just a few observations that might be helpful:

The YAML (merged_manifests.yml) defines a PV as well as a PVC. If you want to use dynamic provisioning, you only specify the PVC. The PV will be created by Trident once the volume is provisioned.
The PVC is bound to the manually provisioned PV (as indicated by the claimRef section of the PV). It was never provisioned by Trident.
You can also see that the PVC output does not match your YAML manifest (access mode and size are different) - this is not what was provisioned from the YAML manifest.

I suggest you create a new namespace (you would usually not provisioning anything but Trident itself into the Trident namespace). Then apply a proper YAML (e.g. without any manual PV) into that namespace and check the result.

@wonderland Thank you for the observations and the hints. As its getting late here, we'll revise the situation based on that tomorrow 👍
Much appreciated for your input!

It appears that we are only able to use TCP for communication between our test GKE cluster and the CVO.
As a result I've two questions, can I add them here, or shall I create new issues?
We see that the GKE cluster nodes are NFS "ready". However when trying to manually mount an NFS share from i.e. an Ubuntu pod it requires nfs-common and services nfsbind and rpc-statd running to do so.
root@ubuntu-v5:/# showmount -e [redacted]
Export list for <IP_ADDRESS>:
/                                                 (everyone)
/trident_pvc_2604074c_8aaa_4571_b225_81245cd221d0 (everyone)
/trident_pvc_2fa53c4e_c2ee_4c21_9601_81ab14a0922b (everyone)
etc...
manual mounting works with tcp, as a result I've create a storage class for tcp
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: andreas-tcp
provisioner: csi.trident.netapp.io
mountOptions: ["rwx", "nfsvers=3", "proto=tcp"]
parameters:
  backendType: "ontap-nas"

and the pvc shows up
 kubectl get pvc -n andreas

NAME          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-andreas   Bound    pvc-2fa53c4e-c2ee-4c21-9601-81ab14a0922b   1Gi        RWO            andreas-tcp    85s
[redacted]::> vol show -fields create-time -volume *922b

vserver            volume                                           create-time
------------------ ------------------------------------------------ ------------------------
[redacted] trident_pvc_2fa53c4e_c2ee_4c21_9601_81ab14a0922b Fri Dec 08 10:48:07 2023

however when trying to use PVC at POD creation with it ends up with a Exit status 32.
i.e.
Events:
  Type     Reason                  Age                   From                     Message
  ----     ------                  ----                  ----                     -------
  Normal   Scheduled               33m                   default-scheduler        Successfully assigned andreas/ubuntu-v5 to gke-e-infra-gke-e-infra-gke-88607822-luiw
  Normal   SuccessfulAttachVolume  33m                   attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-2fa53c4e-c2ee-4c21-9601-81ab14a0922b"
  Warning  FailedMount             17m (x2 over 28m)     kubelet                  Unable to attach or mount volumes: unmounted volumes=[pvc-andreas], unattached volumes=[kube-api-access-ns54g pvc-andreas]: timed out waiting for the condition
  Warning  FailedMount             10m (x8 over 30m)     kubelet                  Unable to attach or mount volumes: unmounted volumes=[pvc-andreas], unattached volumes=[pvc-andreas kube-api-access-ns54g]: timed out waiting for the condition
  Warning  FailedMount             2m18s (x23 over 32m)  kubelet                  MountVolume.SetUp failed for volume "pvc-2fa53c4e-c2ee-4c21-9601-81ab14a0922b" : rpc error: code = Internal desc = error mounting NFS volume
<IP_ADDRESS>:/trident_pvc_2fa53c4e_c2ee_4c21_9601_81ab14a0922b on mountpoint /var/lib/kubelet/pods/2c31700c-1bdc-49a5-a135-bff148115654/volumes/kubernetes.io~csi/pvc-2fa53c4e-c2ee-4c21-9601-81ab14a0922b/mount: exit status 32

I didn't expect I should add services to the POD, is that misunderstanding?
and
do you have other hints what to look for with the "exit status 32", because the export rules are open, and don't see more details what could hint on the cause of the inability to mount the PVC?

NFS would always run on TCP (UDP usage with NFS has been stopped decades ago). No need to specify it explicitly. Also, I've never seen the "rwx" NFS mount option, are you sure that is valid?
All storage access will always be at the node level. The mount is done by the worker node, then passed on to the container as a bind mount. Therefore no need to install any NFS packages inside the pod (though technically you could do that and access NFS in this way - but this is definitely not the K8s model for storage access!).
Unfortunately "exit status 32" is a pretty generic NFS error code. Usually something in the networking/connectivity area but hard to tell more from that code alone. You could SSH into the worker node and try to manually mount with verbose flags, that should give you more details. The output from the pod events gives you the full mount path (e.g.  [redacted]:/trident_pvc_2fa53c4e_c2ee_4c21_9601_81ab14a0922b) so something like
mount -vvv -o vers=3  [redacted]:/trident_pvc_2fa53c4e_c2ee_4c21_9601_81ab14a0922b /mnt/test

NFS would always run on TCP (UDP usage with NFS has been stopped decades ago). No need to specify it explicitly.

We started a couple of months with documentation of 19 and later with 21, i expect that we adopted initially proto=udp from the examples. But that got easily adjusted. (There's an example which I found through Google, but is fro the documentation used earlier, but reflects why we did use it https://github.com/NetApp/trident/blob/master/trident-installer/sample-input/storage-class-samples/storage-class-ontapnas-k8s1.8-mountoptions.yaml)

Also, I've never seen the "rwx" NFS mount option, are you sure that is valid?

Those options are documented i.e. here: https://github.com/NetAppDocs/trident/blob/main/trident-use/ontap-nas.adoc
and although the POD could only initialize and not actually boot, if you cofnigure with "rwo", starting a second POD which would also only initialize because of the issue dealing with NFS in our case, it actually "complaints" that the PVC is already in use by another POD; which I would say works well, it's with RWO only to be provisioned to one POD.

All storage access will always be at the node level. The mount is done by the worker node, then passed on to the container
as a bind mount. Therefore no need to install any NFS packages inside the pod (though technically you could do that and access NFS in this way - but this is definitely not the K8s model for storage access!).

This clarification is very helpful+ (at least to me) to get the picture better on how this fundamentally should work.
What we did see is that trident says: NFS check on the nodes. But but while verifying the GCP / GKE cluster details we see that next to the default "Container-Optimized OS (COS)" which we use, there's the options: like support for NFS 😨

and the cluster where we did do a test with filestore there were nfs csi drivers added to the COS.

Unfortunately "exit status 32" is a pretty generic NFS error code. Usually something in the networking/connectivity area but hard to tell more from that code alone. You could SSH into the worker node and try to manually mount with verbose flags, that should give you more details. The output from the pod events gives you the full mount path (e.g. [redacted]:/trident_pvc_2fa53c4e_c2ee_4c21_9601_81ab14a0922b) so something like

Unfortunately we don't have the option to ssh into the nodes because of COS. Because of this we found out the above where Ubuntu supplies the support for NFS, and probably has the ability that we can login to the nodes. We did want to do that today, but well, that went differently. We try to do this however soon.
Thanks for the quick response, and thanks for the valuable hints and thoughts @wonderland!

We've removed the "rwx":
mountOptions: ["rwx", "nfsvers=3", "proto=tcp"]

to
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: andreas-tcp
provisioner: csi.trident.netapp.io
mountOptions: ["nfsvers=3", "proto=tcp"]
parameters:
  backendType: "ontap-nas"

for some reason we got confused by how we (specifically I) did read and (mis)interpreted the rwx.
Now it proceeds building the POD and mounting the PVC and once on the shell we can see:
root@pv-pod:/usr/share/nginx/html# mount | grep nfs
[redacted]:/trident_pvc_9089df00_f6cd_470b_b1c1_5f37da50c6a0 on /usr/share/nginx/html type nfs (rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=[redacted],mountvers=3,mountport=635,mountproto=tcp,local_lock=none,addr=[redacted])

or
root@pv-pod:/usr/share/nginx/html# df  -h /usr/share/nginx/html
Filesystem                                                      Size  Used Avail Use% Mounted on
[redacted]:/trident_pvc_9089df00_f6cd_470b_b1c1_5f37da50c6a0  1.0G  320K  1.0G   1% /usr/share/nginx/html

Thank you once again, we're happy having the share connected 💯


Add gradle property to enable task execution logging

In 4.0, we want to only log "interesting" stuff and no longer include executed tasks by default.
Let us add a property to turn that back on, org.gradle.logging.tasks=true perhaps.
Expected Behavior
./gradlew baz -Dorg.gradle.logging.tasks=true
:fooTask UP-TO-DATE
Log messages here
:barSpec
:baz

BUILD SUCCESSFUL in 1s

Default Behavior
./gradlew baz -Dorg.gradle.logging.tasks=false
[:fooTask]
Log messages here

BUILD SUCCESSFUL in 1s

Context

What's the use case?

Sorry for the thin issue here. The use case is: I really want to see the all tasks that are executed by my gradle build just like Gradle 3.x.
I've gone ahead and expanded the description to make this more concrete.

Is this already affected by --console=plain?

I thought what we would do is switch from lifecycle to warning as the default level. Then we'd just need a switch to go back to lifecycle logging instead of a specific switch that only affects tasks.

@oehme I like the idea, but I fear the number of changes required to get everything we and others want displayed at the WARN level. To reduce risk, I think we might want to allow setting the logging level from Gradle properties so that users can default to LIFECYCLE level.
I like the idea a lot. It's would almost be considered a "light" debugging level. Hmm.

Why would you not use an existing way to explore what happens during a build, such as the various IDE integrations, a build scan, or the profile report?
I think less is more when it comes to adding command-line flag (which is what the title says to me). There should be a very strong benefit to justify a new flag.

I agree we should not implement a special flag here. I really like the idea of defaulting to WARN level. When I use this myself, logs magically become much more useful.

Closing as rejected


Even better DataType system

Can we rethinking DataTypeFrom. It should work with it's own SpectaID so NamedDataTypeExt could be required.
- DataTypeFrom should always use DataType::Map not DataType::Struct???
- Can this work. TupleType does have a SpectaID
- I think the types DataModelFrom creates should be proper types. Right now they are pseudo types. I would be curious if they show up in the type_map cause I don't think they will. Same with the duplicate name detector.
- Actually won't removing DataType::Enum kinda just break DataTypeFrom. It doesn't need DataType::Struct cause DataType::Map works for that.
Merge NamedDataType fields onto EnumType and StructType -> Maybe rename NamedDataType and put into fields module as a shared type.
NamedType trait should return pub enum StructOrEnum { Enum(EnumType), Struct(StructType) }
Extend DataTypeReference to hold inline field. We should allow #[specta(inline)] in post-processing step instead which will let us:
Drop DataType::Struct and DataType::Enum variants as everything will be referred to by DataType::Reference

Brain dump 25/12:
Lean on a reference system fully and try and:

[ ] Abstract inlining to the post-processing step instead of before DataTypeReference -> Will be good for #178
[ ] Then remove Reference as it will be redundant
[ ] Maybe abstract DataType::Struct and DataType::Enum???


[Question] How to change the height of FormBuilderTextField ?

How are you done this please @TENX-S ?


Add document contribution guide

Summary
Adds document contribution guide on CONTRIBUTING.md.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.SooKim1110 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


misc: fix 404 for snapshotter dockerfile

The github workflow frequently causes errors to break tests:
Step 4/18 : RUN export NYDUS_VERSION=$(curl --silent "https://api.github.com/repos/dragonflyoss/image-service/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")') &&     wget https://github.com/dragonflyoss/image-service/releases/download/$NYDUS_VERSION/nydus-static-$NYDUS_VERSION-linux-amd64.tgz &&     echo $NYDUS_VERSION > /.nydus_version &&     tar xzf nydus-static-$NYDUS_VERSION-linux-amd64.tgz &&     rm nydus-static-$NYDUS_VERSION-linux-amd64.tgz
 ---> Running in 39df2748e06d
Connecting to github.com (<IP_ADDRESS>:443)
wget: server returned error: HTTP/1.1 404 Not Found
The command '/bin/sh -c export NYDUS_VERSION=$(curl --silent "https://api.github.com/repos/dragonflyoss/image-service/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")') &&     wget https://github.com/dragonflyoss/image-service/releases/download/$NYDUS_VERSION/nydus-static-$NYDUS_VERSION-linux-amd64.tgz &&     echo $NYDUS_VERSION > /.nydus_version &&     tar xzf nydus-static-$NYDUS_VERSION-linux-amd64.tgz &&     rm nydus-static-$NYDUS_VERSION-linux-amd64.tgz' returned a non-zero code: 1

I guess the reason for this situation is the $NYDUS_VERSION is an invalid value.
This PR tries to verify it by adding an echo command.
Signed-off-by: Bin Tang<EMAIL_ADDRESS>

Yes, that is right. The version in a null value.
version:
Connecting to github.com (<IP_ADDRESS>:443)
wget: server returned error: HTTP/1.1 404 Not Found

This needs to support arm64

Do you mean that we should add a variable to control the architecture?
nydus-static-$NYDUS_VERSION-linux-$NYDUS_ARCHITECTURE.tgz

yes, add ARG TARGETARCH

This needs to support arm64

Do you mean that we should add a variable to control the architecture?
nydus-static-$NYDUS_VERSION-linux-$NYDUS_ARCHITECTURE.tgz

Yes, add add ARG TARGETARCH environment variable

Done. PTAL @fengshunli

Done. PTAL @fengshunli
Refer to ARG TARGETARCH way to achieve

refer to ARG TARGETARCH way to achieve

Fixed.

LGTM

It may be better to add a sleep 1 in one loop, because GitHub may limit the request frequency, retry immediately will continue to get a 403 error.

It may be better to add a sleep 1 in one loop, because GitHub may limit the request frequency, retry immediately will continue to get a 403 error.

Agree. It might because nydus-snapshotter is under Containerd org where a lot tests are running at the same time

NYDUS_VERSION

It may be better to add a sleep 1 in one loop, because GitHub may limit the request frequency, retry immediately will continue to get a 403 error.

Agree. It might be because nydus-snapshotter is under Containerd org where a lot of tests are running at the same time

Yes, if the user exceeded the limit, will get a 403 error, so the NYDUS_VERSION will be empty.
https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit

It seems that the ARG TARGETARCH not work. I will fix it later.

It seems that the ARG TARGETARCH not work. I will fix it later.

I didn't catch on specifying the target architecture in Dockerfile. Do we want a cross-platform build here? Who is specifying the docker build argument? I guess amd64 should meet the test requirements for now. In fact, nydus-snapshotter never releases platforms rather than amd64

It seems that the ARG TARGETARCH not work. I will fix it later.

I didn't catch on specifying the target architecture in Dockerfile. Do we want a cross-platform build here? Who is specifying the docker build argument? I guess amd64 should meet the test requirements for now. In fact, nydus-snapshotter never releases platforms rather than amd64

no need to specify, the base image supports multiple architectures and is directly compatible

It seems that the ARG TARGETARCH not work. I will fix it later.

It seems that the ARG TARGETARCH not work. I will fix it later.

I didn't catch on specifying the target architecture in Dockerfile. Do we want a cross-platform build here? Who is specifying the docker build argument? I guess amd64 should meet the test requirements for now. In fact, nydus-snapshotter never releases platforms rather than amd64

no need to specify, the base image supports multiple architectures and is directly compatible

Seems we need to enable buildkit to leverage the automatically defined build arguments.

It seems that the ARG TARGETARCH not work. I will fix it later.

It seems that the ARG TARGETARCH not work. I will fix it later.

I didn't catch on specifying the target architecture in Dockerfile. Do we want a cross-platform build here? Who is specifying the docker build argument? I guess amd64 should meet the test requirements for now. In fact, nydus-snapshotter never releases platforms rather than amd64

no need to specify, the base image supports multiple architectures and is directly compatible

Seems we need to enable buildkit to leverage the automatically defined build arguments.

Just change docker build to docker buildx build @sctb512 @changweige

Just change docker build to docker buildx build

It works. But maybe there is no need to use TARGETARCH. This will cause errors when the nydus-static-$NYDUS_VERSION-linux-$TARGETARCH.tgz is not exist. amd64 is enough for testing.

Just change docker build to docker buildx build

It works. But maybe there is no need to use TARGETARCH. This will cause errors when the nydus-static-$NYDUS_VERSION-linux-$TARGETARCH.tgz is not exist. amd64 is enough for testing.

You have to consider the situation of arm. If you develop on an arm machine, the amd architecture will report an error

Just change docker build to docker buildx build

It works. But maybe there is no need to use TARGETARCH. This will cause errors when the nydus-static-$NYDUS_VERSION-linux-$TARGETARCH.tgz is not exist. amd64 is enough for testing.

You have to consider the situation of arm. If you develop on an arm machine, the amd architecture will report an error

Yes, It is more reasonable to consider the situation of arm.  PTAL @fengshunli cc @liubin @changweige

Just change docker build to docker buildx build

It works. But maybe there is no need to use TARGETARCH. This will cause errors when the nydus-static-$NYDUS_VERSION-linux-$TARGETARCH.tgz is not exist. amd64 is enough for testing.

You have to consider the situation of arm. If you develop on an arm machine, the amd architecture will report an error

At present, k8s e2e test can only run on Github action, so we don't have to worry about it. Perhaps, we can raise another task to support multi-platform for snapshotter

Dockerfile with ARG TARGETARCH is more adaptable in multiple architectures. However, this Dockerfile is only for the E2E test. It is better to keep things simple. 😊
Maybe we could open a new PR to solve this requirement?

Codecov Report
Base: 31.55% // Head: 31.55% // No change to project coverage :thumbsup:

Coverage data is based on head (ae361f2) compared to base (744cf77).
 Consider uploading reports for the commit c3d0977 to get more accurate results

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #312   +/-   ##
=======================================
  Coverage   31.55%   31.55%
=======================================
  Files          34       34
  Lines        3578     3578
=======================================
  Hits         1129     1129
  Misses       2333     2333
  Partials      116      116

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Dockerfile with ARG TARGETARCH is more adaptable in multiple architectures. However, this Dockerfile is only for the E2E test. It is better to keep things simple. 😊 Maybe we could open a new PR to solve this requirement?

Agree.

Thanks for investigating this 👍


When will you release the code

Hi, thanks for sharing this wonderful work. I wonder when will you release the code.

I'm also curious, will you release the code soon?

I saw you had released the simple test code, thx for that. But could you please give us more information like requirement.txt, checkpoint, and steps to run this demo?

Eagerly awaiting the code. The results look super cool!

Stop teasing us man loll release the kraken!! 😊

Stop teasing us man loll release the kraken!! 😊

He's probably waiting for the paper to get confirmed for publication

The interesting truth is that I am trying to do some things and finding your work gives me hope of being able to achieve it because I am self-taught and the truth is that there are many things that I still need to understand well and I also hope that soon you can publish the code

they are not releasing iv'e seen some YT comments from author
Sorry that after discussion, we thought that the releasion of our model weights might cause negative effects to the society. We thus decide to release more video results on FF++ instead. On the other hand, If you try to reimplement our method, you might need a strong GPU.

hi @Seanseattle
still have a plan to release the training code and the dataset?


After updating to V10, .getFeaturesInExtent returns empty array

After updating Open Layers to version 10.1.0 I changed
layer?.getSource()?.getFeaturesInExtent(extent)
to layer?.getFeaturesInExtent(extent)
Before the update, it would return an array with RenderFeatures, whereas now it's returning an empty array. Below you will find the function where this is occuring for reference. Can't find out where this is going wrong. extent is an array filled with 4 coordinates, FE: [257371.85875,<PHONE_NUMBER>843749,<PHONE_NUMBER>5,<PHONE_NUMBER>843749]
    if (layer instanceof VectorTileLayer) {
      return (
        layer
          ?.getFeaturesInExtent(extent)
          ?.some(
            feature =>
              feature instanceof RenderFeature &&
              this.toGeometry(feature).intersectsExtent(extent) &&
              (documentIds.includes(feature.getProperties().identificatie) ||
                documentIds.includes(feature.getProperties().planid))
          ) ?? false
      );
    }
    return false;
  }

Thanks for your reaction.

This has been fixed already with #16190.

@ahocevar When will this be released?

When #16203 is reviewed and merged, otherwise we’d have a version with a severe tile layer rendering bug.


Add invite functionality

When viewing the list of students in a class, it should be possible to see who hasn't signed up yet, and click a button to send them and email telling them to sign up.

Seems unlikely that I would be allowed to build this functionality. Too much potential for spamming.


Add NeonHelper.WaitAll(IEnumerable)

This method should loop through the threads and call Thread.Join(), effectively waiting for all of the threads to terminate.
Let's also add a WaitAll(params Thread[] threads) override as well.

Implemented for neonLIBRARY-v2.8.0


How to install pip using the dev version?

HI there,
Like to install pip for the dev version.
I don't want to use docker.
Any help? Thanks.

You can install by run pip install -e git+https://github.com/long2ice/synch.git@dev#egg=synch

Or just install from pip install synch, which is latest.

I tried this
pip install synch
and got this error
Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-dXOXcr/synch/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-19ENRL-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-dXOXcr/synch/
I am using python 2.7.5

Tried this
pip install -e git+https://github.com/long2ice/synch.git@dev#egg=synch
and get this
`[root@localhost test]# pip install -e git+https://github.com/long2ice/synch.git@dev#egg=synch
Obtaining synch from git+https://github.com/long2ice/synch.git@dev#egg=synch
Cloning https://github.com/long2ice/synch.git (to dev) to ./src/synch
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 1, in
IOError: [Errno 2] No such file or directory: '/root/test/src/synch/setup.py'
----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /root/test/src/synch/`

synch doesn't support python2

I tried this in Centos 7 server
yum install -y python3
yum install postgresql-devel -y
pip3 install psycopg2-binary
pip3 install synch

But I get this, hmm...
    copying lib/_json.py -> build/lib.linux-x86_64-3.6/psycopg2
    copying lib/errors.py -> build/lib.linux-x86_64-3.6/psycopg2
    copying lib/compat.py -> build/lib.linux-x86_64-3.6/psycopg2
    running build_ext
    building 'psycopg2._psycopg' extension
    creating build/temp.linux-x86_64-3.6
    creating build/temp.linux-x86_64-3.6/psycopg
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DPSYCOPG_VERSION=2.8.5 (dt dec pq3 ext) -DPG_VERSION_NUM=90224 -I/usr/include/python3.6m -I. -I/usr/include -I/usr/include/pgsql/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.6/psycopg/psycopgmodule.o -Wdeclaration-after-statement
    In file included from psycopg/psycopgmodule.c:28:0:
    ./psycopg/psycopg.h:35:20: fatal error: Python.h: No such file or directory
     #include <Python.h>
                        ^
    compilation terminated.

    It appears you are missing some prerequisite to build the package from source.

    You may install a binary package by installing 'psycopg2-binary' from PyPI.
    If you want to install psycopg2 from source, please install the packages
    required for the build and try again.

    For further information please check the 'doc/src/install.rst' file (also at
    <https://www.psycopg.org/docs/install.html>).

    error: command 'gcc' failed with exit status 1

If I type gcc command
gcc: fatal error: no input files
compilation terminated.

Any idea? Thanks.

You can google Python.h: No such file or directory and you will get answer.

thanks, this works
yum install python3-devel


feat: NoteWithProof follow ups

We should make sure that if we import a note with proof, we either verify that it exists immediately or during the next sync.
Handle cases where the imported proof is invalid.

Based on the post by @bobbinth in https://github.com/0xPolygonMiden/miden-client/pull/449#discussion_r1722095139

I have some questions regarding this:

Should these two validations be made at the same time? i.e verifying the note's existance and the proof's validity at the same time
To verify if a note exists, should we use the GetNoteById endpoint? If so, then there wouldn't be a significant difference between NoteFile::NoteWithProof and NoteFile::NoteId

To verify if a note exists, should we use the GetNoteById endpoint? If so, then there wouldn't be a significant difference between NoteFile::NoteWithProof and NoteFile::NoteId

We could do this, but this could be more expensive than needed. This is because if we have the note inclusion proof, we only need to get the block inclusion proof (i.e., block header + MMR proof) to check if the note is in the chain. This is also good for privacy as we'd be asking the network for a block rather than a specific note.

Should these two validations be made at the same time? i.e verifying the note's existance and the proof's validity at the same time

Not sure I fully understand the question, but I think we can preform all validations at sync time. Basically, I'm imagining that we have a set of notes with note inclusion proofs but without the associated block inclusion proofs in the store. After we've synced to the chain tip, we'd get a list of these blocks and will request the node to send us MMR proofs for these blocks (via the GetBlockHeaderByNumber endpoint).
Once we get the headers and the associated proofs, we'd insert them into the store and also check if the note inclusion proofs match the block headers we got (e.g., we can verify the Merkle paths against the note_root of the relevant block header). If there is a mismatch, we should maker a note as "invalid" somehow and probably include it in the SyncSummary.
btw, I think we probably should refactor SyncSummary to contain the actual IDs of new notes, new nullifiers etc. (instead of just counts).

we should maker a note as "invalid" somehow and probably include it in the SyncSummary

What should be done with these invalid notes. Keep them tracked in the client but separated from the rest? (like what happens with ignored notes)

What should be done with these invalid notes. Keep them tracked in the client but separated from the rest? (like what happens with ignored notes)

Yes - but also I'm thinking we should allow users to delete such notes (via a separate function). More generally though, I wonder if we should refactor the input_notes table again to make sure we handle all possible note states holistically.

btw, I think we probably should refactor SyncSummary to contain the actual IDs of new notes, new nullifiers etc. (instead of just counts).

Created #512 for this

The logic for proof validation is addressed in #520 with the new InputNoteState::Invalid state


[client] Time not represented correctly in travel

I've set the donkey speed to 1km per second if you set config in dev mode


Remove version: Jackett.Jackett version 0.20.2291

404 - release deleted
Microsoft Reviewers: Open in CodeFlow

URL: https://github.com/Jackett/Jackett/releases/download/v0.20.2291/Jackett.Installer.Windows.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 918)


Add Adapters for modular extending through 3rd parties

Suggestion; implement kind of 'adapters' which are able took hook into notifications. Can be useful to connect to 3rd parties. This idea was brought internally and by #20.
Some ideas of adapters:

PusherAdapter
SocketIOAdapter
GoogleCMAdapter
FirebaseAdapter
WebhookAdapter
SlackAdapter
HipchatAdapter

(the idea of adapters can be seen like http://flysystem.thephpleague.com/)
If you want to join the realization of this implementation, feel free to hang into this issue!
Some points of discussion:

For sure we need to make use of a base adapter to create new adapters on
A cake bake command for adapters would be cute :)
Technically, the base adapter should listen to several events
What would be a standard Adapter class?

I think https://laravel.com/docs/5.3/notifications is a pretty good point to start. What do you think?
If we are supporting lots of different adapters and again if  we are planning to extend it in the future; I think these could be different plugins. So people could use whatever the adapter they want, configure it via configuration file and go. Notifier plugin could take which adapters to use from config and fire the related function from SlackAdapter (or similiar) plugin.

I think we can use some ideas from Laravel. I like the way how they do have separate classes for each notification.
I don't think every Adapter implementation should be a separate plugin. Why not adding all the implementations in this plugin? Much easier to use :)

@bobmulder
Also much easier to implement I guess but;
If we separate adapters from this plugin; people could create their own adapters for their own cases.

When we provide some default adapters, they are still able to create own providers right? How easy would it be to just add your credentials of Slack and get started? :)

Why wouldn't we create different plugins and add them as dependency though? :)
Nothing would change for the user.

Agree, but if nothing is changing for the user, why would we seperate it in multiple plugins? Every implementation of an Adapter will extend to an Adapter instance from this plugin ;)
Via PR's new Adapters can be added or modified, and you'll always be free to create your own adapters in your local app or personal plugin. However, I prefer to have all adapters - that makes sense - in this plugin :)

I sincerely do not share the same vision. Because for me, being able to give other developers to power up their own plugins by using a core plugin is a better way to go. Although PRs are a good way to go, there are tons of developers who won't comply with the standards this plugin uses.
Also, if this plugin reaches more and more people everyday; it could be nice to have some people updating just one of the adapters according to target change. Imagine that there are people always working with Firebase and they know about updates and Firebase specifications. Instead of getting a PR for whole plugin, getting PRs for just Firebase plugin would be a lot more modular I would say. Also, who knows there won't be someone creating a Smooch adapter for example following defined rules.
Yes, they can create their own personal plugins. But providing examples and giving opening adapters to communities -in my opinion- is a better approach. Of course, that's only what I think.

I like the way that AdMad handles this for social auth plugin. Provide some base adapters and then have another repository with many new adapters people can download and manually install. I don't see the point in having a seperate module for this as it seems like it should be a core feature to me.

Can you provide some urls @KaffineAddict?

My example would be this: https://github.com/CakeDC/users/blob/master/composer.json
check the "suggest" part. if you don't need an adapter, just don't require it. :)

https://github.com/ADmad/CakePHP-HybridAuth/blob/master/README.md

I like a hybrid of those two solutions. AdMad includes some good basic ones so the core interface and the most common templates and then I really like the requiring other templates.
Actually I am really sold on doing it this way.
Everything including cake notifications should technically run through the adapter pattern so include he core interface and a cake db adapter by default and require a repository for the others. Then if people make an adapter we don't care about they can do all the support and we can streamline how they get installed

Am I right you want to create some 'basic' first adapters we include by default, and support 'community based' adapters? For the 'community based' adapters, I would like to keep them hosted on our organisation itself... Sounds good anyway!

I would do this the built in functionality for cake notifications should be converted to an adapter if possible.
A base set of adapters should be created as seperate repositories like bakkerij/notifier-slack this way they can be more modular and support including their own API/Library with it including a ton of bloat in the base notifier

Would that cause an overall change in architecture? @KaffineAddict ?

@suhaboncukcu I would imagine so. It would definitely be a new major version I would think.

I would do this the built in functionality for cake notifications should be converted to an adapter if possible.

Can you explain this to me @KaffineAddict?
@suhaboncukcu mentioned the Laravel example of notifications before... It gave me the following idea to create classes to create notifications (so a notification will be a class). Would that help us working with adapters?

Sorry it took so long to respond basically what I would say is this. There should be an adapter class and then an engine that receives an event and processes it. It should not care what the adapter is it should always do the same thing. Lets say those methods are Convert Data->Process Data->Report or something like that. If that is the case then we should add the built in "normal" base or whatever you want to call it functionality as an adapter too.
Right now the plugin does something and saves to the database and then pulls from the database etc. This base/built in functionality should be converted to an adapter with the same Convert->process->report methods.

Sounds good to me! So there would be an DatabaseAdapter as well...
Side note (I don't want to start new discussions :$) but what if we would make this idea PHP-wide and not CakePHP specific? We could make an CakePHP implementation beside that...
Beside your example of convert, process and report, we could say we have a producer and consumer...  The producer part should be extended by making notifications though a class (like the Laravel example). Multiple consumers can be attached to the notification. As well we need a 'processor' you noticed @KaffineAddict...
In this case the structure of the plugin would change that much it wouldn't be an 1.3 update, but 2.x (major), agree?

@bobmulder  although a php package sounds tempting, I think keeping this as a CakePHP plugin has it's own advantages.
a quick list what comes in my mind;

should be much faster to code with model conventions
should be much easier to create new adapters with CakePHP conventions
I think it would be more developer friendly if we also provide and document events, behaviors, etc. to use.

I might be thinking about my own cases though. Shame on me :)

No problem you think about your own cases @suhaboncukcu. I was thinking; if we can make this PHP-wide, we create a bigger user-base so more people who would help improve the code. That means it would be less work for us and better and more secure code :)
However, I agree with your list. Beside that I could come up with arguments against it like when we're using interfaces we can rely on CakePHP for ourselves, but give the freedom for other frameworks and ORM's.


difference between training and inference

hi, this is NO aggregation for current frame when training. but when testing, there is aggregation for current frame. how to understand this design? thank you.

Actually, current frame can be randomly sampled in the training process, when this occurs, there is an aggregation for current frame.

"current frame can be randomly sampled in the training process.". Is this in the current code? if is, where can I find it? thank you.

you can find it in the function "get_triple_image" (in lib/utils/image.py)

but function  "get_triple_image" is not used in project. and in 'train_end2end.py', aggregation is done for 2N frames( no current frame), but 2N+1 frames( including current frame) when testing. can you explain more? thank you.

For the former question "get_triple_image is not used":
In the training process, we load training data in function "AnchorLoader"(in fgfa_rfcn/train_end2end.py),  in function "AnchorLoader" (in fgfa_rfcn/core/loader.py), we use function "self.get_batch_individual()" to fill in provide_data and provide_label. Then in the  349^th line  of  function "self.get_batch_individual" , we refer to function "self.parfetch", in function "parfetch"(in fgfa_rfcn/core/loader.py line 357) we jump to function "get_rpn_triple_batch" (in lib/rpn/rpn.py line 102), there is the function "get_triple_image" . In that function, current frame can be randomly sampled.
For the latter question "no current frame is used in training process":
The current frame can be randomly sampled according to function "get_triple_image". :)

Thank for your answer. Now I have another question since I am not familiar with MXNet. The training network has three part inputs: data, data_before and data_after. But the batchsize is 2 when training, it even can not contain 3 frames. Is there a mechanism to train a part of network in MXNet? thank you.

Actually, in the training process, one batch only deal with the current frame (the other two frames for reference), the detail can be referred from paper https://arxiv.org/abs/1703.10025 In other words, the composition of those three frames shall be handled in one batch.

You means that 1 batch contains three frames, and it contains six frames when batchsize is 2 ?

@zhengzhugithub For training strategy, please refer to our paper. We use 4 GPUs during training, with each GPU holding one mini-batch. Loss function is applied on Eq.3. During training, temporal dropout was applied to avoid out-of-memory, i.e. we randomly sample 2 frames for feature aggregation.

@zhengzhugithub Also you can refer to Table. 3 in our paper, which validated our temporal dropout trick, i.e. randomly sample 2 frames for training is enough.

@einsiedler0408 When there is only 1 GPUs, one mini-batch only contains 2 frames. But the training network needs 3 frames at least, how to deal with it? thank you

@zhengzhugithub Please refer to Eq.2 and Eq.4 in our paper. The adaptive weight f_(j->i)  for aggregated f_i is proportional to cosine(f_(j->i)^e, f_i^e).

@zhengzhugithub So the answer is that we do not need three frames during training, but we need f_i (features from the current frame) to compute the adaptive weight.

thank you. problem sovled.


Keystone (V2): Generate Service Catalog

Keystone v2 Model can authenticate users, with user info and role info (if available). But it skips the Service Catalog generation.

[x]  register services into the Keystone model
[ ]  enable generation of StackInABox capable URLs

Have a branch where the Service Catalog and the endpoint information can be added to the database. PR not up yet b/c I need to add more tests.


implement retry with backoff for BUSY on HederaCall.execute[Async]()

closes #231

Transaction.execute() and Transaction.executeAsync() (and same methods on TransactionBuilder will retry if they get BUSY until the validDuration of the transaction elapses
TransactionReceiptQuery (and thus Transactinon.queryReceipt() and Transaction.queryReceiptAsync()) will retry on BUSY, OK and UNKNOWN until 5 minutes elapses (maximum value for validDuration plus the 3 minutes that the receipt exists for)
These timeouts can be overridden by the user by calling overloaded methods which take a Duration as their last argument; this only times-out the retry process itself, not any blocking calls internally, so may not be exact.

cc @gregscullard @donaldthibeau @atul-hedera


docs: Update code samples to v3

Description:
Simple change to update code samples from v2 to v3 to reflect the latest version.
Related issue:
None.
Check list:

[ ] Mark if documentation changes are required.
[ ] Mark if tests were added or updated to cover the changes.

Already addressed this with #433 - along with workflow updates.

Hello @mauriciolauffer. Thank you for your pull request. Everything was updated https://github.com/actions/setup-node/pull/433. For now I'm going to close the pull request.


[SPARK-18537][Web UI] Add a REST api to serve spark streaming information

What changes were proposed in this pull request?
This PR is an inheritance from #16000, and is a completion of #15904.
Description

Augment the org.apache.spark.status.api.v1 package for serving streaming information.
Retrieve the streaming information through StreamingJobProgressListener.

this api should cover exceptly the same amount of information as you can get from the web interface
the implementation is base on the current REST implementation of spark-core
and will be available for running applications only
https://issues.apache.org/jira/browse/SPARK-18537

How was this patch tested?
Local test.

Can one of the admins verify this patch?

@vanzin
Could you take a look at this please?

ok to test

Test build #70028 has started for PR 16253 at commit 7a11293.

From an initial look the API portion looks good, I'll try to take a closer look at the code today or tomorrow.

Test build #70028 has finished for PR 16253 at commit 7a11293.

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

Merged build finished. Test PASSed.

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

Test build #70079 has started for PR 16253 at commit 7891017.

@vanzin
Thank you for your suggestions. Actually, ApiStreamingRootResource would be a better name.
BTW, do you (or anybody else) know the purpose of JavaStreamingListenerAPISuite.java? When I adding some test, I found it seems never used by any code, so I just left it away. Should we delete it, or make change in it anyway?

Test build #70079 has finished for PR 16253 at commit 7891017.

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

Merged build finished. Test PASSed.

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

BTW, do you (or anybody else) know the purpose of JavaStreamingListenerAPISuite.java?

I'd ask the person who wrote it ("git blame"). Looks like a compile-time check for the listener API.

Looks like a compile-time check for the listener API.

I think that's right. I was confused with the test suites in Scala. But this is for Java.

Test build #70117 has started for PR 16253 at commit e115cda.

Test build #70117 has finished for PR 16253 at commit e115cda.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

@ajbozarth @vanzin
Can anyone of you retest this please?

Jenkins, retest this please

Test build #70142 has started for PR 16253 at commit e115cda.

Test build #70142 has finished for PR 16253 at commit e115cda.

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

Merged build finished. Test PASSed.

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

Test build #70231 has started for PR 16253 at commit a6b1bb9.

Test build #70231 has finished for PR 16253 at commit a6b1bb9.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

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

Merged build finished. Test FAILed.

Looks like others are not really interested in reviewing. I'll take another closer look at the model tomorrow, just to make sure.

retest this please

Test build #70436 has started for PR 16253 at commit a6b1bb9.

Lot of thanks!

Test build #70436 has finished for PR 16253 at commit a6b1bb9.

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

Merged build finished. Test PASSed.

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

Test build #70506 has started for PR 16253 at commit 94dce77.

Test build #70506 has finished for PR 16253 at commit 94dce77.

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

Merged build finished. Test PASSed.

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

Merging to master.

@saturday-shi I don't know your Jira login, if you let me know I'll assign the bug to you.

@vanzin My JIRA account is Xing Shi (saturday_s).


add Star History

diagram url: https://api.star-history.com/svg?repos=geekan/MetaGPT&type=Date

Can you resolve the conflict please?
@xumeng

This PR has been closed because it took too long, feel free to reopen it.


Forge release cycle

Hi,
Are there any plans to resume a release cycle to the Forge? there's not been a release since 14th October 2015, according to the Forge page. We're able to pin to a git commit sha in librarian-puppet, but would prefer if this were an easily identifiable tag, or (even better) a release on the forge.

Turns out this was already requested in #570 .. apologies for the noise ...


New user preference for workbench view mode.

Related to work on https://github.com/uberfire/uberfire/pull/136 - UberFire new navigation system

https://github.com/uberfire/uberfire-extensions/commit/01ac83c852d1e47308820e89abc6ef83acb7e796


static html component can't loade other html components?

in this case i got a error like that

static html component can't loade other html components?
how to solve this

In theory it should be able to.
I will look into that shortly.

thanks for your reply. the file path is right，it's a relative path. in my pages html , I writen by this

it's working。
this seems to be a recursive reference problem.


Does the tiedot  support cluster ?

Does the tiedot  support cluster and  distributed?

Good morning.
For the use cases tiedot was tailored for, the performance from a single computer is quite sufficient, hence tiedot was not designed with clustering features.

Feel free to come back with more questions.


add back py36 support

Description
Please add an informative description that covers that changes made by the pull request and link all relevant issues.
If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

Also, at least for Metrics Advisor, I think the README and samples README might have instances which say use version >= 3.7 that were added in this PR: https://github.com/Azure/azure-sdk-for-python/pull/22224/files

One last nit (sorry): https://github.com/kristapratico/azure-sdk-for-python/blob/main/sdk/metricsadvisor/azure-ai-metricsadvisor/README.md?plain=1#L27


refactor: Refactor OpenAI API to use helper functions, silence LSP/linter warnings

Pull Request Checklist
Sorry for the large amount of refactor PR's. I understand it's a pain to review but it's a lot easier to work on a project when you can rely on your LSP to hint at possible errors and not get inundated with warnings and whatnot.
This addresses a few things:

Helper functions introduced in  #4237 are now re-used for OpenAI
A few files were auto-formatted
Silence LSP warnings (potentially unbound variables, inconsistencies in type annotations, including get_all_models)
Silence linter warnings (bare except:, unused imports, == None instead of is None, unused variables, function re-definition with the same name)

Before submitting, make sure you've checked the following:

[x] Target branch: Please verify that the pull request targets the dev branch.
[x] Description: Provide a concise description of the changes made in this pull request.
[x] Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
[x] Documentation: Have you updated relevant documentation Open WebUI Docs, or other documentation sources?
[x] Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
[x] Testing: Have you written and run sufficient tests for validating the changes?
[x] Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
[x] Prefix: To cleary categorize this pull request, prefix the pull request title, using one of the following:

BREAKING CHANGE: Significant changes that may affect compatibility
build: Changes that affect the build system or external dependencies
ci: Changes to our continuous integration processes or workflows
chore: Refactor, cleanup, or other non-functional code changes
docs: Documentation update or addition
feat: Introduces a new feature or enhancement to the codebase
fix: Bug fix or error correction
i18n: Internationalization or localization changes
perf: Performance improvement
refactor: Code restructuring for better maintainability, readability, or scalability
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.)
test: Adding missing tests or correcting existing tests
WIP: Work in progress, a temporary label for incomplete or ongoing work

Changelog Entry
Description

Refactor everything around OpenAI API

LGTM, Thanks!

The LSP can infer Union[list, dict] but when you use the result it
doesn't know if its list or dict.
On Sat, 3 Aug 2024, 19:53 Timothy Jaeryang Baek, @.***>
wrote:

@.**** commented on this pull request.
In backend/apps/openai/main.py
https://github.com/open-webui/open-webui/pull/4295#discussion_r1702861063
:

@@ -234,72 +228,66 @@ def merge_models_lists(model_lists):
return merged_list

-async def get_all_models(raw: bool = False):
+def is_openai_api_disabled():

api_keys = app.state.config.OPENAI_API_KEYS
no_keys = len(api_keys) == 1 and api_keys[0] == ""
return no_keys or not app.state.config.ENABLE_OPENAI_API

+async def get_all_models_raw() -> list:
I wouldn't want to change the current function just for LSP's sake. PerhapsUnion[dict,
list] could work?
—
Reply to this email directly, view it on GitHub
https://github.com/open-webui/open-webui/pull/4295#discussion_r1702861063,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASWXRP2AG34NSJAHALGS2BTZPURLJAVCNFSM6AAAAABL42B2HCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDEMJXGE3DSNBTGI
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

LGTM, Thanks!


Un-owning and|or deleting Local Database instance when CR.spec.Database.enabledLocalDb is switched to 'false'

As stated: what we need to do with Local DB instance in a case if CR.spec.Database.enabledLocalDb is switched from 'true' to 'false'.
Options:

Delete all the objects (including PV and PVC) associated with LocalDb instance
Just un-own the objects (remove owner reference). In this case back switch should probably cause reusing of these objects.
Make thiss behavior configurable on Operator level

Related to: https://github.com/janus-idp/operator/issues/72

It is already implemented with deletion all the related objects. So far no visible sense to change it


fix: use env_var_name instead of string to secure sensitive data

CircleCI best practices suggests to use env_var_name to secure  sensitive data.

@brunohkbx This is breaking changes.
When I set plain user name to git_user_name, build is error. https://circleci.com/gh/sue445/circleci-ruby-orbs-test/1042
Example
    jobs:
      - ruby-orbs/bundle-update-pr:
          git_user_name:  "CircleCI bundle updater"

github_access_token  and enterprise_octokit_access_token  are sensitive data, but other not. (e.g. git_user_name )
I think sensitive data should store to secure variables, but I want to write non-sensitive data directly in yaml.

@sue445 you are right. Could you please review it again?
I'm just unsure about enterprise_octokit_api_endpoint. Do you think it's ok to expose it in the yaml?

I'm just unsure about enterprise_octokit_api_endpoint. Do you think it's ok to expose it in the yaml?

I think this is no problem. When use circleci-bundle-update-pr with CircleCI + GH:E, code is hosted in protected GH:E

Done @sue445

LGTM!


Quiesce should be false (at least by default) when stage is true

I think this is being set here
https://github.com/fusor/mig-ui/blob/42e09acf2464b70206e35e96a0aaa7f77ad5d02b/src/client/resources/conversions.ts#L291

To be clear on this one, quiesce pods should be false on stages, but should be controlled by the checkbox in the confirmation modal when creating a final migration.


type JSONList in json_writer is not exported

Hi,
I am using the JSONWriter  appendRows to insert data to Big Query, it accept JSONList as input, but this type is not exported. It is convenient to convert the input to the correct data type. Is it possible to export this type in future release?
Thanks,
Huiling

hey @huilingwei thanks for the report. The JSONList is suppose to represent just a list of plain JSON objects. Are you having issues passing such objects to the method ? I was holding back exporting those because they are suppose to be a broader type and not reused in other places, unless is causing problems for users to use it.

@alvarowolfx any reason not to use TypeScript's object[]? I understand it should be equal to JSONList.

hey @huilingwei thanks for the report. The JSONList is suppose to represent just a list of plain JSON objects. Are you having issues passing such objects to the method ? I was holding back exporting those because they are suppose to be a broader type and not reused in other places, unless is causing problems for users to use it.

We define a common method to insert records, it will accept object[], when  writer.appendRows with rows, build will fail for error: Argument of type T[] is not assignable to parameter of type JSONList
We resolve it by converting rows to never[]: writer.appendRows(rows as never[]) . If JSONList is exported, convert the type to JSONList will be better.
const insertCommon = async <T extends object>(
    tableId: string,
    rows: T[],
): Promise<boolean> =>{
  ...
  const pw = writer.appendRows(rows);
  ...
}

#420 exports JSONList


Regarding Throttle Executable in Linux

Hello,
Thanks for this useful tool.
My use case is to utilize this tool in a machine that does not have Node installed.
I'm wondering where I can find an executable for throttle in Linux or if you have a plan to release it?
Thank you!

Hi @ramgiteng thanks for the kind words. You need to run NodeJS at the moment. What you can do is use the logs from Throttle and just run the commands yourself. Run:
LOG_THROTTLE=true throttle 3gslow
And Throttle will output the exact commands.

Thank you @soulgalore ! I haven't tried that. I will check it out.


Update feral-lambda-http4s to 0.3.0-RC3

About this PR
📦 Updates org.typelevel:feral-lambda-http4s from 0.3.0-RC2 to 0.3.0-RC3
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
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!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.typelevel", artifactId = "feral-lambda-http4s" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.typelevel", artifactId = "feral-lambda-http4s" }
}]

labels: library-update, early-semver-pre-release, semver-spec-pre-release, version-scheme:early-semver, commit-count:1

Superseded by #969.


Release Notes: 2022-10

This issue was created to capture the release notes for 2022-10.

Hi, this metric is ready for release:
https://github.com/chaoss/wg-dei/blob/main/focus-areas/project-and-community/newcomer-experience.md


Add missing packages

Some packages are missing during gulp dist. Packages including :

async-validator
gulp-cssmin
gulp-postcss
throttle-debounce

Run npm run dist instead of gulp dist. The former command installs these packages automatically.

@Leopoldthecoder but this forces using cooking ! This makes gulp working out-of-the-box :) What's your idea?

Each package is independent. You should run npm run bootstrap install dependencies


Binding to host error (adidnsdump)

Hello Guys,
when i try to start and connect with linWinPwn i get the following error from adidnsdump.
my command: ./linWinPwn -t  -u  -p  --auto-config

Hello,
From the error message, it seems like you're using ldaps instead of ldap (i.e. port 636 instead of 389). Did you specify the parameter --ldaps with linWinPwn?
Also, are you sure to be using the latest version of adidnsdump?

Hello lefayjey,
Thanks for the quick respond.
Yes, i also tried it with --ldaps parameter. Same problem.
adidnsdump is also on the latest version.
Br!

If you run the command adidnsdump followed by the same IP, do you have the same error?
The issue can be related to adidnsdump, or the target IP could be blocking the connection or just doesn't have the LDAP ports open

Yes.
im connected to LAN.
I tried the bloodhound python script and it worked, so i think its something with adidnsdump.
Do you know how bloodhound bind to hosts ?
Br!

If the issue is with adidnsdump, then it's not related to linWinPwn, and I can't really help you with that.
If you wish to skip the dns enumeration and use the checks of linWinPwn, you'll have to comment the line "dns_enum" under the "main()" function (line 2330 in the latest version), but some checks may fail because of that.

I'm going to close this issue since it seems to be related to  another tool. I'll keep the comments on in case you need more assistance on that.
Thanks


Adding example illustrating how to read a raw image file.

Looks like a good example.
To be consistent with the other example and facilitate automatic testing, and validation:

please produce an output file and check with a check sum.
please guard the use of Show with a check for the SITK_NOSHOW environment variable like what was done here:
https://github.com/SimpleITK/SimpleITK/blob/master/Examples/DicomSeriesReader/DicomSeriesReader.py#L45
The other examples don't check for "main", please be consistent with them.

Addressed points 2 and 3. Changing the example to write an image in the end makes this closer to a test than an example, so I'd like to keep it as is, unless you feel this is really critical.

Yes, it is the way they are all written and ensures they all keep working.

Added checks returning zero if example succeeds or one if failure. This is not validation via file writing, but is consistent with other examples.

Add output files and comparison via md5. There is some strange behavior, the md5 for the files written via Python is different from those via R even though the pixel values are the same.

I'll take a look at this behavior

I have updated the PR so it works with the test system.
In the future we may add images produced by the example to the Documentation.rst files. For here adding both endings would be nice.

@ziv @dave3d Please check the review the update I pushed here.


add class input default

I think you should add a default class for input on the input grid = name in the database, when the operation is to add or milk, it would help him manipulate a lot from javascript

I guess it concern jsGrid project, rather than this jsgrid-php sample.


Long string not handled

If a single string of characters exceeds the width of the containing element, even using wrap:”letter” as an option, no truncation happens and no ellipsis is added.

I’ve discovered that using “word-wrap: break-word” to the CSS for the containing element gets the overly large string to truncate and have an ellipsis. I don’t know if this is intentional behavior or just a work around.

Just to clarify using break-word causes other problems if you're trying specifically to truncate and use ellipsis rather than break in the middle of words.


Initial add of analytics-example-widget

This sample provides an in depth example on using Analytics and charting with VSTS in typescript, with React UI on the Widget layer.
I'll be making refinements on the readme and supporting docs, in coming days, while Michael helps refine the sample proper.
Compass team will be using feedback from this example to help factorings on supporting APIs for Analytics and Widgets.

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


[QA] Group membership shows internal ids only

Seen with docker run --rm -ti -p 9200:9200 owncloud/ocis:1.0.0-rc1
Log in as einstein, click on the user name 'Albert Einstein' in the top righthand corner.
The group membership is displayed as

Expected behaviour: group names are listed instead of the internal ID's, e.g. 'violin-haters', 'physics-lovers'.

duplicated of https://github.com/owncloud/ocis/issues/441
not happening anymore:

duplicated of https://github.com/owncloud/ocis/issues/441
not happening anymore:


Adding workflow to increment version after release

Description
After each release, we need to increment the version manually. Adding a workflow for it.
I verified this workflow on my fork: it successfully raised a PR https://github.com/VachaShah/opensearch-java/pull/11
Issues Resolved
Resolves #190
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Works for me. Generally maybe it's easier/more robust to write these things in gradle.
Do update CHANGELOG.

Added the changelog. Do you mean to write this script in gradle?

@dblock @reta Can I get reviews so we can release 2.7.0 for the client? Thank you!


Euclidean Division and Remainder

Note that, for consistency, a few changes were made to the non-euclidean analogue.

[x] div_euclid
[x] rem_euclid
[x] checked_div_euclid
[x] overflowing_div_euclid
[x] wrapping_div_euclid
[x] overflowing_rem_euclid
[x] wrapping_rem_euclid
[x] checked_rem_euclid

Closes #253

bors try

bors try

WAT?

bors try

WAT?

Its how you trigger the CI. It failed because of formatting.

Here are the bors commands: https://bors.tech/documentation/

So what, like do I have to ask bors to run every time I want it?

bors try

bors merge

I agree that something like divmod would probably make more sense, but in this case I was trying to stick as close as possible to the existing rust documentation. That is, I was trying to mimic what is already part of the standard library for i32 found here in https://doc.rust-lang.org/std/primitive.i32.html
Python (on the other hand) implements what you suggest already via a function called divmod. Here is my terminal output
➜  ~ python3
Python 3.7.3 (default, Apr 24 2020, 18:51:23)
[Clang 11.0.3 (clang-1<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> divmod(5, 2)
(2, 1)
>>> divmod(-5, -2)
(2, -1)
>>> divmod(-5, 2)
(-3, 1)
>>> divmod(5, -2)
(-3, -1)


⚠ Bofrost.hr has degraded performance

In a72a3de, Bofrost.hr (https://www.bofrost.hr) experienced degraded performance:

HTTP code: 200
Response time: 2394 ms

Resolved: Bofrost.hr performance has improved in 4d42df0 after 7 minutes.


backend-plugin-api: rework service factory definitions

Hey, I just made a Pull Request!
Work towards #13082, see the changeset for details. Main purpose of this is to make service factory implementations cleaner and less confusing, as well as support TypeScript 4.9.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[x] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

It seems to claim there's too many changesets :)


Auto generate Parser related classes on compile time

Instead of Pre-generating and committing parser related classes, use the grammar file to generate parser classes at compile time.

We expect that the grammar changes will reduce over the time. Therefore we don't see a real requirement to generate the parser related code during the build time.