Prototype deep equality

If we decide that this goes in the right direction we'll have to extend the rest of constructors to allow deep comparison.
cc @tim-smart for further testing & potential api extensions
linked discord discussion: https://discord.com/channels/795981131316985866/795983589644304396/1214495832246853682
closes #2251

Tried out the regional idea: https://github.com/Effect-TS/effect/pull/2259/files

I feel like regional would be far too verbose and it's not a solution for classes as you can't creste a class inside the region

@tim-smart I think we need to make a choice here, either we add the param to the api or we decide it's not important. WDYT? cc @IMax153 @gcanti @fubhy

against adding params

Both seem a bit awkward tbh. Also, apologies in advance as I'm probably missing something here, but why would you ever want to use the Data.proxy() and then set deep to false? Isn't the whole point of it to support deep equality?
Also, the name isn't great. The consumers shouldn't care that it uses a proxy. The name should reflect what it does, not how.

I think deep equality is something worth pursuing, as a beginner will likely expect Equal.equals to also check the metadata object:
import { Data } from "effect"

class User extends Data.Class<{ name: string; metadata: { foo: string } }> {}

But I wonder if we tackle it in the constructors rather than in the actual Equal implementation. I.e. ensure any nested object implement Equal & Hash.

import { Data } from "effect"

class User extends Data.Class<{ name: string; metadata: { foo: string } }>({deep: true}) {}

I don't see any single reason not to add parameters.
Constructors don't exist for plain objects for example Data.tagged and in classes it would require typing parameters which would look horrendous.
The decision here is:

we care about deep equal => we add params
we don't care about deep equals => everything remains the same

If anyone has concrete concerns about adding params that are not "I am against" please explain with examples and reasons

If the issue is unexpected behavior, adding an opt-in parameter { deep: true } doesn't solve the problem, it should be the default behavior.

Having an object / array already constructed and wanting to have a view (proxy) which compares by value instead of by reference

Yes, I get that, but my question was why would you ever want that then to NOT perform deep comparison. As Giulio also said, it should at least be deep by default then. I'm just additionally questioning if you'd ever want it to NOT perform deep comparison, hence wondering if we can just drop that option entirely.

Note: the issue is not unexpected behaviour, it's absolutely expected not to have deep comparison if you use mutable data such as nested objects. But that doesn't mean the user wouldn't want deep comparison, this is about making it easier to do it instead of having to declare nested classes

Could this be an option too?
import { Data } from "effect"

class User extends Data.Class<{
  name: string;
  metadata: { foo: string };
  a: { b: MutableStuff } }
({
  a: {
    b: MyCustomCmpFn // Explicitly override the default behavior here.
  }
}) {}
> ```

Could this be an option too?
import { Data } from "effect"

class User extends Data.Class<{
  name: string;
  metadata: { foo: string };
  a: { b: MutableStuff } }
({
  a: {
    b: MyCustomCmpFn // Explicitly override the default behavior here.
  }
}) {}

it's not only a comparator function but also a hashing implementation, not sure if it would be possible, also I would have no idea how to write the type of the parameter

Alternative idea: we could use decorators instead of parameters for classes
I think we need to approach this in steps:

provide a good way of creating deeply compared data classes, ideally via a decorator for backward compatibility

long term re-evaluate deep equality by default with the caveat of not deeply comparing custom typed but only plain structures, this if it ever lands will be material for 4.0 after a good period of testing

I think decorators could be nice, you could use them for both classes and the other apis from what I recall.
I remember trying to use them when trying out apis for making Hash lazy, but ran into some issues with tsconfig.


Add email engine framework for writing scripts that send emails

Adds a framework for writing scripts that send emails that aims to be

Reliable
Repeatable
Auditable

The theory is based around a suggestion from @alex9smith and @bjgill, when running the email engine logs email notifications that are outstanding and sent are recorded in a human readable log file. If the script fails partway through sending emails, it can read back its own log file to pick up where it left off.
To use the email engine, the script provides a generator function that calls the Digital Marketplace API and yields notifications to be sent; dmscripts.email_engine.email_engine handles everything else, including resuming failed runs, logging, and command line argument handling:
from dmapiclient import DataAPIClient
from dmscripts.email_engine import email_engine

def notifications(stage, **kwargs):
    # generate emails to be sent by calling the DMp API
    data_api_client = DataAPIClient.from_stage(stage)
    for ... in data_api_client.find_some_iter(...):
        yield {
            "email_address": ...,
            "template_id": ...,
            "personalisation": ...
        }

if __name__ == "__main__":
    email_engine(notifications)

More examples and details are in the docstring for dmscripts.email_engine.__init__.
Implementation notes
Most of the logic is in the module dmscripts.email_engine.queue, encapsulated in a function called run.
Outstanding

[x] Add documentation to modules
[x] Add proper commit messages
[x] Add example email script using email engine
[ ] Add example Jenkins job

From my experience testing this it may be desirable to include the hash of the arguments in the reference, this is because during debugging one may reasonably expect changing the arguments would change the behaviour whereas in the current implementation the reference log overrides argument changes.

From my experience testing this it may be desirable to include the hash of the arguments in the reference, this is because during debugging one may reasonably expect changing the arguments would change the behaviour whereas in the current implementation the existence of the reference log overrides argument changes.

I've added this functionality, thanks for the suggestion.

Hmm, not sure merging this is a good idea just yet; it may break the Jenkins job to send emails to suppliers about awarded briefs.


Add ESM 'module' entrypoint

Pulled off from: https://www.pika.dev/npm/snowpack/discuss/71
Hey @bcherny, thanks for the great open-source library. A Snowpack user was having some trouble building your package, and I thought I'd loop you in. Since Snowpack is powered by Rollup, there's a good chance that all Rollup users are having trouble with undux due to circular references in your "main" Common.js (CJS) entrypoint.
Circular dependency: node_modules/undux/dist/src/index.js -> node_modules/undux/dist/src/react/index.js -> node_modules/undux/dist/src/react/connect.js -> /Users/crabasa/Code/fibonacci/node_modules/undux/dist/src/index.js?commonjs-proxy -> node_modules/undux/dist/src/index.js
Circular dependency: node_modules/undux/dist/src/index.js -> node_modules/undux/dist/src/react/index.js -> node_modules/undux/dist/src/react/createConnectedStore.js -> node_modules/undux/dist/src/index.js
Circular dependency: node_modules/undux/dist/src/index.js -> node_modules/undux/dist/src/react/index.js -> node_modules/undux/dist/src/react/createConnectedStoreAs.js -> node_modules/undux/dist/src/index.js
Error: '__moduleExports' is not exported by node_modules/undux/dist/src/index.js
    at error (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:5400:30)
    at Module.error (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:9820:16)
    at handleMissingExport (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:9721:28)
    at Module.traceVariable (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:10159:24)
    at ModuleScope.findVariable (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:8766:39)
    at Identifier$1.bind (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:4403:40)
    at ExportDefaultDeclaration.bind (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:3152:23)
    at Program$1.bind (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:3148:31)
    at Module.bindReferences (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:9792:18)
    at Graph.link (/Users/crabasa/Code/fibonacci/node_modules/rollup/dist/shared/node-entry.js:13425:20)

Since bundlers are better at code-splitting/tree-shaking ESM than CJS, and since your only consumers today are using this library through bundlers, have you thought at all about adding a "module" entrypoint to your package.json so that your users get better-optimized bundles? "module" is the entrypoint that 90,000+ packages use on npm to expose their ESM entrypoint (we track this on pika.dev).
I saw that you have a "main:esnext" build, but since TypeScript's esnext target can include experimental JavaScript, this may not be the best choice for a library. target: es2020 would be better only so that bundlers would be guaranteed to understand the code and not break on any experimental (not yet ratified as ES20XX) bits.
There are a few ways to go about this. How would you feel about a PR that changed the tsconfig.esnext.json "target" property from "esnext" to "es2020', and then updated your package.json to add a "module" property pointing to that build? That way this library would be less likely to break Snowpack & Rollup users, and all users bundlers would benefit from a faster ESM library in production.

Sounds reasonable. Happy to stamp a PR that does that.

Awesome, created a PR at #105 👍


Fix library shutdown

Make the Telemetry TimerTask a daemon
Make the StatsDProcessor Executor use daemon threads

I've got to check a couple more things, around the lib, but will shoot for a release today or tomorrow.
Thanks again for your contribution @blevz  🙏


MudScrollbar does not work on Firefox

I use Firefox, and when I visit https://codebeam-mudextensions.pages.dev/mudscrollbar - I cannot take advantage of any of the features there.
I always get a boring "default" scrollbar.
If this could be implemented in Firefox somehow, that would be great.
Alternatively, if this is a known limitation - I suggest documenting this somewhere on the demos page.
P.s. - thanks for your work, this is a great addition to the already fantastic MudBlazor.

Unfortunately, Firefox has a little customization support on their scrollbar. They don't have webkit variables. We defined them in parameter descriptions, the parameters doesn't work for Firefox. You can customize it only with FirefoxStyle parameter on MudScrollbar.

If you have further questions or noticed more flexible scrollbar options on Firefox, please reopen this issue.


chore: automated PR to update windows release notes for version 230707

This is an automated PR to ReleaseNotes for the windows VHD release with image version 230707

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall First build on WSreleaseNotes/230707 at 60.702%

Totals

Change from base Build<PHONE_NUMBER>:
60.7%

Covered Lines:
2578

Relevant Lines:
4247

💛  - Coveralls


LogRotate: Server logs

ATM server logs just fills in .... ;)

added log rotate, keeps 5 files, rotate daily.
see /etc/logrotate.conf


Added EventStore exporter to the list

Adds EventStore exporter to the list. EventStore is an... event store.

Thanks!
I'd suggest reading https://prometheus.io/docs/instrumenting/writing_exporters/ to see ways you can make your exporter even better, for example counters and only counters should end in _total and you should use ConstMetrics rather than the normal Gauge/Counter objects. It's also unclear what memory that process_memory_bytes refers to - is that resident, virtual, or something else?


How to connect to virtualenv?

How can I use nvim-ipy with a virtualenv?

@ipsod you can install ipykernel in the virtualenv, then register the kernel with python -m ipykernel install --user --name my-venv. You will then be able to run :IPython --kernel my-venv. This is the same technique that you would use for running Jupyter Notebook/Lab with kernels in virtual environments.


cloudstack - systemvm and secondary storage configuration issue

ISSUE TYPE
systemvm creation issue, which I believe is a result of the recent version upgrade that was complete from v4.11.3 to v4.13.  Although this is a new implementation and there are instances deployed as of yet.
It appears we have an issue with the systemvm or secondary storage configuration although I cannot determine the issue.
COMPONENT NAME
systemvm / secondary storage issue after upgrade from 4.11.3 to 4.13
CLOUDSTACK VERSION
4.13
CONFIGURATION
Basic configuration / new implementation of cloudstack recently upgraded to v4.13

1 x Management Server CentOS 7
3 x KVM hosts CentOS 7
Primary Storage - SAN (CLVM using GFS2)
Secondary Storage - CIFS

SUMMARY
New cloudstack implementation, upgraded from 4.11.3 to 4.13.

Since upgrade secondary storage and proxy vm fail to start
Cannot update or delete systemVM templates
Cannot add/register new ISO image as secondary vm is not running

@smgray315uk Did you follow the quick install guide for installation? Currently there is an error in the guide specifying an old repo and system vm template.

Yes the quick installation guide was followed for the installation. The repo currently in use is: -
[cloudstack]
name=cloudstack
baseurl=http://download.cloudstack.org/centos/$releasever/4.13/
enabled=1
gpgcheck=0
I'll double check to see if this is correct.
The upgrade from v4.11.3 to v4.13 appears to have worked fine. Although to me it looks like we have some issue with the systemvm creation (proxy and secondary storage vm). These are automatically created although both fail to start.
Checking the logs from management-server.log we can see the following error: -
proxy systemvm
2020-04-08 14:11:38,416 WARN  [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-cb949c1a) (logid:9b4ad792) Exception while trying to start console proxy
com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[ConsoleProxy|v-14383-VM]Scope=interface com.cloud.dc.DataCenter; id=1
at com.cloud.vm.VirtualMachineManagerImpl.orchestrateStart(VirtualMachineManagerImpl.java:1063)
at com.cloud.vm.VirtualMachineManagerImpl.orchestrateStart(VirtualMachineManagerImpl.java:5107)
at sun.reflect.GeneratedMethodAccessor252.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.cloud.vm.VmWorkJobHandlerProxy.handleVmWorkJob(VmWorkJobHandlerProxy.java:107)
at com.cloud.vm.VirtualMachineManagerImpl.handleVmWorkJob(VirtualMachineManagerImpl.java:5270)
at com.cloud.vm.VmWorkJobDispatcher.runJob(VmWorkJobDispatcher.java:102)
at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:583)
at org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
at org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)
at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:531)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2020-04-08 14:11:38,417 INFO  [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-cb949c1a) (logid:9b4ad792) Unable to start console proxy vm for standby capacity, vm id : 14383, will recycle it and start a new one
2020-04-08 14:11:38,417 DEBUG [c.c.a.ConsoleProxyAlertAdapter] (consoleproxy-1:ctx-cb949c1a) (logid:9b4ad792) received console proxy alert
2020-04-08 14:11:38,418 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (Work-Job-Executor-121:ctx-49acca72 job-33146/job-43242) (logid:637984c0) Done executing com.cloud.vm.VmWorkStart for job-43242
2020-04-08 14:11:38,419 DEBUG [c.c.a.ConsoleProxyAlertAdapter] (consoleproxy-1:ctx-cb949c1a) (logid:9b4ad792) Console proxy creation failure, zone: ICD
2020-04-08 14:11:38,420 INFO  [o.a.c.f.j.i.AsyncJobMonitor] (Work-Job-Executor-121:ctx-49acca72 job-33146/job-43242) (logid:637984c0) Remove job-43242 from job monitoring
2020-04-08 14:11:38,421 WARN  [c.c.a.AlertManagerImpl] (consoleproxy-1:ctx-cb949c1a) (logid:9b4ad792) AlertType:: 10 | dataCenterId:: 1 | podId:: null | clusterId:: null | message:: Console proxy creation failure. zone: ICD, error details: null
secondary storage vm
2020-04-08 14:11:38,431 WARN  [o.a.c.s.SecondaryStorageManagerImpl] (secstorage-1:ctx-db6ce1d8) (logid:71d15b82) Exception while trying to start secondary storage vm
com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[SecondaryStorageVm|s-14384-VM]Scope=interface com.cloud.dc.DataCenter; id=1
at com.cloud.vm.VirtualMachineManagerImpl.orchestrateStart(VirtualMachineManagerImpl.java:1063)
at com.cloud.vm.VirtualMachineManagerImpl.orchestrateStart(VirtualMachineManagerImpl.java:5107)
at sun.reflect.GeneratedMethodAccessor252.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.cloud.vm.VmWorkJobHandlerProxy.handleVmWorkJob(VmWorkJobHandlerProxy.java:107)
at com.cloud.vm.VirtualMachineManagerImpl.handleVmWorkJob(VirtualMachineManagerImpl.java:5270)
at com.cloud.vm.VmWorkJobDispatcher.runJob(VmWorkJobDispatcher.java:102)
at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:583)
at org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
at org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)
at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:531)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2020-04-08 14:11:38,432 INFO  [o.a.c.s.SecondaryStorageManagerImpl] (secstorage-1:ctx-db6ce1d8) (logid:71d15b82) Unable to start secondary storage vm for standby capacity, vm id : 14384, will recycle it and start a new one
2020-04-08 14:11:38,432 DEBUG [c.c.a.SecondaryStorageVmAlertAdapter] (secstorage-1:ctx-db6ce1d8) (logid:71d15b82) received secondary storage vm alert
2020-04-08 14:11:38,434 DEBUG [c.c.a.SecondaryStorageVmAlertAdapter] (secstorage-1:ctx-db6ce1d8) (logid:71d15b82) Secondary Storage Vm creation failure, zone: ICD
2020-04-08 14:11:38,436 WARN  [c.c.a.AlertManagerImpl] (secstorage-1:ctx-db6ce1d8) (logid:71d15b82) AlertType:: 19 | dataCenterId:: 1 | podId:: null | clusterId:: null | message:: Secondary Storage Vm creation failure. zone: ICD, error details: null

For a 4.11.3 installation the systemvm template should be http://download.cloudstack.org/systemvm/4.11/systemvmtemplate-4.11.3-kvm.qcow2.bz2
The quick start quide has an older system vm template

ok, so I looked at this and did as you said and updated the systemvm templates, unfortunately this didn't resolve our issue.
This is a POC for us at the moment, so I decided to re-install the system management server from scratch as it looks like the systemvm templates etc are not downloading correct to the secondary storage.
After re-installing I had the same issue. I had a real good look into this and by chance noticed that the available space on secondary storage was 0KB from the cloudstack dashboard.  I removed the secondary storage and decided to simply create an NFS share locally from the management server and add as secondary storage to Cloudstack.
Once I did this and refreshed I could see space was now available for secondary storage, checked the systemvm's and these are now running :)
So my issue was relating to Secondary storage not being configured correctly etc. It's working fine from NFS locally on the management server, which will be fine for me to test.
Thanks for your help.

Any one got the solution for this.. I am also facing issue wint 4.14 version...Error I get is
aCenterId:: 1 | podId:: null | clusterId:: null | message:: Failed to register template: e3fb4dec-b4b0-11ea-bed6-000c29254044 with error: Unable to resolve download.cloudstack.org

Any one got the solution for this.. I am also facing issue wint 4.14 version...Error I get is
aCenterId:: 1 | podId:: null | clusterId:: null | message:: Failed to register template: e3fb4dec-b4b0-11ea-bed6-000c29254044 with error: Unable to resolve download.cloudstack.org

I have the same problem with you and still looking for way to handle this.

@phanthaihuan have a look at this page, it could help with finding the problem:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/SSVM%2C+templates%2C+Secondary+storage+troubleshooting

Hi
To resolve the issue we actually went the re-installation route as this was
a POC. Looking back now at the issue it was really to do with downloading
and updating the core systemvm template correctly and ensuring that this
was available on the secondary storage.
Hope this help.
On Thu, 1 Oct 2020 at 19:23 Huan Phan<EMAIL_ADDRESS>wrote:

Any one got the solution for this.. I am also facing issue wint 4.14
version...Error I get is
aCenterId:: 1 | podId:: null | clusterId:: null | message:: Failed to
register template: e3fb4dec-b4b0-11ea-bed6-000c29254044 with error: Unable
to resolve download.cloudstack.org
I have the same problem with you and still looking for way to handle this.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/apache/cloudstack/issues/4022#issuecomment-702315712,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APC3YR3UDYBUELEZQM4X7NDSITCLHANCNFSM4MDAC7FA
.


OSGi compatibility tasks

[ ] Update Class.forName() references to specify class loaders
[ ] Test installation and bundle wiring in an OSGi runtime (such as Karaf)
[ ] Write an integration test that confirms data processing in Karaf or other OSGi runtime

Sample routine to detect running within OSGi:

public static boolean detectOsgi() throws Exception {
try {
First.class.getClassLoader().loadClass("org.osgi.framework.BundleReference");
return true;
} catch (Exception e) {
// fail.. not in OSGi
System.out.println("\n\n\t\t No OSGi detected: " + e.getMessage());
}
return false;
}

This task would need to be completed for Fuse 7


Code of Conduct for Community Standards Proposal

Hello Keras administrators,
For an Open Source Software Class, I am required to learn about OSS as well as a bring about a particular issue to a specific project. I chose Keras as it is a library I am currently working for my Capstone Project and find it very fascinating, yet complex. After doing some oversight, I noticed that the community standards does not have a proposed Code of Conduct.

Would this be of worth implementing, as well as the other community standards? Interested in learning more and being able to offer assistance!

Thanks for the suggestion. In our opinion this is not useful. We have  a welcoming community and we believe that our existing community standards are sufficient to ensure that everyone feels welcome and respected.


[Request for External] Codeunit 905 - "Assembly Line Management", local procedure

Hello Team,
in codeunit 905 "Assembly Line Management" two versions of procedure AddBOMLine exists. One of them is not local, has three parameters and calls the InsertAsmLine() and the AddBOMLine() procedure with six parameters. But this second AddBOMLine procedure is local.
I want to calculate the Assembly Order Lines on my own and want to decide, which Assembly BOM lines should be copied and which not. But this will only work inclusive all events if this second local AddBOMLine procedure could be called from external.
So, please could you make this change:
Old:
local procedure AddBOMLine(AssemblyHeader: Record "Assembly Header"; var AssemblyLine: Record "Assembly Line"; AsmLineRecordIsTemporary: Boolean; BOMComponent: Record "BOM Component"; ShowDueDateBeforeWorkDateMessage: Boolean; QtyPerUoM: Decimal)
New:
procedure AddBOMLine(AssemblyHeader: Record "Assembly Header"; var AssemblyLine: Record "Assembly Line"; AsmLineRecordIsTemporary: Boolean; BOMComponent: Record "BOM Component"; ShowDueDateBeforeWorkDateMessage: Boolean; QtyPerUoM: Decimal)
Thanks in advance and best regards,
Stephan

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: 51059.


Collect metrics about trackers

Hi @martabal , thank you for this awesome project!
I have a question: is it possible to collect information about trackers for each torrent? This information would be really useful for monitoring trackers.
For example, if a tracker reports an error and provides a message about a missing announce in the qBittorrent, it could be used to notify a user to check if the announce was updated. This way, the user could get a new torrent and resolve the issue.

Hello !
Thanks for the suggestion. Currently, the exporter does not collect any data about trackers, but I opened a PR to expose that data #30

It seems that Qbittorrent does not provide an API endpoint to get a list of trackers, the exporter has to manually scan each tracker, which may affect the exporter's performance if you have many trackers.


chore: switched to github ci, switched to stricter-standard, updated deps

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@ed59e75). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #26   +/-   ##
=========================================
  Coverage          ?   95.91%
=========================================
  Files             ?        8
  Lines             ?      147
  Branches          ?        0
=========================================
  Hits              ?      141
  Misses            ?        6
  Partials          ?        0

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 ed59e75...2683bf2. Read the comment docs.


Note that Mail Contacts are not supported

Support case 27241509 describes that mail contacts are not supported in groups:
"Regarding the groups yes you can use them but the users inside them cannot be of type Contact, they must be of type User."

@ltwlf  This statement doesn't sound quite right to me - all you need is an email address, which a mail contact supplies.  Then it's whether the Azure Information Protection service can authenticate using that email address. For example, it could authenticate any email address that you're using with a Microsoft account.  Or for email, any federated email provider (so for example, a mail contact using a gmail address).  I don't see why these wouldn't work if specified in a group.  I've added the user requirements to the page instead of the object user type and see https://docs.microsoft.com/en-us/azure/information-protection/prepare#assigning-usage-rights-and-access-controls-to-external-users
If this doesn't match with what you were told, please ask your support engineer to contact me internally. Unfortunately, I can't find the support ticket from the number provided.

Investigating with engineering (and found the support ticket)

Closing as discussed offline


Correction for raw affiliation Centre for Studies in Family Medicine, Western University, London, ON, Canada

Correction needed for raw affiliation Centre for Studies in Family Medicine, Western University, London, ON, Canada
raw_affiliation_name: Centre for Studies in Family Medicine, Western University, London, ON, Canada
new_rors: ;02grkyz14
previous_rors: 059d8kr95;02grkyz14
works_examples: W4366590241;W4362699894
contact: add5593d41dba9137fe57f98e4f41ee2:8fe114d987958342 @ uwo.ca

This issue was accepted and ingested by the OpenAlex team on 2024-12-19. The new affiliations should be visible within the next 7 days.


Swarm test fail intermittently against ESX 6.0 setup

During the CI, there is a race condition which results in the failure of swarm test:
2017/10/21 01:59:23 Checking running containers for docker service [swarm_test_service_1048760] on docker hosts: [<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]
2017/10/21 01:59:23 Sleep for 5 seconds
2017/10/21 01:59:29 Sleep for 5 seconds
2017/10/21 01:59:35 Sleep for 5 seconds
2017/10/21 01:59:41 Sleep for 5 seconds
2017/10/21 01:59:47 Sleep for 5 seconds
2017/10/21 01:59:52 Sleep for 5 seconds
2017/10/21 01:59:58 Sleep for 5 seconds
2017/10/21 02:00:04 Sleep for 5 seconds
2017/10/21 02:00:10 Sleep for 5 seconds
2017/10/21 02:00:16 Sleep for 5 seconds
2017/10/21 02:00:21 Sleep for 5 seconds
2017/10/21 02:00:27 Sleep for 5 seconds
2017/10/21 02:00:33 Sleep for 5 seconds
2017/10/21 02:00:39 Sleep for 5 seconds
2017/10/21 02:00:45 Sleep for 5 seconds
2017/10/21 02:00:50 Sleep for 5 seconds
2017/10/21 02:00:56 Sleep for 5 seconds
2017/10/21 02:01:02 Sleep for 5 seconds
2017/10/21 02:01:08 Sleep for 5 seconds
2017/10/21 02:01:13 Sleep for 5 seconds
2017/10/21 02:01:19 Sleep for 5 seconds
2017/10/21 02:01:25 Sleep for 5 seconds
2017/10/21 02:01:31 Sleep for 5 seconds
2017/10/21 02:01:37 Sleep for 5 seconds
2017/10/21 02:01:42 Sleep for 5 seconds
2017/10/21 02:01:48 Sleep for 5 seconds
2017/10/21 02:01:54 Sleep for 5 seconds
2017/10/21 02:02:00 Sleep for 5 seconds
2017/10/21 02:02:06 Sleep for 5 seconds
2017/10/21 02:02:11 Sleep for 5 seconds
2017/10/21 02:02:16 Destroying volume [swarm_test_volume_974966]

----------------------------------------------------------------------
FAIL: swarm_test.go:96: SwarmTestSuite.TestFailoverAcrossSwarmNodes

swarm_test.go:115:
    c.Assert(status, Equals, true, Commentf("Container %s is not running", s.serviceName))
... obtained bool = false
... expected bool = true
... Container swarm_test_service_1048760 is not running

This error happens even before the failover tests are started.
Need to root the reason and found a solution.
A sample log:
https://ci.vmware.run/vmware/docker-volume-vsphere/1679

We are seeing this intermittent failure on CI when the swarm master is not able to communicate to the worker nodes.  Worker nodes are listed as "down" and hence, swarm master is not able to execute services on that particular node and as a result test fails.
VMs are up and running but for some reason, those nodes are listed as down for swarm cluster.
After one of the failed runs, following is the status of the swarm cluster. We can clearly see that both the nodes are down.
root@photon-msiZGdRAu [ ~ ]# docker node ls
ID                           HOSTNAME          STATUS  AVAILABILITY  MANAGER STATUS
2t6t0s5wbukdw5q8oix9zetmg *  photon-msiZGdRAu  Ready   Active        Leader
fczni2rxl4x9o4w8sj3ao0cyh    ubuntu            Down    Active
vvkmvc9brmo6wwgbkxafwj159    ubuntu            Down    Active
root@photon-msiZGdRAu [ ~ ]#

@ashahi1 to trigger multiple iterations of vDVD swarm tests to get a repro so that @govint can triage it further.

@govint Can you please take a look at this issue. I have uploaded all the logs.
Failed CI run: https://ci.vmware.run/vmware/docker-volume-vsphere/1679
Swarm on 6.0 ESX has one master node and two worker nodes.
All the nodes with swarm were up before the e2e tests started on 6.0 ESX.
But sometime during execution of e2e-tests, both the worker nodes went down - Nodes are still up and running but it's just that nodes show-up as down on swarm master node.
And a result swarm test failed.
Logs:
Master-241-vDVS.txt
Master-241-docker.txt
vmdk_ops.txt
Worker1-195-docker.txt
Worker1-195-vDVS.txt
Worker2-163-docker.txt
Worker2-163-vDVS.txt

We need some more information:

test suite and test name (failed scenario information)
how frequently this is occurring? (fail times/ #of attempts)
what is the reason behind worker going down? (known docker issue ??, docker version adds any mix?? etc.)
need to identify where is this interop causing issue.

/CC @tusharnt @ashahi1

@govint  Please adjust the label after your analysis, currently it has test and test-infrastructure ( kind of confusing)

@govint
In reply to this comment: https://github.com/vmware/docker-volume-vsphere/issues/1946#issuecomment-339740226
Note: When the tests started on 6.0, all the docker nodes were showing as - Ready and Active

Test suite
SwarmTestSuite
Test name
TestFailoverAcrossSwarmNodes

Note: Swarm worker nodes were showing as - Down and Active even before swarm test had started. So some test even before the above mentioned test might be causing the issue.

How frequently this is occurring?
Failed twice in last three runs
What is the reason behind worker going down? (known docker issue ??, docker version adds any mix?? etc.)
Not sure if it a docker issue since we only see this issue on 6.0 ESX. We never hit this issue on 6.5 ESX.

Please take a look at the following information and let me know if you need anything more. Logs have already been uploaded.

Looking at the logs, question also is whether before the swarm test were there any tests that restart docker, which may cause the master to mark those as down. Let me check.

it turned out CI testbed issue .. @ashahi1 has fixed the testbed and reran the failure builds.
re-ran of https://ci.vmware.run/vmware/docker-volume-vsphere/1694 passed so closing this now.


drop database does not work!

Which version are you using?
^2.3.7
Describe the bug
I have created a new database table “test” and I like to drop this table. I used the local storage to save the information. The database is existing and I can save and load information from it but when I try to remove the database after logout there is an error appearing “type error: table is undefined”. I don’t know why this error is appearing because I’m trying to remove the complete database. Usually, it doesn’t matter which tables are inside because I like to remove everything. I’m not sure if I did something wrong during initialization or if this is really a bug. I hope someone can help me to solve this problem. It is a little bit annoying because I only try to remove an existing database…
Expected behavior
The database “test” is removed after executing command
Example
My create database command:
nSQL()                 .createDatabase({                     id: DatabaseEnum.DATABASE_NAME,                     mode: DatabaseEnum.NANO_SQL_MODE,                     tables: [                         {                             name: DatabaseEnum.TABLE_NAME_AUTH,                             model: {                                 "id:uuid": {pk: true},                                 "key:string": {},                                 "value:string": {}                             }                         }                     ],                     version: DatabaseEnum.NANO_SQL_VERSION                 })                 .then(() => {                     callBack();                 })                 .catch((exception) => {                     DialogUtil.openDialogWithComponent(                         container,                         DialogOneButtonComponent,                         ExceptionUtil.getHeading(exception).toUpperCase(),                         ExceptionUtil.getMessage(exception)                     ); });
My drop database command:
nSQL()                 .dropDatabase(DatabaseEnum.DATABASE_NAME)                 .then(() => {                     callBack();                 }).catch((exception) => {                 DialogUtil.openDialogWithComponent(                     container,                     DialogOneButtonComponent,                     ExceptionUtil.getHeading(exception).toUpperCase(),                     ExceptionUtil.getMessage(exception)                 );             });
Constants:
DATABASE_NAME = test
NANO_SQL_MODE = LS
TABLE_NAME_AUTH = authorization
NANO_SQL_VERSION = 3

I am seeing the same problem with SQL mode LS or PERM. The create statement seems to work fine but not able to drop the database.

same issue here after calling  nSQL().dropDatabase("db-name")
on Chrome
TypeError: Cannot read property 'pkCol' of undefined
at eval (query.js?26b4:914)
at eval (utilities.js?e239:570)
at new Promise ()
at eval (utilities.js?e239:569)
at Array.map ()
at Object.exports.allAsync (utilities.js?e239:568)
at _nanoSQLQuery._upsert (query.js?26b4:913)
at eval (query.js?26b4:114)
at requireQueryOpts (query.js?26b4:63)
at new _nanoSQLQuery (query.js?26b4:113)
on Firefox
TypeError: table is undefined
node_modules nano-sql/core/lib/query.js:914
node_modules nano-sql/core/lib/utilities.js:570
node_modules nano-sql/core/lib/utilities.js:569
node_modules nano-sql/core/lib/utilities.js:568
node_modules nano-sql/core/lib/query.js:913
node_modules nano-sql/core/lib/query.js:114
node_modules nano-sql/core/lib/query.js:63
node_modules nano-sql/core/lib/query.js:113
node_modules nano-sql/core/lib/index.js:821
node_modules nano-sql/core/lib/index.js:109
node_modules nano-sql/core/lib/index.js:830
node_modules nano-sql/core/lib/index.js:283
node_modules nano-sql/core/lib/index.js:282
node_modules nano-sql/core/lib/query.js:1858
node_modules nano-sql/core/lib/adapters/indexedDB.js:83

Any updates?

It seems to work if I disconnect from DB before I run dropDatabase() command.
    nSQL().disconnect("my_db").then(() => {
      nSQL().dropDatabase("my_db").then(() => {
        console.log("Database dropped");
        loadDB();
      }).catch((err) => {
        console.log("Error dropping db");
        loadDB();
      })
    });


Missing X_test support for dataset

Currently, the dataset class supports an X, Y object that is gonna be divided into train and validation data.
Having a X_test and Y_test attribute inside is needed to understand if we are overfitting to the train data. Usually, for the normal user this should be set to None (X_test, Y_test set to none, and the consumers of the dataset will ignore these attributes)
In the case, that the dataset has this, the consumers like SMAC and ensemble builder will report the performance through time automatically.

Adressed in #36


Not being prompted to go on paid host plan

OCNZ host has added more than $1000 by bank transfer and has multiple Collectives already, but I was never asked to go on a paid host plan. This isn't right, is it? Like, I'm fine with it because we don't have any money anyway haha... but I want to make sure there's not a bug stopping the system working as intended.

It's saying my usage is above the starter plan, but fine for free plan?

OCNZ host has added more than $1000 by bank transfer

Which transactions?

It's saying my usage is above the starter plan, but fine for free plan?

More than 1 collective is fine for the Free Plan, but above the Single Host Plan.

Which transactions?

I added over $3000, which you can see on the host's budget.

I added funds by bank transfer to a Collective and it tripped the $1000 limit and asked me to go on a host plan. So I think it might have to do with the funds being added to the host budget before?


[WIP] - VPC Router Tab: Implement List and Add Forms for each of the tabs

@rhtyd The table/pagination fixes are submitted now.

@RitchieVincent

Wait or refresh after private gw create passes or fails
Refresh on s2s VPN connection add

@rhtyd Those two refresh fixes have been applied now.


Not enough space in the context's memory pool with ControlNet

Whenever I try to use ControlNet with an input image bigger than 512x512 I keep getting ggml_new_object: not enough space in the context's memory pool (needed 18122976, available 16777216).
I'm currently using a HIPBlas build and have plenty of vram available.
Is this expected or is there a way to manually increase the context memory pool in the code?

Checkout my commit, i did some mod. to avoid this.
https://github.com/leejet/stable-diffusion.cpp/pull/170/commits/6ee1c65bfdf112d7183cc3a9a967deffd36e9df2
The interesting part of this:
params.mem_size

I checked out that pr and it solves every issue I was having with the context's memory pool, amazing job. I'll be closing this issue then.

I still haven't looked carefully at the code so I'm not sure about how it works but maybe some check during compile time may optimize that parameter specifically for the gpu memory.

I think it depends on the loaded model file size (eg. lora model file size, controlnet model file size etc..), that's need to be fit in there.
I tested earlier some lora what is used with ComfyUI and the others, and modified the parameters untils my lora models fit in and don't fail at runtime.
So, if we found eg. a lora model file what is large enough, maybe thats will fail too.


Add sleep mode for power saving

https://github.com/Microsoft/devkit-sdk/pull/824

Code ready. No test case needed. Wait for API reference document.

Tested on version 1.3.7, it works well, so close it


fix typo

Signed-off-by: kelvinji<EMAIL_ADDRESS>

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


Convert from proc_macro2::Span to proc_macro::Span without panic

Right now, it looks like proc_macro2::Span::unwrap is the only way to get a proc_macro::Span, but that will panic if it's called outside a proc macro. Could there be a TryFrom/TryInto impl, or a method that returns Option<proc_macro::Span>?

Test

I think this is supported well enough by proc_macro::is_available().then(|| span2.unwrap()).

For people searching here, you will need to add
extern crate proc_macro;

in order to call proc_macro::is_available()
outside of a proc-maro = true crate.
The ergonomics of a single method call would be nice


Oh well, maybe you'll have a change of heart after seeing an amusing gif


URI-encoded spaces are not supported

See https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/Box With Spaces

Details here https://github.com/KhronosGroup/glTF/issues/1449

Sorry for the delay - I was moving across the country!
This (along with your other 2 PRs) have just been released as v1.0.10.

Thanks!


Delete Messages functionality

Added delete messages functionality
Sorry I forgot I doing this on my main branch instead of the branch I created for the functionality. Peace.

@otutukingsley
Can you comment with a screenshot of how the message card looks like right now?

@vicradon are we good to go??

Err, no. See what we'll do. Add the vertical dots (ellipsis) to the top right, so that when a user clicks on it, it brings up a small popover that shows more options. The delete button can then be put there.

Or I can ask the UI guy to hear his opinion.

Or I can ask the UI guy to hear his opinion.

ask the UI guy to hear his opinion. Also, show him the already existing one I have done. If he agrees with you, he should do the design and send me the Figma link to implement it.
The functionality is already there just to code up the design.

Or I can ask the UI guy to hear his opinion.

Ask the UI guy to hear his opinion. Also, show him the already existing one I have done. If he agrees with you, he should do the design and send me the Figma link to implement it. The functionality is already there it's just to code up the design. @vicradon

@vicradon


[5.5] Mark imported @completionHandlerAsync attrs as implicit

5.5 cherry-pick of https://github.com/apple/swift/pull/37170

Marking the attribute user-inaccessible is too extreme, as we still want it to appear in things like code completion and generated interfaces if it was explicitly written by the user. Instead, mark the attribute as implicit when it's added by the Clang Importer, which stops it from being printed in the generated interface.
In addition, fix a typo with the printing of @completionHandlerAsync.
Resolves rdar://76685011.

@swift-ci please test

@swift-ci please test Windows

@swift-ci please test Windows

Build failed
Swift Test OS X Platform
Git Sha - d4c6ed5dc378082151372ae4048943f39f7d186b


prisma runs out of connections

Prisma runs out of connections on the worker: Timed out fetching a new connection from the connection pool. More info: http://pris.ly/d/connection-pool (Current connection pool timeout: 10, connection limit: 20)
Already increased to 20, still same errors

updated to 50 connections


Create Twig Extension

Need to create a twig extension so the plugin can be used as:
{{ elixir('css/app.css') }}
Intended Behavior

If the manifest file does not exist, fallback to the "normalized" asset
If the versioned asset does not exist, fallback to "normalized" asset

Closing this issue out!


HTML string for custom measure display limited to 255 chars

Maybe not a bug, but certainly a limitation.

A workaround is to SET a variable to the desired HTML, then reference that variable from the extension's custom measure property.


Bet confirmation is not obvious

It is unclear how the betting mechanism works. There is a plus, minus, and "bet" button. It is not clear that the bet button locks in the value determined by the plus and minus.
One solution is to change the bet button to read "submit"
(Documentation in the readme does provide explanation on this mechanism, however it should be intuitive and not require documentation)

The completion of the bet placing is now obvious. I think a good thing to add would be greying out buttons that cannot be used.

The completion of the bet placing is now obvious. I think a good thing to add would be greying out buttons that cannot be used.

#65 addresses this further

Graying out button complete


Trying to get in touch regarding a security issue

Hello 👋
I run a security community that finds and fixes vulnerabilities in OSS. A researcher (@offalltn) has found a potential issue, which I would be eager to share with you.
Could you add a SECURITY.md file with an e-mail address for me to send further details to? GitHub recommends a security policy to ensure issues are responsibly disclosed, and it would help direct researchers in the future.
Looking forward to hearing from you 👍
(cc @huntr-helper)

This is added. You may report the issue as per the details in SECURITY.md I'm assuming this is different than the issue reported by @offalltn already, which was fixed & acknowledged in v0.8.3


How to serialize model to HDFS?

In documentation, it seems mleap only support save model to local file system, is there any way save to HDFS?

@wuxianxingkong Currently the recommended way to accomplish this is to first save the file locally, then move it to hadoop as a separate step.
There is a ticket currently to handle support for doing this in one step: https://github.com/combust/mleap/issues/379

Closing this, please see more details in #379.


YAML Requires Spaces after Colons

Mappings use a colon and space (": ") to mark each key: value pair.

The lack of space causes parsing issues for pre-commit on my installation, and adding the appropriate space fixes it.

@lkubb @s0undt3ch The template is broken out of the box due to pre-commit config syntax issues introduced in https://github.com/saltstack/salt-extension/commit/96f72c243cd87ccf7b54f043d6bbe020b3af5a6d:
pre-commit install --install-hooks
pre-commit installed at .git/hooks/pre-commit
An error has occurred: InvalidConfigError:
==> File .pre-commit-config.yaml
=====> while scanning a simple key
  in "<unicode string>", line 121, column 9
could not find expected ':'
  in "<unicode string>", line 122, column 9
An error has occurred: InvalidConfigError:
==> File .pre-commit-config.yaml
=====> while scanning a simple key
  in "<unicode string>", line 134, column 9
could not find expected ':'
  in "<unicode string>", line 135, column 9

This PR fixes the issue.

Not sure how that slipped in, it's not in the Copier template - sorry about that.
Note that it was at least considered to deprecate this tool and direct users to the Copier template (https://github.com/saltstack/salt-extension/pull/45#issuecomment-1919464696), which has been transferred to the salt-extensions org in the meantime.

Thanks, I will check it out! I was unaware of that template until you mentioned it here. I think it is not necessarily obvious to new users that it was preferred.


fixed [Bug]: On hovering card of users flickering issue #1095 & added…

Hi there,
@shyamtawli
Description
you can contact me if any more changes are required :
mail<EMAIL_ADDRESS>linkedin: www.linkedin.com/in/arnav-garg-221h/
Related Issues
[Bug]: On hovering card of users flickering issue #1095
Changes Proposed
There was a very small change overflow-x property is changed  when hovered which was responsible for height increase. I fixed and done this property to overflow:hidden on hover and it fixed.
Checklist

I had gone through readme.md and provided my details as per the instructions.

Screenshots

Note to reviewers

@Arnavgarg68 Thank you so much for your contribution! Your efforts are greatly appreciated and will go a long way in improving our project. Please feel free to share it with others and help us grow even further!


fix(acl) reject anonymous consumer

Previous PR related: https://github.com/Kong/kong/pull/5236
Summary(Copied from prior PR)
We started looking into leveraging the anonymous user functionality in Kong thats native for helping use multiple auth patterns on a given service/route:
https://docs.konghq.com/0.14.x/auth/#multiple-authentication
But we wanted to use OAuth2 + JWT programmatic auth, alongside the ACL plugin to control the proper authorization of given authenticated consumers. This is nice because different consumers can call the same proxy with preferred authentication patterns.
Out of the box what happens when a user is either missing or a bad token when doing the anonymous user pattern with OAuth2 + JWT + ACL plugins is a HTTP Status 403: "You cannot consume this service" response. Which to a client is not technically correct from their perspective with a bad/missing/expired tokens.
Full changelog
Implement: Modified handler.lua to change ACL behavior to support 401 for no credentials and n authenticated group(Such as the
Testcases Modified: /spec/03-plugins/18-acl/02-access_spec.lua
Fix #4480
cc @hishamhm @bungle

Looks like that logic breaks a # of test cases, will need to investigate:
https://travis-ci.org/Kong/kong/jobs/619161271?utm_medium=notification&utm_source=github_status
[  FAILED  ] 18 tests, listed below:
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 716: Plugin: ACL (access) [#postgres] Mapping to Consumer or Authenticated Groups should work with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 728: Plugin: ACL (access) [#postgres] Mapping to Consumer or Authenticated Groups should work with consumer without credentials
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 740: Plugin: ACL (access) [#postgres] Mapping to Consumer or Authenticated Groups should work with authenticated groups without credentials
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 777: Plugin: ACL (access) [#postgres] Simple lists should fail when not in whitelist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 799: Plugin: ACL (access) [#postgres] Simple lists should work when in whitelist with authenticated groups
1m[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 821: Plugin: ACL (access) [#postgres] Simple lists should not send x-authenticated-groups header when hide_groups_header flag true
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 843: Plugin: ACL (access) [#postgres] Simple lists should send x-authenticated-groups header when hide_groups_header flag false
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 863: Plugin: ACL (access) [#postgres] Simple lists should work when not in blacklist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 883: Plugin: ACL (access) [#postgres] Simple lists should fail when in blacklist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 907: Plugin: ACL (access) [#postgres] Multi lists should work when in whitelist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 929: Plugin: ACL (access) [#postgres] Multi lists should fail when not in whitelist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 951: Plugin: ACL (access) [#postgres] Multi lists should fail when in blacklist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 972: Plugin: ACL (access) [#postgres] Multi lists should work when not in blacklist with authenticated groups
1m[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 992: Plugin: ACL (access) [#postgres] Multi lists should not work when one of the ACLs in the blacklist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 1012: Plugin: ACL (access) [#postgres] Multi lists should work when one of the ACLs in the whitelist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 1032: Plugin: ACL (access) [#postgres] Multi lists should not work when at least one of the ACLs in the blacklist with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 1151: Plugin: ACL (access) [#postgres] Real-world usage should not fail when multiple rules are set fast with authenticated groups
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 1232: Plugin: ACL (access) [#postgres] Permits with authorized groups even when anonymous consumer is present

Thanks @jeremyjpj0916, I'll take a look at this this week.

@jeremyjpj0916 we switched the tasks last week as @hishamhm wanted to look at this. So I think he will get back to you soon.

Sounds good. There are a few ways to tackle this. Trying to do it native means re-writing a # of tests as we see in this PR now, adding a new param feels bad but would also ensure no unexpected consequences for existing users. Appreciate the diligence to stay on top of it during the holiday months here.

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

@jeremyjpj0916 sorry man, ended up swamped on other things but we really want to get back to this ASAP

@hishamhm not a problem, no rush on it. Just got back from a 5 day cruise and also on PTO rest of year and through most of early Jan. Will be online though to help discuss the feature/pr though throughout. Hope you all at Kong have a great EOY!

@jeremyjpj0916 I played a bit with your PR branch to get acquainted with the issue, and it seems that applying this change on top of it makes the test cases you listed above stop failing, but then second one of the two test cases you changed goes back to producing a 403 (the first one switches to 401 as you intended):
diff --git a/kong/plugins/acl/handler.lua b/kong/plugins/acl/handler.lua
index 5ebd96858..14fc37158 100644
--- a/kong/plugins/acl/handler.lua
+++ b/kong/plugins/acl/handler.lua
@@ -60,10 +60,6 @@ function ACLHandler:access(conf)

   local to_be_blocked

-  if not kong.client.get_credential() and not ngx.ctx.authenticated_groups then
-    return kong.response.exit(401, { message = "Unauthorized" })
-  end
-
   -- get the consumer/credentials
   local consumer_id = groups.get_current_consumer_id()
   if not consumer_id then
@@ -72,6 +68,10 @@ function ACLHandler:access(conf)
       kong.log.err("Cannot identify the consumer, add an authentication ",
                    "plugin to use the ACL plugin")

+      if not kong.client.get_credential() then
+        return kong.response.exit(401, { message = "Unauthorized" })
+      end
+
       return kong.response.exit(403, {
         message = "You cannot consume this service"
       })

I am not knowledgeable enough on the acl and auth plugins to understand precisely what's going on. Do you think this change is sufficient for the behavior you need or must the second one switch to 401 as well?
My reading of the test case that fails with the patch in this comment is the following: it uses a fixture plugin to set the authenticated group to admin but the route does have an entry set for it in the whitelist for anonymous. So, anonymous is whitelisted, but admin isn't, and you tried to access as admin. Should that produce a 401 or a 403?

@hishamhm I don't think this is a right change.
Some background:

acl plugin originally worked only with kong consumers that may have acls
we added support for ngx.ctx.authenticated_groups so that auth plugins leveraging 3rd party auth and when not doing consumer mapping you can just list array of strings in context (acls).
kong auth plugins that have consumer do also set credential by which user authenticated (a row in some auth plugin related table that has foreign key to consumer)
for credential we also allow setting virtual credential and that comes handy with e.g. ratelimiting where you don’t again need to have kong consumer or credential stored in kong db or plugin related table, thus only exists in context of request

I think Jeremys original was correct, the question just remained that is it ok to change the tests even when it is slightly on a breaking side. I have not looked which tests actually fail, so there might be something that is more problematic

the one that Jeremy quoted above where test expected 200 but got 401 feels like correct, but correctness might have to do whether plugin is doing whitelisting OR blacklisting. For whitelist I think it is correct, but for blacklisting i think 200 might be correct.

@jeremyjpj0916 / @hishamhm,
If we change:
  if not kong.client.get_credential() and not ngx.ctx.authenticated_groups then
    return kong.response.exit(401, { message = "Unauthorized" })
  end

to:
  if not kong.client.get_credential() and
     not kong.ctx.shared.authenticated_groups and
     not ngx.ctx.authenticated_groups then
    return kong.response.exit(401, { message = "Unauthorized" })
  end

There will be only two tests failing:
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 728: Plugin: ACL (access) [#postgres] Mapping to Consumer or Authenticated Groups should work with consumer without credentials
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 1256: Plugin: ACL (access) [#postgres] Forbids with authorized groups even when anonymous consumer is present

The second one is 401 (new) vs403 (old), but the first one is 401 (new) vs 200 (old). So the second one is ok, I think we can change the test. Let's focus on the first:
[  FAILED  ] spec/03-plugins/18-acl/02-access_spec.lua @ 728: Plugin: ACL (access) [#postgres] Mapping to Consumer or Authenticated Groups should work with consumer without credentials

      it("should work with consumer without credentials", function()
        local res = assert(proxy_client:get("/request", {
          headers = {
            ["Host"] = "acl8.com"
          }
        }))

        local body = cjson.decode(assert.res_status(200, res))
        assert.equal("anonymous", body.headers["x-consumer-groups"])
        assert.equal(nil, body.headers["x-authenticated-groups"])
      end)

So it seems to be an anonymous consumer that does have groups that is now failing.
And if that is the case, shouldn't we just change 403 to 401 when we don't find groups?
That is, changing this:
https://github.com/Kong/kong/blob/next/kong/plugins/acl/handler.lua#L71
And perhaps changing this:
https://github.com/Kong/kong/blob/next/kong/plugins/acl/handler.lua#L97-L100
To handle err and nil groups separately, e.g. if not err but nil groups then 401.
I can try to prepare a sister-pr to this where you can see in who what I am trying to propose here.


Fix small typo

I have to admit that I'm a bit confused because the typo shows up in the diff, but not in the actual document (https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/Route.md) which was fixed in #5530

@pshrmn I think there were two instances of the typo.
The one on line 96 was fixed in #5530. But there is still a typo on line 131

Ah, yes. That's what I get for just looking at the first ctrl + f result.


Fix crash on timeout

Escape strings correctly to protect against protocol String.Chars not implemented error.
Fixes #8
(Was #11 but GitHub is rubbish and doesnt let you edit the base branch of an open MR!)

Pull Request Test Coverage Report for Build 18

0 of 4 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 77.075%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/ueberauth_token/worker.ex
0
4
0.0%

Totals

Change from base Build 14:
0.0%

Covered Lines:
195

Relevant Lines:
253

💛  - Coveralls

Pull Request Test Coverage Report for Build 17

0 of 4 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 77.075%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/ueberauth_token/worker.ex
0
4
0.0%

Totals

Change from base Build 14:
0.0%

Covered Lines:
195

Relevant Lines:
253

💛  - Coveralls


Feature/ucd 1702 expose jest for serverless fns

Ticket Number
UCD-1702
Description of change
we put in a reporting thing for showing these new unit tests; adding the new unit tests to the reporting thing..
Checklist

[ ] Requires infrastructure changes
[ ] If adding or remove environment variables (e.g. in docker-compose.yaml) then I have updated the appropriate Helm chart
[ ] I have updated the documentation accordingly
[ ] My commit history in this PR is linear
[ ] New features have tests
[ ] Breaking change (team conversation required)

Important
Please do not merge from master (please only rebase). This keeps the history linear and easier to debug.

have done a test publish from my branch


RTSP streaming not working on phone/Mac

Hi, I'm on version v3.6.2 and live streaming is not working on iPhone or Mac Home App, but works fine on Apple Watch.
LiveView Stream: rtsps://lv1-app-prod.immedia-semi.com:443...

Any idea what's wrong?

Noticed a thread describing similar symptom: https://github.com/Sunoo/homebridge-camera-ffmpeg/issues/248
Could it be sth in the ffmpeg-for-homebridge lib you're using? I also observe same behavior on other plugins using same lib.

Same issue for me. When I attempt to view the live stream I get a no response message and the CPU on my RPi which is running Homebridge maxes out. Requires a restart to get it back to normal levels.

Same issue for me. When I attempt to view the live stream I get a no response message and the CPU on my RPi which is running Homebridge maxes out. Requires a restart to get it back to normal levels.

Also, it seems that it tries to keep the live stream open which sapped a load of power from the cameras batteries

Also, it seems that it tries to keep the live stream open which sapped a load of power from the cameras batteries

I've overhauled the livestream comand handling to ensure hte live view is closed down as soon as possible. can you verify?

Working well for me now. Thank you!

It’s working for me as well, thank you!


Add functions supporting thread pool only when it is enabled

Fixes #19691

ping for second review

This pull request is ready to merge

Merged to master branch. Thank you for the reviews.


[Spec] Fixing error when tests were run without a running agent

This PR reverts the changes made by [this commit] (https://github.com/azukiapp/azk/blob/5c2eeb003ad02f8f1bf3df89c6af3e3855bd3b9d/spec/spec_helpers/dustman.js#L69-L74) in the file spec/spec_helpers/dustman.js.
This was causing the following error when the test suite was run without a running agent:
Before all tasks:
  1) "before all" hook

events.js:72
        throw er; // Unhandled 'error' event
              ^
TypeError: Cannot call method 'unsubscribe' of undefined
    at azk-0.17.0 - spec/spec_helpers/dustman.js:71:23
    at process._tickDomainCallback (node.js:492:13)

LGTM!


Owner change: wagtail-modeltranslation

Details

Read the Docs project URL: https://readthedocs.org/projects/wagtail-modeltranslation/
Build URL (if applicable): https://wagtail-modeltranslation.readthedocs.io/en/latest/
Read the Docs username (if applicable):  InfoPortugal

Expected Result
I would like to require the ownership of the RTD project as the current owner is not a main committer of the github repo.
Actual Result
N/A

Hi @DiogoMarques29! I sent an email to the owner following our policy: http://docs.readthedocs.io/en/latest/abandoned-projects.html
I will come back here if I don't have a reply in 6 weeks.
/remind me about take action here in 6 weeks

I received a confirmation to add you as maintainer from the owner. I've already done this. Let me know if anything.


Fragment still dirty after save

After upgrading to version 1.13.x I have an issue where a fragment is dirty after saving the model. I tried to write a test for this but ultimately couldn't.
The fragment in question has two DS.attr('string') properties which are left as their default value null when I fetch the model. After I call save, it thinks I changed null to null and thus the fragment is dirty:
fragment.get('isDirty')
> true
fragment.changedAttributes()
> {property1:[null,null],property2:[null,null]}

My PUT method echoes back the same JSON which is passed to it (including these null properties). If I leave the two properties out/undefined, the fragment will not be dirty after the save.
git bisect blames this commit: @25a46885025b31e7420da07fcc1d3ffa04853f45

Cooooool, gotta love those uncaught regressions :grimacing: . I'll try to track this down this weekend.

Yeap, our tests detected this failure too. I'd be happy to build a failing test for this and submit a PR if needed.

After some more testing, I'm observing this behavior:
I load the model and the fragment is not dirty. Once I bind the model properties to a component, the fragment becomes dirty. changedAttributes thinks everything was changed from null to whatever the loaded value was.
So that explains why I couldn't write a unit test...

@workmanw failing tests are always welcome :grin:

I had the same problem in my project. Please consider also the DS.attr() attributes.

@slindberg Sorry for the delay! I opened a PR for the failing test. As @dwickern mentioned, it has something to do with the attribute, if you don't ever get the property, it seems fine.
I don't know if this is the exact issue I have because I'm pushing updates into the store in my case. But given that @25a4688 is also the culprit, they seem related.

Unfortunately this is a blocker for us. Is there any way I can help out here? I tried to debug it a little bit, but it's pretty clear I need to some knowledge of ember-data internals. Any guesses, I'd be happy to explore some options.

@dwickern, I fixed @workmanw's issue in #167, but I'm not entirely sure that it fixes yours. It sounds like you are able to build a version of MF and use it in your app. Would you mind building from master to see?

@slindberg I tried running against master but everything broke. Any chance you could backport the fix to the 1.13.x branch?
I'm running ember 1.13.10, ember-data 1.13.15, model-fragments 0.4.3

@dwickern I cherry picked the fixes onto the release-1-13 branch, which is tracking the 1.13.x series. Once you verify, I'll release v1.13.2 and v2.1.1. Thanks for testing :+1:

@slindberg looks good :+1:

Sorry for the delay, finally got around to releasing v1.13.2, v2.0.2, and v2.1.1 with fixes for this issue.

@slindberg thanks so much! Could you publish v1.13.2 and v2.0.2 to npm?

Oh damn sorry about that, I don't know how that happened. Should be published now.


lower log level for spammy message

Description
Suppress warning
For future implementers, gave https://www.baeldung.com/hibernate-immutable a shot on the accessor methods and https://docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/annotations/GenerationTime.html to no avail.
While hibernate as a whole seems to understand that these fields are not to be updated, it still calls this method to simulate/stage something.
Issue
https://ucsc-cgl.atlassian.net/browse/SEAB-4340
Please make sure that you've checked the following before submitting your pull request. Thanks!

[x] Check that you pass the basic style checks and unit tests by running mvn clean install
[x] Follow the existing JPA patterns for queries, using named parameters, to avoid SQL injection
[x] Check the Snyk dashboard to ensure you are not introducing new high/critical vulnerabilities
[x] Assume that inputs to the API can be malicious, and sanitize and/or check for Denial of Service type values, e.g., massive sizes
[x] Do not serve user-uploaded binary images through the Dockstore API
[x] Ensure that endpoints that only allow privileged access enforce that with the @RolesAllowed annotation
[x] Do not create cookies, although this may change in the future

should be hotfix actually https://github.com/dockstore/dockstore/pull/4892


Is path-based serving supported?

/kind feature
Hello everyone!
I see that the current way to serve KServe models is host-based. That is, the URL of a model looks something like this:

http://<model-name>-<namespace>.<domain>.

This way, one needs to create a DNS record and a certificate for the sub-domain <model-name>-<namespace> where the model is hosted.
So, my question is: is there an alternative way? A path-based way?.
In that case, one should not bother about DNS records and certificates. The URL of the model could look something like this:

http://<domain>/<namespace>/<model-name>

I couldn't find any issues with a similar question. Is something like this currently supported?
If not, then what are the difficulties of such a feature?

in standalone mode (serverless), the routes are coming from knative,
https://knative.dev/docs/serving/services/private-services/
yes, the wildcard root-based certificates are not easy to get.

@kandrio There is no difficulties and I created the issue 2 years ago but did not find person signing for this contribution.

@yuzisun Thanks for pointing me to the issue. It was really helpful and it got me in sync with the proposal.
I believe that supporting path-based serving would be a great feature for KServe. And I'm interested in taking up the implementation.
Let me expose an initial draft that I have in mind.
Design
At the end of the day, the model should be exposed under a URL that looks like this:

status.url: <Scheme>://<IngressDomain>/<Namespace>/<Name>

Here's a list of steps that I think would make sense for  supporting path-based serving:

Extend the inferenceservice-config ConfigMap with a urlTemplate field.

This field essentially will be a template for the inferenceservice.status.url field.
It will allow the user to enable path-based serving by setting: "urlTemplate": "{{ .Scheme }}://{{ .IngressDomain }}/{{ .Namespace }}/{{ .Name }}"
This will have default value: "". In that case, the KServe controller works as before.

Extend the KServe controller to add an extra rule in the top-level VirtualService that it creates for each model.

The KServe Controller will add the extra rule in the case that the "urlTemplate" is path-based.
This extra rule will route all requests that reach the public Gateway, with a /<namespace>/<model-name> prefix (path-based requests), to the local Gateway.
It will also overwrite their Host header to: <model-name>-<component>-default.<namespace>.svc.cluster.local in order for the local Gateway to route it to the correct Service.
This is how this rule will look like:

- headers:
    request:
      set:
        Host: <model-name>-<component>-default.<namespace>.svc.cluster.local
  match:
  - authority:
      regex: <host-template>
    gateways:
    - <public-gateway>
    uri:
      prefix: /<namespace>/<model-name>/
  - authority:
      regex: <host-template>
    gateways:
    - <public-gateway>
    uri:
      exact: /<namespace>/<model-name>
  rewrite:
    uri: /
  route:
  - destination:
      host: <local-gateway-service>
      port:
        number: 80
    weight: 100

NOTE: The KServe Controller will look at the ingressDomain field of ConfigMap inferenceservice-config in order to construct the match.authority.regex field of the VirtualService.

Extend the KServe controller to expose a path-based URL (instead of the host-based one) in the status.URL field of the InferenceService.

The KServe controller will generate the isvc.status.url field based on the value of urlTemplate.
If "urlTemplate": "", then the controller falls back to its default behavior and it will generate the isvc.status.url as it does currently.

@kandrio Thanks for proposal! Overall it looks great, a few details might need to pay attention:

There are two different names: InferenceService name and model name, sometimes they can be different as a service can host multiple models, so we need to encode both service name and model name in the url path.
There are two inference protocols kserve currently supports: v1 and v2, the endpoint paths are slightly different between the two, for example the predict path for v1 is v1/models/<model-name>:predict while for v2 it is v2/models/<model-name>/infer. The switch for v1 or v2 can be based on the protocolVersion field on InferenceService spec.

The virtual service template might look like following:
- headers:
    request:
      set:
        Host: <service-name>-<component>-default.<namespace>.svc.cluster.local
  match:
  - authority:
      regex: <host-template>
    gateways:
    - <public-gateway>
    uri:
      prefix: /<namespace>/<service-name>/<protocol-version>/models/<model-name>
  rewrite:
    uri: /<protocol-version>/models/<model-name>
  route:
  - destination:
      host: <local-gateway-service>
      port:
        number: 80
    weight: 100

@yuzisun thanks for the reply! I have a few follow-up questions regarding your comment:

Regarding the first bullet, I see:

a service can host multiple models

I actually am not in sync with this. I haven't found any piece of documentation on how to create an InferenceService that contains more than one models (e.g: predictors). Could you point me to any docs that show how this feature works?

Regarding the VirtualService template, I see that:

you propose to match the prefix: /<namespace>/<service-name>/<protocol-version>/models/<model-name>
But this won't match requests with prefix: /<namespace>/<service-name>/v2/health/live or just /<namespace>/<service-name>/ for example. These requests check the liveliness of the InferenceService
Here's the list of all the possible paths we want to match: https://github.com/kserve/kserve/blob/343bae6e501e4c6a68f624c9715bde6bd2774796/python/kserve/kserve/model_server.py#L69-L95

I assume you are talking about exposing each model in a separate path-based URL, especially given you first comment about multi-model serving. Again, I may be missing something here, so feel free to clarify anything.
In my proposal, I am talking about exposing the entire InferenceService, regardless of the models that it contains. So, I assume that this would be a good first iteration anyway, since it would factor in all the models served by the InferenceService.
What do you think?

Hello everyone!
I created a pull-request for this. Let's continue the discussion there:

https://github.com/kserve/kserve/pull/2357

@yuzisun thanks for the reply! I have a few follow-up questions regarding your comment:

Regarding the first bullet, I see:

a service can host multiple models

I actually am not in sync with this. I haven't found any piece of documentation on how to create an InferenceService that contains more than one models (e.g: predictors). Could you point me to any docs that show how this feature works?

All KServe serving runtimes support loading multiple models from a model repository specified by storageUri, the yaml isn't different and you can call the model by specifying $modelName on the the url path.

Regarding the VirtualService template, I see that:

you propose to match the prefix: /<namespace>/<service-name>/<protocol-version>/models/<model-name>
But this won't match requests with prefix: /<namespace>/<service-name>/v2/health/live or just /<namespace>/<service-name>/ for example. These requests check the liveliness of the InferenceService
Here's the list of all the possible paths we want to match: https://github.com/kserve/kserve/blob/343bae6e501e4c6a68f624c9715bde6bd2774796/python/kserve/kserve/model_server.py#L69-L95

You can actually only match the prefix /<namespace>/<service-name> part and strip it when rewriting the url. The original URI was matched based on prefix /<namespace>/<service-name>, the rewrite will replace the corresponding matched prefix with empty string and forward the remaining actual inference protocol url path.

I assume you are talking about exposing each model in a separate path-based URL, especially given you first comment about multi-model serving. Again, I may be missing something here, so feel free to clarify anything.
In my proposal, I am talking about exposing the entire InferenceService, regardless of the models that it contains. So, I assume that this would be a good first iteration anyway, since it would factor in all the models served by the InferenceService.
What do you think?

Hi @kandrio , thanks for the proposal, that is a feature we needed for a while. You can find our use cases and requirement here.
Currently, we are using an additional virtual service to route the path-based request to the cluster-local-gateway. See the example below. It will be great that KServe can support it natively.
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: service1-path-based-endpoint
  namespace: user1-ns1
spec:
  gateways:
  - istio-system/ingress-gateway
  hosts:
  - api.example.com
  http:
  - name: "service1-path-based-routes"
    match:
    - uri:
        prefix: "/user1-ns1/service1/"
      ignoreUriCase: true
    rewrite:
      uri: "/"
    route:
    - destination:
        host: local-gateway.istio-system.svc.cluster.local
        port:
          number: 80
      headers:
        request:
          set:
            Host: service1.user1-ns1.svc.cluster.local
      weight: 100

Instead of urlTemplate, maybe having an additional pathTemplate to work with the existing domainTemplate to define the path will be better?
domainTemplate: {{` "{{.Name}}-{{.Namespace}}.{{.Domain}}" `}}
pathTemplate: {{` "{{.Namespace}}/{{.Name}}" `}} # user need to avoid conflict of the path by themselves.

Above will generate a inferenceService URL with the following format:
"{{.Name}}-{{.Namespace}}.{{.Domain}}/{{.Namespace}}/{{.Name}}"

If the pathTemplate is empty, then it will be host-based routing.
What do you think?


cross compile issues

hi guys,
i cross compile the sdk with gcc of 4.8.3 and meet some problem.
[  0%] Building CXX object AVSCommon/CMakeFiles/AVSCommon.dir/AVS/src/ExceptionEncounteredSender.cpp.o
In file included from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskThread.h:25:0,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h:24,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h:26,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp:23:
/home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h: In function 'void alexaClientSDK::avsCommon::utils::threading::forwardPromise(std::shared_ptr<std::promise >, std::future*) [with T = void]':
/home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h:152:11: error: invalid use of incomplete type 'class std::future'
future->get();
^
In file included from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h:21:0,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h:26,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp:23:
/opt/toolchain/arm-2014.05/arm-none-linux-gnueabi/include/c++/4.8.3/future:113:11: error: declaration of 'class std::future'
class future;
^
In file included from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskThread.h:25:0,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h:24,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h:26,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp:23:
/home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h:153:12: error: invalid use of incomplete type 'class std::promise'
promise->set_value();
^
In file included from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h:21:0,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h:26,
from /home/alexa/avs-device-sdk-1.1.0/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp:23:
/opt/toolchain/arm-2014.05/arm-none-linux-gnueabi/include/c++/4.8.3/future:122:11: error: declaration of 'class std::promise'
class promise;
can you guys give some advie,

recommend to update the toolchain, the SDK source code uses lots of new C++ features

@paragone your compiler does not meet the minimum requirements per https://github.com/alexa/avs-device-sdk/wiki/Linux-Quick-Start-Guide#minimum-requirements-and-dependencies. Please update to GCC 4.8.5 or later.

Mine gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)
4%] Building CXX object AVSCommon/CMakeFiles/AVSCommon.dir/AVS/src/CapabilityAgent.cpp.o
/usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake)
[  4%] Building CXX object AVSCommon/CMakeFiles/AVSCommon.dir/AVS/src/DialogUXStateAggregator.cpp.o
In file included from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskThread.h:23:0,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h:22,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/AVS/include/AVSCommon/AVS/DialogUXStateAggregator.h:28,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/AVS/src/DialogUXStateAggregator.cpp:16:
/home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h: In function ‘void alexaClientSDK::avsCommon::utils::threading::forwardPromise(std::shared_ptr<std::promise >, std::future*) [with T = void]’:
/home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h:150:11: error: invalid use of incomplete type ‘class std::future’
future->get();
^
In file included from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h:19:0,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/AVS/include/AVSCommon/AVS/DialogUXStateAggregator.h:28,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/AVS/src/DialogUXStateAggregator.cpp:16:
/usr/arm-linux-gnueabi/include/c++/5/future:115:11: note: declaration of ‘class std::future’
class future;
^
In file included from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskThread.h:23:0,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h:22,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/AVS/include/AVSCommon/AVS/DialogUXStateAggregator.h:28,
from /home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/AVS/src/DialogUXStateAggregator.cpp:16:
/home/junlon2006/workspace/amazon/sdk-folder/sdk-source/avs-device-sdk/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h:151:12: error: invalid use of incomplete type ‘class std::promise’
promise->set_value();
^
In file included from /home/junlon2006/workspace/amazon/sdk-folder/sdk-s

@junlon2006
When I cross-compile, I have the same error as you. How do you solve it?
My cross-compilation toolchain is csky-linux-gcc v6.3

@junlon2006
When I cross-compile, I have the same error as you. How do you solve it?
My cross-compilation toolchain is csky-linux-gcc v6.3

hf works

@junlon2006
What do you mean? Please say more clearly, thank you!


fixes issue Hyperlink not visible under dark mode ##7265

Fixes: #7265
Fixes: https://github.com/meshery/meshery/issues/7265
Notes for Reviewers
This PR fixes #7265
@leecalcote
Signed commits

[ ] Yes, I signed my commits.

Click on the image for a new way to code review

Legend

When this was added? :eyes:

@Chadha93 screenshot of the changes

@Chadha93 screenshot of the changes

Oh no I meant the UI changes screenshots.

@Chadha93
it looks good and matching with the theme both in dark and light mode so I have not made further changes

@Chadha93 actually that issue is already resolved by someone recently in #7191

@Chadha93 actually that issue is already resolved by someone recently in #7191

Gotcha, please fix the eslint error then.

@Chadha93 that was added only about five hours ago. I don’t know that we want to keep it. I’m interested in your and everyone’s opinion after you try it a few times. It was added facilitate having Meshery listed in on opensourcehub dot io website.

@leecalcote are you  referring to meshery logo or the hyperlink link color which mixed up with the background.
because I see the link theme-color issue is not yet updated.


Only setting tags from initialize, if there are tags to set

👍  kinda urgent on my side

I very much agree with this. But you should make this change on the main repo.
👍

Derp.


Error when converting Json model generated by XGBoost to Pytorch

Hello,
I am trying to convert my model into a pytorch model. My model is generated by XGBoost in python and is saved in the Json format, as follows:
.
.
.
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, stratify=Y, random_state=1)
enc = OneHotEncoder(handle_unknown='ignore')
Y_train = enc.fit_transform(y_train.values.reshape(-1,1)).toarray()
Y_test = enc.fit_transform(y_test.values.reshape(-1,1)).toarray()
train = np.argmax(Y_train,axis =  1)
test = np.argmax(Y_test, axis = 1)
clf = XGBClassifier(learning_rate=0.1,
n_estimators=400,
max_depth=5,
min_child_weight=1,
gamma=0,
subsample=0.8,
colsample_bytree=0.8,
objective='multi:softprob',
nthread=4,
num_class=3,
seed=27,
predictor = 'gpu_predictor',
tree_method='gpu_hist',
gpu_id=0)
clf.fit(X_train,train.ravel(),
verbose=False,
early_stopping_rounds=50,
eval_metric='merror',
eval_set=[(X_test, test.ravel())])
y_predict = clf.predict(X_test)
y_train_predict = clf.predict(X_train)
clf.save_model('model.json')
model = XGBClassifier()
model.load_model('model.json')
here i try to convert it
from hummingbird.ml import convert
modelc = convert(model, 'pytorch', extra_config={"n_features":54})
modelc.save('hb_model')
###ERROR

ValueError                                Traceback (most recent call last)
 in
4
5
----> 6 modelc = convert(model, 'pytorch', extra_config={"n_features":54})
7 #modelc.save('hb_model')
.
.
.
ValueError: invalid literal for int() with base 10: 'chroma_stft
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Do you know want can i possibly be doing wrong?

Hi! Maybe but converting the model to JSON and back some field get erased
in the process. I will look into it and keep you posted.
On Thu, Dec 2, 2021, 8:33 AM rodsang @.***> wrote:

Hello,
I am trying to convert my model into a pytorch model. My model is
generated by XGBoost in python and is saved in the Json format, as follows:
.
.
.
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2,
stratify=Y, random_state=1)
enc = OneHotEncoder(handle_unknown='ignore')
Y_train = enc.fit_transform(y_train.values.reshape(-1,1)).toarray()
Y_test = enc.fit_transform(y_test.values.reshape(-1,1)).toarray()
train = np.argmax(Y_train,axis = 1)
test = np.argmax(Y_test, axis = 1)
clf = XGBClassifier(learning_rate=0.1,
n_estimators=400,
max_depth=5,
min_child_weight=1,
gamma=0,
subsample=0.8,
colsample_bytree=0.8,
objective='multi:softprob',
nthread=4,
num_class=3,
seed=27,
predictor = 'gpu_predictor',
tree_method='gpu_hist',
gpu_id=0)
clf.fit(X_train,train.ravel(),
verbose=False,
early_stopping_rounds=50,
eval_metric='merror',
eval_set=[(X_test, test.ravel())])
y_predict = clf.predict(X_test)
y_train_predict = clf.predict(X_train)
clf.save_model('model.json')
model = XGBClassifier()
model.load_model('model.json')
here i try to convert it
from hummingbird.ml import convert
modelc = convert(model, 'pytorch', extra_config={"n_features":54})
modelc.save('hb_model')
###ERROR
ValueError Traceback (most recent call last)
in
4
5
----> 6 modelc = convert(model, 'pytorch', extra_config={"n_features":54})
7 #modelc.save('hb_model')
.
.
.
ValueError: invalid literal for int() with base 10: 'chroma_stft
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Do you know want can i possibly be doing wrong?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/microsoft/hummingbird/issues/551, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AALWR54KQLNXUI23XBDK5LTUO6NVBANCNFSM5JHSCZWA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Thank you, looking foward hearing from you !!

I'd just like to say that I tried to do it without saving in jason :
clf.save_model('model')
model = XGBClassifier()
model.load_model('model')
#---------------------------------------
from hummingbird.ml import convert
modelc = convert(clf, 'pytorch')
#modelc.save('hb_model')
!!!ERROR
ValueError: invalid literal for int() with base 10: 'chroma_stft'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
and the same error happens

I see. What's the XGBoost version you are using?

'1.5.0'  Im using this one

hello, I changed it to this :
`from hummingbird.ml import convert
m=convert(model, "pytorch")
print(m)
#modelc = convert(clf, 'pytorch')
m.save('hb_model')`
And I could download a file , it comes with "hb_model.zip" It's a zipped folder. I try to open it and I can't. I just wanted to get a pytorch model... Is this normal ? this ZIP folder is expectable? how can I get my pytorch model? I tried to save it as m.save('hb_model.pt')  and the saved file is hb_model.pt.zip, again a zipped folder

Yes our model is a zip because it contains a bunch of stuff, not just the pytorch model. But you can load the zip file using hummingbird.ml.load('hb_model'). From there you should see the pytorch model.

from hummingbird.ml import convert
m=convert(model, "pytorch")
#print(m)
#modelc = convert(clf, 'pytorch')
m.save('hb_model')
mh=m.load('hb_model')
print(mh)
Ok, its no giving an error.. But Id like to save this pytorch model in a file because i need to use it later for something else (I neet to load this pytorch model in another place)

Ok in this case you can just save m.model. m.model is a pytorch model so you can use it as such.

closed with #562


Col offset not implmented in TypeScript

🐛 Bug Report
When using @smooth-ui/core-sc with TypeScript (v 9.0.1), one cannot add an offset to a Col in a Row in a Grid.
To Reproduce
Steps to reproduce the behavior:

Create a TypeScript project with TSLint
Install @smooth-ui/core-sc version 9.0.1
Create a simple component with Grid, Row, Col
Try to set property oxs or related to any value
TSLint highlights a TS2322 error.

Expected behavior
According to documentation an JavaScript implementation, Col should have offset properties.
Possible fix
The JS properties are defined here:
https://github.com/smooth-code/smooth-ui/blob/ef92be3088183f26bf486a6a235e4a1c54266a88/packages/shared/core/Col.js#L139
The TS definition of ColProps is here:
https://github.com/smooth-code/smooth-ui/blob/ef92be3088183f26bf486a6a235e4a1c54266a88/packages/shared/core/index.d.ts#L262

Hello @GuillaumeDesforges, thanks for reporting. Help is welcome.

In addition to my PR fixing this issue, there are more errors in .d.ts when we compare it to PropTypes (i.e. boolean sm, xs values...)
What approach do we choose when solving related problems? I can propose creating and fixing issues or maybe some kind of milestone for ts/propTypes consistency.


DOR Services API change to support updates of attributes needed by H2

It is possible that this should be "Do full round trip of descMetadata".  Currently we don't allow descMetadata to be updated in dor-services-app: https://github.com/sul-dlss/dor-services-app/blob/master/app/services/cocina/object_updater.rb#L106-L109
See https://github.com/sul-dlss/dor-services-app/pull/961

Fixed by https://github.com/sul-dlss/dor-services-app/issues/1398


Liquibase creates table "user" in lower case for H2 database

Environment
Liquibase Version: 4.7.0
Liquibase Integration & Version: spring-boot 2.6.3
Liquibase Extension(s) & Version: -
Database Vendor & Version: H2 1.4.200
Operating System Type & Version: -
Description
Since liquibase version 4.7.0 my spring-boot integration tests fail for a table named "user" with the following exception: org.h2.jdbc.JdbcSQLSyntaxErrorException: table "USER" not found.
The changelog file uses tableName="user" in the createTable section for creating this table.
I checked the generated SQL-statement for this table which looks like this:
CREATE CACHED TABLE "PUBLIC"."user" (...)
In version 4.6.2 the tests still worked. The generated SQL-statement in this version looked like this:
CREATE CACHED TABLE "PUBLIC"."USER" (...)
So apparently the table name changed to lower-case in the SQL-statement.
However, the "user" table is the only table which is created in lower-case after the version update. All other tables are also defined in lower-case in the changelog, but the generated SQL is still in upper-case.
I noticed you changed the H2 version with 4.7.0 (https://github.com/liquibase/liquibase/pull/2285) which added some new H2 keywords, including "user". It seems there is some sort of special treatment for this case.
I found a workaround for this issue by explicitly using an upper-case name in the createTable section of the changelog. Still I think it's confusing that only this table uses lower case.
Steps To Reproduce
List the steps to reproduce the behavior.

create a changlog file with a table named "user"
run a spring-boot integration test which uses the "UserRepository"

Actual Behavior
A clear and concise description of what happens in the software with the version used.

org.h2.jdbc.JdbcSQLSyntaxErrorException: table "USER" not found exception is thrown

Expected/Desired Behavior
A clear and concise description of what happens in the software after a fix is created and merged.

spring-boot integration tests can handle tables which uses H2 keywords as table name, even when defined in lower case.

@ssg-stsc Thanks for submitting this. There is a bit of discussion on the same/similar issue here https://github.com/liquibase/liquibase/issues/2385 if you wanted to follow along there as well. Will work towards resolution of these both. Thanks.

Thanks for the mentioned issue, I was trying to find a similar issue but apparently missed this one.
I am curious for any updates on this, but in the meantime I will use my workaround and change the table name.

duplicate/tracking fix/discussion https://github.com/liquibase/liquibase/issues/2385


file (/var/www/drupal8dev_install.sh) is absent, cannot continue

Think I've worked it out, fix incoming...

Ooops, wrong project - sorry for the noise.


Update plugin software catalog integration docs

Hey, I just made a Pull Request!
We updated the docs describing how to integrate a plugin with the software catalog.
:heavy_check_mark: Checklist

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

Hi, thanks! Would you mind adding a DCO signature on this? There's some info in the build details.