[AMQ-7309] Update to jakarta.jms/jakarta.jms-api:2.0.3

API update only
Throw UnsupportedOperationException
Disable activemq-camel from build

As discussed on the mailing list, I did it already and I was about to create the PR.

By the way, I'm using Geronimo spec to be aligned with camel and OSGi.

@jbonofre this change is purely packaging skeleton. I know you were working on full JMS 2.0 support along w/ big things like replicated-kahadb. I thought I'd pitch in to help get the ball rolling on the low-hanging fruit. There is no real code change here, so I think its good to merge and should slide in with your real JMS 2.0 impl work.
Reviewing other projects and frameworks, I think the geronimo vs jakarta is the real question here.
If we go geronimo users will have this to look forward to:
gerinomo 1.1 -> geronimo 2.0 -> jakarta 2.0 -> jakarta 3.0
Alternatively, if we go jakarta now, users have this:
gerinomo 1.1 -> jakarta 2.0 -> jakarta 3.0
CXF has transitioned many spec jars to jakarta, and I suspect Camel will do the same as well. I think the alignment makes more sense for CXF and Camel to consume the dep ActiveMQ (being as ActiveMQ is the JMS provider and those ride on top of), or simply provide the .
Either way, the JEE transition is going to force users into being savvy with Maven  and I do not think there is any way around that.
I'd be interested in hearing others' perspective as well.

Either way, the JEE transition is going to force framework devs and users into being savvy with Maven and I do not think there is any way around that.
I'd be interested in hearing others' perspective as well.

@mattrpav for a usability perspective, whatever approach we take, I think just being helpful on the website is sufficient -> have a page that clearly states what is supported for JMS, what isn't, what would be the required/removed dependencies for maven, gradle and some concise examples

@jbonofre @rmannibucau I've updated this round of the PR to include geronimo-jms for the karaf artifacts. While there is no bigger Karaf fan than me, I think using jakarta as the baseline makes more sense.
Please here me out on these points below and if you still think we should go geronimo all the way, I'll make the change.
Most users are going to see activemq through the lens of activemq-client and its dependencies:
   activemq-client
      + jakarta.jms-api-2.0.3

vs
   activemq-client
      + geronimo-jms_2.0_spec-1.0-alpha-2.jar

Shortly, we'll have:
  activemq-client-jms3
      + jakarta.jms-api-3.0.0.jar

The geronimo part doesn't appear to be a stable release
What even is geronimo? How does this fit in with Jakarta? What is a 'spec'?
Shortly, we'll want to add a client for Jakarta 3 support. The dependency is going to flip on users again.
There is no geronimo-jms for Jakarta 3
Optionally, I'm happy to package up jakarta jms api jars as bundles for Karaf (which we may need to do anyway for JMS 3)

Thank you for hearing me out

Upvote for jakarta.jms-api

Up vote for geronimo-jms_2.0_spec-1.0-alpha-2

Removing the whole of activemq-camel reall seems like something deserving of its own JIRA vs sneaking it into a commit with the title "JMS 2.0 API clean-ups"

@tabish121 agreed. The intent here isn't to 'sneak' it in. A workable solution didn't present itself while making the API change. Before anything is merged, I'll separate out the changes.

We can make it stable now if it helps
A EE home at apache as jakarta.x is at eclipse for artifact except it is under a single umbrella vs per spec and spec lead + it supports osgi whereas jakarta does not want to (we asked aiming at dropping these geronimo artifacts)
It is the same with jakarta anyway + point 1 so guess it is still worse to use jakarta for users
Ultilately it should go at geronimo since it is where the most EE+OSGi  work is done lately (including capabilities)

So overall if you want OSGi you have to use geronimo, if not it is asf vs eclipse only.

"Either way, the JEE transition is going to force framework devs and users into being savvy with Maven and I do not think there is any way around that."
Its really not that dissimilar to the situation where where people could use any of the many particular 2.0 API jars they desire in their applications already, even with a 1.1 impl if they want to, prior to this change (which I dont think its a good idea personally).

Note that by specifically adding an implementation of setJMSDeliveryTime that throws UOE, this change will likely actually break sending of ActiveMQ 5.x messages through other existing JMS 2 providers that handle being given JMS 1.x message objects not implementing the method, as they wont handle it being implemented but deliberately throwing UOE. Unlike the session etc they cant check any version metadata first to avoid the method as all they see is the message.

Note that by specifically adding an implementation of setJMSDeliveryTime that throws UOE, this change will likely actually break sending of ActiveMQ 5.x messages through other existing JMS 2 providers that handle being given JMS 1.x message objects not implementing the method, as they wont handle it being implemented but deliberately throwing UOE. Unlike the session etc they cant check any version metadata first to avoid the method as all they see is the message.

@gemmellr That is an extreme edge use case-- one that is acceptable for a RC release. These JMS 2.0 methods won't be unimplemented for long.  Feel free to add a documentation note if you know of some users that have this scenario and would be impacted.

1. We can make it stable now if it helps

2. A EE home at apache as jakarta.x is at eclipse for artifact except it is under a single umbrella vs per spec and spec lead + it supports osgi whereas jakarta does not want to (we asked aiming at dropping these geronimo artifacts)

3. It is the same with jakarta anyway + point 1 so guess it is still worse to use jakarta for users

4. Ultilately it should go at geronimo since it is where the most EE+OSGi  work is done lately (including capabilities)

So overall if you want OSGi you have to use geronimo, if not it is asf vs eclipse only.

@rmannibucau I know what Geronimo is ;-). My point was to consider the perspective of new-to-Java and new-to-JMS users that are using ActiveMQ for the first time.
The latest version of the PR provides gerinomo for OSGi/Karaf users (myself included) and has a the Jakarta jar for non-OSGi use cases.

Note that by specifically adding an implementation of setJMSDeliveryTime that throws UOE, this change will likely actually break sending of ActiveMQ 5.x messages through other existing JMS 2 providers that handle being given JMS 1.x message objects not implementing the method, as they wont handle it being implemented but deliberately throwing UOE. Unlike the session etc they cant check any version metadata first to avoid the method as all they see is the message.

@gemmellr That is an extreme edge use case-- one that is acceptable for a RC release. These JMS 2.0 methods won't be unimplemented for long. Feel free to add a documentation note if you know of some users that have this scenario and would be impacted.

Based on how slowly things can happen sometimes I would push back against saying anything like "these methods won't be unimplemented for long" as who knows if/when it will be finished.
@gemmellr - Can you describe this scenario in more detail or a specific use case? I want to make sure we are not breaking anything with throwing unimplemented exceptions and how big of an edge case it is.

That is an extreme edge use case-- one that is acceptable for a RC release.

I'm not sure I'd agree that bridging between different systems was 'extreme-edge'. Not the primary use, sure, but hardly strange and unusual either.
Not sure I have seen mention of doing 'RC releases' before. Are these to be named 5.17.0-rc1, rc2 etc given it is targeting main, or is it for after that as a series of 5.18.0-rcX? Might seem odd to use 5.17.0 given that should probably be out and done already (and would then be looking for 5.17.1 etc for bug fixes), while this is unimplemented. Given that it even seems a stretch calling it an -rc, to me that usually implies near-completion.

@gemmellr - Can you describe this scenario in more detail or a specific use case? I want to make sure we are not breaking anything with throwing unimplemented exceptions and how big of an edge case it is.

Take an ActiveMQ 5 JMS message object, and send that JMS Message somewhere else using a different JMS client. E.g receive from a 5.x broker and publish using the same message object to another type of broker...could be due to communicating with different teams, companies, or handling a system transition, etc.
As part of that process if the other provider is actually a JMS 2 client, it will try to stamp the JMSDeliveryTime on the original message object like its meant to. It may have handled the method not being implemented at all on JMS 1.x message objects since thats not so unexpected due to spec transition, but will likely fail if the method actually exists but simply throws UOE as thats unexpected.

@gemmellr yeah, so tricky corner of the JMS API. This trips up a lot of folks that are new to JMS-- the setDeliveryDelay can only be honored when set on the MessageProducer object. Any code that calls it on the Message is not valid per the spec.
7.9 Message Delivery Delay

An application may specify the required delivery delay using the method
setDeliveryDelay on the producer object. This sets the delivery delay of
all messages sent using that producer. Note however that the
setDeliveryDelay method on Message cannot be used to set the
delivery delay of a message.

For the JMS bridge idea, I can't walk a scenario where would be actually problematic. This feels hypothetical as it has a chicken-and-egg problem. The JMS API doesn't define how message data is hydrated into the Message object. It is handled by the provider impl and the wire protocol-- there is not support for the DeliveryDelay field in OpenWire at this time and there is nothing in ActiveMQ code base that calls setDeliveryDelay, and then throw an exception unexpectedly on a user.
As far as anyone providing a JMS 2.0 wrapper for ActiveMQ-- any code that is currently calling ActiveMQ using a JMS 2.0 MessageProducer to set a DeliveryDelay must have a custom wrapper impl for MessageProducer. Those scenarios are out-of-reach edge cases.

Based on how slowly things can happen sometimes I would push back against saying anything like "these methods won't be unimplemented for long" as who knows if/when it will be finished.

@cshannon that's fair. Check out the approach notes on the impl approach on the DeliveryDelay specific sub-task: https://issues.apache.org/jira/browse/AMQ-8320
Basically, I think we can do a first-pass without OpenWire changes, and then tee-up a OpenWire v13 ticket to group up enhancements and minimize the protocol impact.

@gemmellr replies inline..

@mattrpav I'm not actually all that new to JMS at this stage really, I'm at least a little aware what the methods are for and how the functionality is used, having implemented JMS [2] in full including a full protocol mapping of the functionality in a client capable of doing such scheduled delivery against ActiveMQ 5 for several years now already. I have no idea why you think I was talking about application or 'wrapper' usage of the setter, I wasn't.

Cool

I think I was pretty clear about taking a 5.x message object and sending it through another JMS 2 client, which is where the issue arises, as it necessarily tries to call setJMSDeliveryTime on every message sent (as either there is a delay, and the actual time needs set, or there isnt and it should be clearing the potentially-non-zero existing value to indicate so). Such a client client may have reasonably handled a JMS 1.1 object not having the method implemented, as e.g. 5.x didnt so far, but it is not going to expect the method to be actually implemented but throw UOE.

Yeah, I'm trying to piece your scenario together, but coming up short.
Am I getting this right:

App currently uses JMS 2.0 API
App DeliveryDelay is required, and sets DeliveryDelay on all messages through the JMS 2.0 MessageProducer
App has a way to handle that ActiveMQ (or other JMS 1.1) doesn't have this method so it doesn't fail
Upon upgrade of activemq-client jar, this same unchanged code will now throw an exception

I don't see how #4 happens with #3 is in place as you indicated. I see a chicken-and-the-egg problem.
As as side-effect, by swallowing the 'set' and returning '0' on get, we'd be silently wiping out the DeliveryDelay and users would have no indication as to why DeliveryDelay is not occurring. It is just as reasonable to argue this should error out so it is caught in unit/integration tests before they roll to prod.

If 5.x is going to use the JMS 2 API then any JMS 2 message object sent with it should reasonably be expected to come back with a delivery time value of 0 after send if there is no delay occurring, i.e it should be doing the equivalent of setJMSDeliveryTime(0) by itself on its own messages, and actually calling setJMSDeliveryTime(0) on other providers messages to clear any existing non-zero value.

I think it is an interesting suggestion-- there is a JIRA open for the DeliveryDelay impl here: https://issues.apache.org/jira/browse/AMQ-8320

Am I getting this right:
1. App currently uses JMS 2.0 API

2. App DeliveryDelay is required, and sets DeliveryDelay on all messages through the JMS 2.0 MessageProducer

3. App has a way to handle that ActiveMQ (or other JMS 1.1) doesn't have this method so it doesn't fail

4. Upon upgrade of activemq-client jar, this same unchanged code will now throw an exception

No. App can use JMS 1.1 or JMS 2.0 API. Configuring DeliveryDelay at all is not required. App sends JMS 1.1 providers message object, through JMS 2.0 client (which tolerates 1.1 messages). After this change as-is, that will fail all the time during send.
Its possible for a JMS 2.0 client to work upon and send 1.1 message objects, tolerating that the message.setDeliveryTime() method is defined but is not being implemented by the older object (as clearly it didnt exist before, and so couldnt be implemented, but backwards compatibility is the name of the game for JMS). The JMS reference impl definitely did this.
Its possible for a JMS 2.0 client to tolerate being used only with the 1.1 API jar and for the message.setDeliveryTime() method to not actually be defined at all at runtime. I dont recall if the RI did this.
Qpid JMS for example does both of these things. It will let you send a 1.1 message through it, and it will operate using the 1.1 API jar. It simply made sense to support when transitioning specs, not dropping support for using it with existing 1.1 providers (e.g 5.x) or existing applications, when they couldn't actually be doing anything that wasnt still supported as all that API all remained precisely for compatibility. Those are very different situations from the method being defined, implemented and explicitly throwing UOE, and I dont expect anything to really handle that it really makes no sense for it to ever do so, especially for a long setter that is simply for recording 'what actually happened during send'.
Note that all sends will fail, regardless whether a delivery delay is configured on the producer, as a value is always being set on the sent messages to either indicate the actual delivery time or ensure it records there was no delay (as the sent message object may previously have had a deliveryTime value, so that needs cleared to ensure the getter reflects reality).

I don't see how #4 happens with #3 is in place as you indicated. I see a chicken-and-the-egg problem.
As as side-effect, by swallowing the 'set' and returning '0' on get, we'd be silently wiping out the DeliveryDelay and users would have no indication as to why DeliveryDelay is not occurring. It is just as reasonable to argue this should error out so it is caught in unit/integration tests before they roll to prod.

There is no delay unless the feature is implemented (which would remove any need for a discussion), so there cant really be a sillent wiping. The message setters dont control the delay as already discussed, and why would anyone expect the message to be reporting a non-zero delivery time after send, when producer.setDeliveryDelay(..) is throwing to indicate a delay cant actually be configured?

As an example, the Qpid JMS has a test module that uses ActiveMQ 5 for some tests and those include a 'foreign message' test. Currently it works with 5.16.2. Modifying the module now to use the snapshot from this PR, it then fails that test due to the change I've noted here.

As an example, the Qpid JMS has a test module that uses ActiveMQ 5 for some tests and those include a 'foreign message' test. Currently it works with 5.16.2. Modifying the module now to use the snapshot from this PR, it then fails that test due to the change I've noted here.

Cool, what is the link to the test code? Test output?

Cool, what is the link to the test code? Test output?

The test code is at https://github.com/apache/qpid-jms/blob/1.1.0/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/producer/JmsMessageProducerTest.java#L177. Its very simple, 'create foreign 5.x message object, try to send + receive message'. It fails to send on line 200, due to JMSDeliveryTime UOE from the message.

Cool, what is the link to the test code? Test output?

The test code is at https://github.com/apache/qpid-jms/blob/1.1.0/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/producer/JmsMessageProducerTest.java#L177. Its very simple, 'create foreign 5.x message object, try to send + receive message'. It fails to send on line 200, due to JMSDeliveryTime UOE from the message.
For completeness, this is the change I made to try out the changes: gemmellr/qpid-jms@516462f

Without a stacktrace, I'm estimating that this is the method throwing the exception:
JMSSession.java
 private void setForeignMessageDeliveryTime(Message foreignMessage, long deliveryTime) throws JMSException

Yeah, so in that code it could be argued that the 'hasDelay' marker variable should be used before calling the setJMSDeliveryTime in the private setForeignMessageDeliveryTime method. That method presumes that it should call the setJMSDeliveryTime even if there hasn't been a DeliveryDelay specified.
Either approach (throw UOE or swallow expected Delivery Delays) will present downside to varying users and interests.
I contend that the current UOE approach matches several project goals:

The implementation matches the description in the JIRA
The mailing list discussion has settled on this approach
The desire to keep PR changes concise

There is a dedicated JIRA for DeliveryDelay implentation discussion here: AMQ-8320

Yeah, so in that code it could be argued that the 'hasDelay' marker variable (used 7 lines earlier in L907) should be used before calling the setJMSDeliveryTime in the private setForeignMessageDeliveryTime method. That method presumes that it should call the setJMSDeliveryTime even if there hasn't been a DeliveryDelay specified.

It is set for every message sent because it should be. The [foreign] message object may already have a populated JMSDeliveryTime value so even if there is no delay being applied during this send call, the JMSDeliveryTime value should still be stamped appropriately on the sent message object to ensure it is correctly reflecting this send. (The 'hasDelay' variable is used for something quite different, but obviously related).

Either approach (throw UOE or swallow expected Delivery Delays) will present downside to varying users and interests.

The message.set/getJMSDeliveryTime would just work as they are meant to, allowing their use to simply report the values, and not breaking usage of 5.x message object with other providers, its hardly 'swallowing expected delays'.
The message setter and getter can be trivially handled in 5.x (getting and setting a basic long field), without the producer.setDeliveryDelay() method or delivery delay feature being implemented in 5.x, i.e. the producer.setDeliveryDelay() would still throw until actually implemented.

I contend that the current UOE approach matches several project goals:
1. The implementation matches the description in the JIRA

2. The mailing list discussion has settled on this approach

I would say that the mailing list discussion has not addressed this particular aspect, and it highly likely noone thought of it until I pointed it out. As a breaking change I think it runs rather counter to the entire idea of using the newer api jar being 'more compatible' as some seem to think.

3. The desire to keep PR changes concise

Fixing the message method issue would use less characters than throwing the exceptions would so arguably it would be more concise.
Weve spent many many multiples of the time it would take to fix this, just discussing. I'm done, break what you like.

I'm wondering if a constructive way to move this conversation forward, and JMS 2.0 support in general, would be to define a series of JMS20CompatibilityTests, that utilize the APIs and act accordingly.
The tests could assert that UOEs are thrown when expected, and certain functionality works across 2.0 APIs when UOEs are not expected.
A feature-complete reiteration of the JMS spec might not have value, but there's certainly core areas that could be covered.
As new support comes for methods (subtasks implemented of https://issues.apache.org/jira/browse/AMQ-7309) those tests could be altered as functional, and potentially all tests moved or relocated upon feature-complete spec.
That way too, we're talking about specific test cases in ActiveMQ and not across QPID (valid to support though they may be).
How does that sound? The action items there would be:

@mattrpav to add a series of basic tests that cover the altered APIs
@gemmellr to suggest a test (either before or after matt adds the tests) that could cover the use case in a clear/concise manner (e.g. Build/Operate/Check), that would move the convo forward

(admittedly as a passive watcher of this PR, I'm having a hard time following your suggestions, i.e. understanding how the implementation of delivery delay that does not throw exceptions in the case of trying to mutate or access data that isn't supported could provide return values with meaning, and the linked test case I'm assuming is failing due to this implementation decision: https://github.com/apache/qpid-jms/blob/6775a2e027d8963cda4f1a7dc75b115c5def4d47/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java#L999 - in which case QPID could choose to catch the UOE in a similar manner)

It’s not about qpid its that you’re breaking cross protocol stuff. Qpid is just showing those breaks up. The fact the activemq test didn’t pick up, is just a miss but thankfully the qpid projects tests did.
I think it ties back to trying to fudge in jms 2.0 client side without proper changes broker side, e.g. maybe this could be sorted by adding the correct jms 2.0 mapping to AMQP broker side to sort correct protocol support.
Sent from my iPad

On 4 Aug 2021, at 21:29, ehossack-aws @.***> wrote:

I'm wondering if a constructive way to move this conversation forward, and JMS 2.0 support in general, would be to define a series of JMS20CompatibilityTests, that utilize the APIs and act accordingly.
The tests could assert that UOEs are thrown when expected, and certain functionality works across 2.0 APIs when UOEs are not expected.
A feature-complete reiteration of the JMS spec might not have value, but there's certainly core areas that could be covered.
As new support comes for methods (subtasks implemented of https://issues.apache.org/jira/browse/AMQ-7309) those tests could be altered as functional, and potentially all tests moved or relocated upon feature-complete spec.
That way too, we're talking about specific test cases in ActiveMQ and not across QPID (valid to support though they may be).
How does that sound? The action items there would be:
@mattrpav to add a series of basic tests that cover the altered APIs
@gemmellr to suggest a test (either before or after matt adds the tests) that could cover the use case in a clear/concise manner (e.g. Build/Operate/Check), that would move the convo forward
(admittedly as a passive watcher of this PR, I'm having a hard time following your suggestions, i.e. understanding how the implementation of delivery delay that does not throw exceptions in the case of trying to mutate or access data that isn't supported could provide return values with meaning, and the linked test case I'm assuming is failing due to this implementation decision: https://github.com/apache/qpid-jms/blob/6775a2e027d8963cda4f1a7dc75b115c5def4d47/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java#L999 - in which case QPID could choose to catch the UOE in a similar manner)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

It’s not about qpid its that you’re breaking cross protocol stuff. Qpid is just showing those breaks up. The fact the activemq test didn’t pick up, is just a miss but thankfully the qpid projects tests did. I think it ties back to trying to fudge in jms 2.0 client side without proper changes broker side, e.g. maybe this could be sorted by adding the correct jms 2.0 mapping to AMQP broker side to sort correct protocol support.

For clarity this has nothing to do with broker side AMQP support, the issue seen from Qpid bridging tests simply exposes an issue with the proposed Openwire client changes which don't represent a complete implementation of the JMS 2.0 specification.  It's quite likely that other libraries such as PooledJMS would similarly encounter unexpected situations as it also uses a similar mechanism as the Qpid client does to detect JMS 1.1 clients operating with JMS 2.0 API jars on the classpath.

What exactly is breaking? If we put a long in there, it’s a dead store.
The pre-openwire v13 change is to map to a property for the interim. See the ticket specifically about DeliveryTime.
My suggestion is to move forward with this set of changes and then I can push the PR w the property-based DeliveryTime solution and this concern goes away as DeliveryTime will be implemented.

* @gemmellr to suggest a test (either before or after matt adds the tests) that could cover the use case in a clear/concise manner (e.g. Build/Operate/Check), that would move the convo forward

I have described more than once, and shown a literal code example of what to do for a test of this issue, which is utterly trivial. Ssend the JMS Message objects from 5.x through a foriegn JMS 2 provider impl. Any that implements what the JMS 2 spec says and as a result tries to apply the mandated value to the original message (using the vendor-neutral Message API in place specifically to let it do so) will fail.

(admittedly as a passive watcher of this PR, I'm having a hard time following your suggestions, i.e. understanding how the implementation of delivery delay that does not throw exceptions in the case of trying to mutate or access data that isn't supported could provide return values with meaning,

Because those Message methods are not really a core part of the implementation of Delivery Delay in 5.x itself, which is really part of the producer impl. They have nothing to do with the behaviour applied by 5.x during send, as was noted during this discussion. They are specifically there to ensure foreign providers can record the values they are applying with their support. Anything should be able to call the 5.x message setJMSDeliveryTime and getJMSDeliveryTime methods and expect it to work, regardless whether the 5.x producer actually supports configuring a delivery delay.

and the linked test case I'm assuming is failing due to this implementation decision: https://github.com/apache/qpid-jms/blob/6775a2e027d8963cda4f1a7dc75b115c5def4d47/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java#L999 - in which case QPID could choose to catch the UOE in a similar manner)

No, thats what will happens before this PR, when the client takes steps to let a JMS 1.1 message object be sent, because obviously it doesnt find the relevant method implemented, it didnt exist. This PR adds the JMS 2.0 method impl (which then throws), meaning the client actually finds it implemented and will proceed to the lower section and actually calling it. Expecting it to work and not throw UOE, because theres really no reason a simple set/get of a mandatory JMS header long value should ever throw. The Qpid JMS client will not be catching UOE's to satisfy such behaviour from ActiveMQ, that in itself would be incorrect.

It’s not about qpid its that you’re breaking cross protocol stuff. Qpid is just showing those breaks up. The fact the activemq test didn’t pick up, is just a miss but thankfully the qpid projects tests did.

They do when updated to prove the issue, but this was caught purely by thinking about it. Showing the test actually fails came later.

I think it ties back to trying to fudge in jms 2.0 client side without proper changes broker side, e.g. maybe this could be sorted by adding the correct jms 2.0 mapping to AMQP broker side to sort correct protocol support.

As Tim said, its not really about the full broker side support (Qpid JMS can already do delivery delay against 5.x). This is purely the 5.x Message object breaking the ability to send them through another JMS 2 provider as you are meant to be able, by implementing mandatory header set/get methods that throw an exception.

@gemmellr all good. I’ll either remove the UPE or push the impl.

What exactly is breaking? If we put a long in there, it’s a dead store.

It breaks being able to send any 5.x message through any JMS 2 provider that implements what the spec says. Ones which worked before. Breaking.
Its not dead, its needed so that people can use the getter to see the applied value after send. Its specifically what the methods exist for, and it will need to be implemented at some point as its what those methods do. It makes sense to do it now to avoid breaking things.

The pre-openwire v13 change is to map to a property for the interim. See the ticket specifically about DeliveryTime.
My suggestion is to move forward with this set of changes and then I can push the PR w the property-based DeliveryTime solution and this concern goes away as DeliveryTime will be implemented.

This is a local change to the message object, no openwire changes needed. I think it makes sense to do it here, given the discussion, and instead of breaking it first unecessarily then fixing it later.

This means a first compatibility version can be done in a jms2 package enabling a full jms1 compat in existing package and to start a jms2 support in a new package reusing/delegating to jms1 code.
This is pretty straight forward and fast to do without any regression.
Only change in current code can be in factories with a version config to switch between impl but at the end it is mainly delegation code and works well.

@rmannibucau yes, it's what I have in mind as well, as a first step (and what I started). @mattrpav took more "ambitious" approach.

Removing the whole of activemq-camel reall seems like something deserving of its own JIRA vs sneaking it into a commit with the title "JMS 2.0 API clean-ups"

@tabish121 Camel remove PR is here: https://github.com/apache/activemq/pull/701

@mattrpav can you please squash all commits in one ? If you don't know how to do it, just ping me on slack or I can do it for you. Thanks.

@mattrpav thanks for sorting the formatting.


docs: fix-common-readme

Auto-generated README.md contained some links and stuff not applicable to common package.

[x] Tests and linter pass
[x] Code coverage does not decrease (if any source code was changed)
[x] Appropriate docs were updated (if necessary)

Codecov Report

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

@@           Coverage Diff           @@
##           master      #30   +/-   ##
=======================================
  Coverage   99.82%   99.82%
=======================================
  Files           7        7
  Lines         577      577
=======================================
  Hits          576      576
  Misses          1        1

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 a14ef47...251045b. Read the comment docs.


"modems": true

config.json->   "modems": true
Liveu: monitoring modems
thread 'tokio-runtime-worker' panicked at 'called Result::unwrap() on an Err value: RequestFailed(reqwest::Error { kind: Decode, source: Error("invalid type: null, expected a string", line: 1, column: 173) })', D:\a\liveu_stats_bot\liveu_stats_bot\src\liveu_monitor.rs:30:14
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

Hello Ladell,
There seems to be a field that's optional, unfortunately this error doesn't tell me which field that is.


Check if IBAN is from a SEPA country at enrollment

Mandates for payment are only supported for SEPA countries. It would be nice if the website would only let you fill in valid SEPA BICs or IBANs.

I do not know the way in whcih the current implementation is happening, but it would be a very nice bonus if it would be validated that the BIC indeed belongs with the IBAN. Another very nice bonus, but I do not know if it is possible, It seems to me (not 100% sure) that some banks participating in SEPA do not support SEPA mandates. If there is some way to validate this that would be great (might not be relevant anymore with eMandates).

While needing to find the BIC of some bank I came accross this website which indeed shows whether a certain IBAN supports SEPA direct debits, so if this was not already considered with the implementation, it is definitely possible and would be great. https://www.ibancalculator.com/

While needing to find the BIC of some bank I came accross this website which indeed shows whether a certain IBAN supports SEPA direct debits, so if this was not already considered with the implementation, it is definitely possible and would be great. https://www.ibancalculator.com/

Good point on mentioning it, because you mentioned that I found a library that can just convert IBAN's to BIC's according to the ISO standard: https://github.com/mdomke/schwifty So we'll just use that, and then the user won't even have to enter their BIC number. I'll be sure to still keep in the code in that checks If its from a SEPA country though.


improve IA for pages (RHS links)

Background
IA = Information Architecture

In many of the important pages like blog list & single post page, there's wasted space on the sides.
While I prefer the minimal aesthetic (like a paper like reading experience) the wasted space is valuable unused real estate.
Additionally, in important pages like the blog list index, its ridiculous to expect people to scroll all the way at the bottom to navigate to different parts of the site. just look at kau.sh/blog where i have > 50 posts.

Solution

add minimal/small permanent links to the RHS
surface page specific content that could be more useful (e.g. categories on the post-list index page)
i could potentially remove the entire jquery scroll to the top/bottom (or put it behind a settings) thing if the IA is done right

Content specific categories
Every page

About me
Subscribe (All)

List page (/blog etc)

cateogories

Single Post page

this category
related (point to the bottom of the page)

Todo

[ ] add a rhs side bar (icon with text)
[ ] add content specific links for single post
[ ] add content specific links for blog list
[ ] mobile pages show only icons

done! really happy with this one.


Update survey links

Update to switch away from SurveyMonkey to Qualtrics survey links.  The survey URLs have been pulled into the constants file to more easily reuse moving forward.

@vim-usds This PR now includes an updated Spanish data survey link from @KameronKerger


Drag and Drop "dotfile" to File Explorer creates file without leading "dot"

VSCode Version: 1.30.2 (user setup)
OS Version: Windows_NT x64 10.0.17763

Steps to Reproduce:

Open Folder in VS Code that contains a "dotfile" e.g. ".gitignore", ".env", ".htaccess"
Drag and Drop a "dotfile" to the windows file explorer. The pasted file name does not contain leading "dot" e.g. "gitignore" instead of ".gitignore"

Does this issue occur when all extensions are disabled?: Yes

Sorry for the slow response.I can not reproduce this.
If you still see this can you please attach a .gif showing this?

Sure - meanwhile with version 1.32.2

Folder "C:\Drag" with files ".env" and "test.txt" opened in VSCode
Drag&Drop ".env" file to Explorer Folder "C:\Drop"
The dropped file is named without leading dot

I can repro this both on Mac and Win.
I verified that we set the correct dataTransfer, but it seems that the OS or electron somehow deletes the dot.
@bpasero would know more. Might you have an idea why is this happening?

@isidorn that is not the transfer relevant for the native explorer, can you check this line instead:
event.dataTransfer.setData(DataTransfers.DOWNLOAD_URL, [MIME_BINARY, basename(firstSource.resource), firstSource.resource.toString()].join(':'));

This also happens when dragging from VSCode to Directory Opus so I don't think it's specifically an Explorer bug.

@bpasero that line looks decent. The basename correctly returns .env. However after that line is exectued I am not sure how to check the data in the event.dataTransfer content. Whatever I check in chrome dev tools it does not have the actual data
So let me know if you would like me to check something precisely, I feel like I am walking in the dark here.

@isidorn this could easily be an Electron issue, so the easiest would be to spin up Electron Fiddle and just try to reproduce with a simple test case that involves a file with leading dot.

@christianzingg This is an electron issue. I was kind enough and filled this https://github.com/electron/electron/issues/17394

Triage: the linked electron issue was closed without resolution on account of the age. Perhaps it should be reopened if this wasn't fixed by newer electron releases?

@wmertens If you can please create a new issue in the electron repository.

@isidorn if you can reproduce it in a recent version, you should be able to reopen your original issue. I was just doing a drive-by triage

We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.
If you wonder what we are up to, please see our roadmap and issue reporting guidelines.
Thanks for your understanding, and happy coding!


[Mac] Error creating git in xz -- Directory xz is not a git. This is an internal error

# Mac OS X - Yosemite 10.10 Gold Master (14A379a) on a MacBook Pro (Retina, 13-inch, Late 2013)
$ uname -a
Darwin MacBook.local 14.0.0 Darwin Kernel Version 14.0.0: Tue Sep 23 23:01:41 PDT 2014; root:xnu-2782.1.97~6/RELEASE_X86_64 x86_64
$ git --version
git version 1.9.3 (Apple Git-50)
$ pwd
/Users/king/code/openwebrtc/scripts/bootstrap
$ ./bootstrap.sh -r osx
....
....
Creating git in xz
Initialized empty Git repository in /Users/king/Code/openwebrtc/scripts/bootstrap/xz/.git/
[master (root-commit) abda99a] Init
 434 files changed, 132928 insertions(+)
 create mode 100644 xz-5.0.5.tar.gz
 create mode 100644 xz-5.0.5/ABOUT-NLS
 create mode 100644 xz-5.0.5/AUTHORS
....
 create mode 100644 xz-5.0.5/windows/INSTALL-Windows.txt
 create mode 100644 xz-5.0.5/windows/README-Windows.txt
 create mode 100644 xz-5.0.5/windows/build.bash
Marking sources installed in xz
Already on 'master'
[master 219b33b] tag file identifying the build script that installed the sources
 1 file changed, 1 insertion(+)
 create mode 100644 .sources_installed_tag_file.txt
ERROR: Directory xz is not a git. This is an internal error
$

I got a similar error today on a fresh checkout.
bash-3.2$ ./bootstrap.sh -r osx
clean_source, /Users/jonathan/code/github.com/EricssonResearch/openwebrtc/scripts/bootstrap
build-xz.sh cleaning xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1275k  100 1275k    0     0   235k      0  0:00:05  0:00:05 --:--:--  281k
x xz-5.0.5/
x xz-5.0.5/debug/
...
x xz-5.0.5/build-aux/config.rpath
x xz-5.0.5/build-aux/config.guess
x xz-5.0.5/build-aux/compile
Creating git in xz
Initialized empty Git repository in /Users/jonathan/Code/github.com/EricssonResearch/openwebrtc/scripts/bootstrap/xz/.git/
[master (root-commit) 39cdb69] Init
 434 files changed, 132928 insertions(+)
 create mode 100644 xz-5.0.5.tar.gz
...
 create mode 100644 xz-5.0.5/tests/test_stream_flags.c
 create mode 100644 xz-5.0.5/tests/tests.h
 create mode 100644 xz-5.0.5/windows/INSTALL-Windows.txt
 create mode 100644 xz-5.0.5/windows/README-Windows.txt
 create mode 100644 xz-5.0.5/windows/build.bash
Marking sources installed in xz
Already on 'master'
[master fb0e771] tag file identifying the build script that installed the sources
 1 file changed, 1 insertion(+)
 create mode 100644 .sources_installed_tag_file.txt
ERROR: Directory xz is not a git. This is an internal error
Build failed -- Use 'ls -d *build_failed*' for a quick orientation

I just tried the same thing here and it worked just fine.
 create mode 100644 xz-5.0.5/tests/test_stream_flags.c
 create mode 100644 xz-5.0.5/tests/tests.h
 create mode 100644 xz-5.0.5/windows/INSTALL-Windows.txt
 create mode 100644 xz-5.0.5/windows/README-Windows.txt
 create mode 100644 xz-5.0.5/windows/build.bash
Marking sources installed in xz
Already on 'master'
[master 118d00b] tag file identifying the build script that installed the sources
 1 file changed, 1 insertion(+)
 create mode 100644 .sources_installed_tag_file.txt
Switched to branch 'x86_64-apple-darwin'

What version git?
I've seen a similar problem that was fixed by upgrading the git program, although I can't remember what versions are good for this. I think there are some strange corner cases where this hits -- maybe 1.8.6 something was bad and the bug could be triggered there.

@PerBoussard  I realized I was running a really old version of git:
openwebrtc/scripts/bootstrap[17c5635]% git --version
git version 1.8.4.GIT

However after updating, I still ran into the same issue:
 create mode 100644 xz-5.0.5/tests/test_check.c
 create mode 100755 xz-5.0.5/tests/test_compress.sh
 create mode 100755 xz-5.0.5/tests/test_files.sh
 create mode 100644 xz-5.0.5/tests/test_filter_flags.c
 create mode 100644 xz-5.0.5/tests/test_index.c
 create mode 100755 xz-5.0.5/tests/test_scripts.sh
 create mode 100644 xz-5.0.5/tests/test_stream_flags.c
 create mode 100644 xz-5.0.5/tests/tests.h
 create mode 100644 xz-5.0.5/windows/INSTALL-Windows.txt
 create mode 100644 xz-5.0.5/windows/README-Windows.txt
 create mode 100644 xz-5.0.5/windows/build.bash
Marking sources installed in xz
Already on 'master'
[master 7c0d734] tag file identifying the build script that installed the sources
 1 file changed, 1 insertion(+)
 create mode 100644 .sources_installed_tag_file.txt
ERROR: Directory xz is not a git. This is an internal error
Build failed -- Use 'ls -d *build_failed*' for a quick orientation
openwebrtc/scripts/bootstrap[17c5635]% git --version
git version 2.2.2

I had my girlfriend clone the project and run the bootstrap script on her mac and it worked fine for her so the only thing I can figure is there is something goofy with my setup

@PerBoussard Hah! I think I see what is going on here... It is caused by osx's case-insensitivity. You can reproduce the error by doing the following:
mkdir Test
cd test
git clone --recursive https://github.com/EricssonResearch/openwebrtc.git
cd openwebrtc/scripts/bootstrap/
./bootstrap.sh -r osx

Notice I am cd'ing into the lowercase version of the directory.  I ran into this problem because I store all my code in ~/Code, but often cd to ~/code not even thinking about it.


multi_index bug??

I'm following these tutorials.
https://developers.eos.io/eosio-home/docs/data-persistence
https://developers.eos.io/eosio-home/docs/inline-actions
https://developers.eos.io/eosio-home/docs/sending-an-inline-transaction-to-external-contract
In above tutorial  'addressbook', 'abcounter' is contract account and 'alice', 'bob' is user account.
When I run 'cleos push action addressbook upsert '["test123", "n3wbie", "h4ck", "street", "ci
ty", "country"]' -p test123', it works fine.
But when I run 'cleos push action addressbook upsert '["abcounter", "n3wbie3", "h4ck3", "street3",
"city3", "country3"]' -p abcounter', following error occurs.
' Failed with error: could not insert object, most likely a uniqueness constraint was violated (13)'
What I'm thinking is, if there is account with smart contract that uses multi_index table, can not push action to itself because there is already pk in multi_index structure.
Am I right? or is it just a bug?

The multi_index structure does not arbitrarily insert a record with the primary key of the account running the contract.  Presumably you are only part way through the Data Persistence tutorial, as the final form of the contract modifies an existing row rather than generating an error.  Odds are the error is precisely correct: you have already inserted a row with key 'abcounter', while following earlier steps in the tutorial.
If there isn't an existing row (and you can test by implementing the erase method in the tutorial and executing it), then it's most likely a permissions problem, rather than a defect in multi_index.  I don't know of any reason why the require_auth( user ); call in upsert() would fail if user equals _code, but I suppose it's conceivable.
I recommend further experimentation.  It's very unlikely to be what you think it is, or it would have been noticed by now.

@jgiszczak
I'm done with tutorials.

As you can see from picture above(addressbook contract is deployed on h4ckthewor2d account), there is row with 'h4ckthewor2d' as key, and even 'erase' action is causing problem.

I have the same problem.and don't know why! only in some account's pk. and same error happen after multi_index data been clean.


Fix file navigation delay in Ruby caused by ts indent

Related to / Fixes issue https://github.com/nvim-lua/kickstart.nvim/issues/1141.
Caused by additional_vim_regex_highlighting = { 'ruby' } line for Ruby in kickstart ts config that was introduced in this commit .
The problem this solved at the time seems redundant now (most likely fixed upstream in treesitter), and now introduces a small delay when navigating in files instead.
I reverted the commit - restoring default ts indenting for it, in turn making config simpler.

Do we need to set additional_vim_regex_highlighting to false?

Does this cause a regression of https://github.com/nvim-lua/kickstart.nvim/issues/747?

@ChillerDragon It does indeed. I disabled ts indenting for Ruby again to fix this, as I was unaware of this.
Removal of additional_vim_regex_highlighting = { 'ruby' } does not seem to regress anything AFAIK.
https://github.com/user-attachments/assets/d931d68c-ba33-4320-afb5-a6461ac263b8

nice thanks

Update: I did some learning and made a nvim setup from scratch, then went back and re-did kickstart and applied my changes properly.
Turns out this change is not the cause of slowdown, most likely it was incorrectly setup LSP
(as I had timeout issues with it as well). No longer an issue, and it's smooth sailing now.
I don't believe this removal is required anymore, and since it's now slowing down the setup considerably I think it may as well stay.  👍


how to control the servo

I do not see where in your code you are controlling the servo
I start and stop degrees. For example start Servo at 10 degrees and stop Servo at 180. Other than that the code is working for me as far as I can tell. It took me several days to find that code all of the other that you mentioned did not even work for me. I’m also using a called SmartThings app called
ScheduleTstatZones
(Works with Any ST Connected thermostat, temp/motion/contact sensors & smart vents)
Will your device Handler work with that app?

how do I add dimmer function to devicetypes?


storage/mvcc/txn: make tiny refactor for prewrite

Signed-off-by: shirly<EMAIL_ADDRESS>What have you changed? (mandatory)
This PR make tiny refactor for the operate prewrite
What are the type of the changes? (mandatory)
Refactor, make the logic more friendly to the reviewers.
How has this PR been tested? (mandatory)
unit test
Does this PR affect documentation (docs) or release note? (mandatory)
no
Does this PR affect tidb-ansible update? (mandatory)
no
Refer to a related PR or issue link (optional)
Benchmark result if necessary (optional)
Add a few positive/negative examples (optional)

Note: The type of this PR is "Engineering".

/run-integration-tests


noip renewer not working, hanging at "opening browser"

I've been using this on my synology NAS in a docker for several months and its been running fine. However as of few days ago i notice it doesnt seem be working.. If i run this via terminal, i provide the credentials but then it hangs at saying "opening browser".
I normally run this via the docker command :docker run --rm -it simaofsilva/noip-renewer:
That also seems to be hang with no output about whats going on

Does it happen only on your Synology NAS or in your laptop as well? I never had the opportunity to test it on a NAS so I am not aware of potential restrictions those systems have.

It’s running in a docker on the nas and had been running fine for months. Nothing has changed on the nas. I don’t have a setup on a laptop to test unfortunately.
Are their any logs I can provide?

I have the same issue.
I run it in Docker, on a synology NAS.
task planer once every week (every monday at 14:58 (2:58 PM))
i got the same message:
Le planificateur de tâches a terminé une tâche planifiée.
Tâche : No-Ip Renewal
Heure de début : Mon, 19 Jun 2023 14:58:01 GMT
Heure d'arrêt : Mon, 19 Jun 2023 14:58:17 GMT
État actuel : 1 (Interrompu)
Sortie/erreur standard :
Opening browser
Login button has changed. Please contact support.
but, when I manually execute the planned task, i works perfectly
my script is:
docker run --rm simaofsilva/noip-renewer 'email' 'password'
hope it helps

When you ran it manually was it on the Synology as well?

Yes

I am unable to reproduce this. My recommendation is to build the image locally and test it throughout a set period of time to see if you can find a hint on what the problem might be.

Today I got the following error
Start time: Thu, 06 Jul 2023 23:00:01 GMT
Stop time: Thu, 06 Jul 2023 23:14:19 GMT
Current status: 1 (Interrupted)
Standard output/error:
Traceback (most recent call last):
File "//renew.py", line 129, in
Opening browser
Login successful
Confirming hosts phase
0 hosts confirmed
Finished
Logging off
browser.get(LOGOUT_URL)
File "/root/.local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 449, in get
self.execute(Command.GET, {"url": url})
File "/root/.local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute
self.error_handler.check_response(response)
File "/root/.local/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: Navigation timed out after 300000 ms
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:183:5
TimeoutError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:503:5
bail@chrome://remote/content/marionette/sync.sys.mjs:213:19

I noticed that the docker container in the synology have no access to internet.
I don't know now how to setup this up, but I'm on it.
once i find the right setup on the synology "Container manager" app, i'll post here.
maybe the message "opening browser" could be more specific in case that the docker container have or not internet access.
cheers

I noticed that the docker container in the synology have no access to internet. I don't know now how to setup this up, but I'm on it.
once i find the right setup on the synology "Container manager" app, i'll post here.
maybe the message "opening browser" could be more specific in case that the docker container have or not internet access.
cheers

I had this issue when i upgraded my synology to dsm 7.2. Turns out I had to set a dns server under the synologys network interface settings.

@alirz1, thank you so much for this answer.
I am in DSM 7.2 also,
i tried to set this up in control panel/network/general/ you have to enable the manual setting for the dns.
i used the cloudflare one with success (<IP_ADDRESS>)


Use colors of original LineUp

https://github.com/Caleydo/lineup.js/issues/65

Moved to https://github.com/datavisyn/lineup_app/issues/17


('updateCfg' was undefined)

In our blazor clientside app when reloading the application we get an undefined error

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Could not find 'appInsights.updateCfg' ('updateCfg' was undefined).
      Error: Could not find 'appInsights.updateCfg' ('updateCfg' was undefined)......

i am suspecting it might be some sort of racing condition but i am not sure.

Sorry did not see https://github.com/IvanJosipovic/BlazorApplicationInsights/issues/287


GH-1324 Restored support for the old format of metric Message

brought back the Metric class from the old boot
modified Metric class slightly to adjust for the type of info available thru micrometer
added 'meterFilter' property for metric filtering

Resolves #1324

Codecov Report

Merging #1325 into master will decrease coverage by 0.24%.
The diff coverage is 0%.

@@             Coverage Diff              @@
##             master    #1325      +/-   ##
============================================
- Coverage     61.69%   61.44%   -0.25%
+ Complexity      824      823       -1
============================================
  Files           134      136       +2
  Lines          3921     3935      +14
  Branches        550      551       +1
============================================
- Hits           2419     2418       -1
- Misses         1230     1245      +15
  Partials        272      272

Impacted Files
Coverage Δ
Complexity Δ

...pringframework/cloud/stream/micrometer/Metric.java
0% <0%> (ø)
0 <0> (?)

...ter/DefaultDestinationPublishingMeterRegistry.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...tream/micrometer/ApplicationMetricsProperties.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...loud/stream/micrometer/MetricsPublisherConfig.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...rk/cloud/stream/micrometer/ApplicationMetrics.java
0% <0%> (ø)
0 <0> (?)

...DestinationPublishingMetricsAutoConfiguration.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...ramework/cloud/stream/config/BinderProperties.java
84.21% <0%> (-5.27%)
9% <0%> (-1%)

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 6379c33...60fc252. Read the comment docs.

LGTM - merging.


[OD - Evaluate] (devenv/edit '') The Name property of a focusable element must not be null.

The following accessibility issue needs investigation.
App: devenv
Element path: edit ''
Issue Details: The Name property of a focusable element must not be null. Section 508 502.3.1
How To Fix: Provide a UI Automation Name property that concisely identifies the element.

Object detection, evaluate page with something predicted.


System saves a task with a name that contains dash ("-") but cannot retrieve it in UmpleOnline

Summary
Within the UmpleOnline, the users can create a task with a unique name. While creating a task, the hover message says that a task name should include only alphanumeric, “_” (underscore), and “ ” (space). But the users can still save a task name with “-” (dash) character. (Example task name: "shuvankar-001-001-009"). The system saved it without giving any error or warning message. But the user cannot reload that task (searching by name) in the future.
Steps to Reproduce

Go to the task, then click "Create a Task".

Give any name with a dash ("-") in the "Task Name" textbox and click on the "Submit Task". The system saves the task without any error message.

Now refresh the umpleonline page. Go to the task, and then click on "Load a Task". Type the task name that you entered at step-2. Finally, click on "Load Task".

The system shows an error message saying the task does not exist.

Expected Feature
The system should restrict the users from entering a dash ("-") within a task name (allowing a dash would require much more work due to the internal naming of files in the server)

Fixed by #1890


Infinite loop.

After I did an upgrade on node and npm (connect-mongo @ 0.1.7),
when I do the
express.createServer(
express.cookieParser(),
express.bodyParser(),
express.session({ secret: cfg.session_secret,
cookie: { domain: 'mydomain.com' },
store:new MongoStore({
db: cfg.db_session_name,
host: cfg.db_ip,
port: cfg.db_port
}
)
})
)
Then, once i hit any url / route, I will run into infinite loop:
TypeError: Not a string or buffer
at Object.createHmac (crypto.js:129:21)
at Object.sign (/node_modules/connect-mongo/node_modules/connect/lib/utils.js:135:6)
at Object.serialize (/node_modules/connect-mongo/node_modules/connect/lib/middleware/session/cookie.js:115:17)
at ServerResponse.writeHead (/node_modules/express/node_modules/connect/lib/middleware/session.js:265:46)
at ServerResponse._implicitHeader (http.js:808:8)
at ServerResponse.end (http.js:645:10)
at next (/node_modules/express/node_modules/connect/lib/http.js:167:13)
at pass (/node_modules/express/lib/router/index.js:219:24)
at nextRoute (/node_modules/express/lib/router/index.js:209:7)
at callbacks (/node_modules/express/lib/router/index.js:274:11)
The script was fine an hour ago, but then it just blow up if I use the MOngoStore for express session.   is there something wrong I did?

It's crashing (infinite loop is a misnomer). I tried to track this down for about 30 minutes to no avail. It seems that the req.secret is missing by the time it reaches cookie.js:115. Looking at npm, it appears that connect-mongo is using a different version of connect than the express framework (which you may also be using) - though it does't appear the session secret has changed between versions. Perhaps this is causing the error.

Quick fix was changing the dependency inside package.json: see here:
https://github.com/jacobstr/connect-mongo/blob/master/package.json
You can make the change locally inside node_modules/connect-mongo/package.json, then run npm install -d to re-download dependencies.
I'm sure that soon enough, express js will be updated to 2.0 (though I still haven't verified that the problem is in fact between express and connect ).

Thanks.  let me try that fix.  I almost going to purge my Mongo DB and
start everything fresh again.
On Tue, Feb 28, 2012 at 11:29 PM, jacobstr <
<EMAIL_ADDRESS>
wrote:

Quick fix was changing the dependency inside package.json: see here:
https://github.com/jacobstr/connect-mongo/blob/master/package.json
You can make the change locally inside
node_modules/connect-mongo/package.json, then run npm install -d to
re-download dependencies.
I'm sure that soon enough, express js will be updated to 2.0 (though I
still haven't verified that the problem is in fact between express and
connect ).

Reply to this email directly or view it on GitHub:
https://github.com/kcbanner/connect-mongo/issues/29#issuecomment-4233108

Nice, the patch works.  :)
On Tue, Feb 28, 2012 at 11:40 PM, Murvin Lai<EMAIL_ADDRESS>wrote:

Thanks.  let me try that fix.  I almost going to purge my Mongo DB and
start everything fresh again.
On Tue, Feb 28, 2012 at 11:29 PM, jacobstr <
<EMAIL_ADDRESS>
wrote:

Quick fix was changing the dependency inside package.json: see here:
https://github.com/jacobstr/connect-mongo/blob/master/package.json
You can make the change locally inside
node_modules/connect-mongo/package.json, then run npm install -d to
re-download dependencies.
I'm sure that soon enough, express js will be updated to 2.0 (though I
still haven't verified that the problem is in fact between express and
connect ).

Reply to this email directly or view it on GitHub:
https://github.com/kcbanner/connect-mongo/issues/29#issuecomment-4233108


Code is not working

Hi I have downloaded the code as zip from here and try to run but there is no appdelegate and didn't have any viewcontroller.How I can check the code whether it is working or not.
Even demo branch code is not working.
Can you please provide link of working code.

Hi @Rahulgupta-cdnsol , if you follow the instruction from demo branch you'll be able to run the project.


lspci | grep -i NVIDIA

Installed NV6 and installed the below commands.
CUDA_REPO_PKG=cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

wget -O /tmp/${CUDA_REPO_PKG} http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/${CUDA_REPO_PKG}

sudo dpkg -i /tmp/${CUDA_REPO_PKG}

rm -f /tmp/${CUDA_REPO_PKG}

sudo apt-get update

sudo apt-get install cuda-drivers

After restart, able to execute the command Nvidia-smi
but when the VM is restarted, couldn't able to run the command Nvidia-smi and lspci | grep -i NVIDIA.
This is happening to all NC6 and NV6 VM's

How is this related to DIGITS? What's NV6 and NC6?


SAML SLO logout button.

configure the logout button. to automatically change the url from domain/logout to domain/shibboleth/slo/<idp>, only when the user is authenticated with SAML.
Implement in this module with an environment variable and reference to the invenio-theme-tugraz in accounts/login.html.

I found a variable that sets the endpoint for /logout, see here.
maybe adding our own variable for invenio-shibboleth will do the trick.


Support chinese?

Support chinese?

Duplicates #16

Open to pull requests if you’d like to add this!

Another thing that might be required to use chinese well is to use a model trained in chinese by supporting additional models #17

Just letting you know that I've sent PR #62 !
Once this PR is merged, you will get a new ai-shell like the cool animation below:


[changing ui] -> getting buttons rather than listitems

What would you like to share?
in the pic below, we have some frequently clickable options as listitems, i think that will help more if they will be kept as buttons like get another user

Additional information
No response
👀 Have you checked if this issue has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Contributing Guidelines?

[X] I have read and understood the rules in the Contributing Guidelines

Are you willing to work on this issue ?
Yes I am willing to submit a PR!

@Dun-sin can you please assign me this

Disagree, thanks for raising tho


[$1000] After creating a group with a new user, user is automatically removed from the group (or we navigate away)

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

click on "+" icon
then go to create group section
select user from list
add new user from search
select the random email and select that email
Click on create group
Observe the group

Expected Result:
The optimistic report should remain, and you should be able to type in the chat
Actual Result:
The new user is removed for the group, or maybe we navigate to a different report
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: main
Reproducible in staging?: N
Reproducible in production?: N
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Expensify/Expensify Issue URL:
Issue reported by: @niravkakadiya25
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1686831616374889
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01e256c96a0de2398f
Upwork Job ID:<PHONE_NUMBER>402716160
Last Price Increase: 2023-06-19

I can't reproduce this with web but in iOS I can 🤔

@Beamanator I'm not able to reproduce on my side with iOS - can you elaborate a bit more what we should see?

Bumping this @Beamanator!

Yes sorry for the delay! 🙏
@dylanexpensify you're also not able to reproduce on iOS? 😅 Basically the user was seeing that, if they create a group with 2 users - 1 existing and 1 brand new one that doesn't exist yet (a.k.a. creating the group will create their account), they saw that:

At first, the group was created successfully
After a few seconds, the brand new user was removed from the group 😅

If you're not seeing that on staging iOS, maaaaaaaybe we can close this out? Or ask for better reproduction steps?

Ahh I'll try again for good measure, but may need to see about repro steps bein better!! Thanks man!

Ahh was able to repro! Thanks for the check @Beamanator!!

Hi!
I'm Artem from Callstack - expert contributor group
Maybe I could help with this one?

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/abeerahmad204

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01cab64261c95a66c5

Thanks @waterim feel free to work on this one! Post a proposal first please

Investigating why wrong data is coming.
I can see that for the first render after creating everything is fine, report was generated correctly, but after rerender new wrong report is coming.
For now two possible issues in my mind: 1. wrong data is coming from the backend. 2. Data is merging with some issues in onyx.
Continuing with that.

Hello everyone!
I have a question related to the bug.
After I create a report(chat)  participantAccountIDs: [ 14892739,<PHONE_NUMBER>872095 ] looks like this. First one is right, but the second one looks different. After a rerender of the page second one just is not coming from the backend side, but when I refresh the full application ids are comming correctly in this form: participantAccountIDs: [ 14892739, 14899579 ]
And the question is: How these ids are working? Why its different for a newly added user and how backend is handling that?
I think that some issues can come from the backend side related to those different formatted ids.
The main issue here, from web side It has the same issue with getting just one user, without newly created, but after it takes the newest data with correct ids automatically.
But from the mobile side it doesn't take the newest data withou hard refresh.
I hope I can do more on this issue with that kind of information.
Thank you in advance

How these ids are working? Why its different for a newly added user and how backend is handling that?
I think that some issues can come from the backend side related to those different formatted ids.

This is a new change and there are possibly some bugs related to it.
Essentially the new id is optimistic so we create the account with the details without waiting fro the backend. then ideally the API call should overwrite this data with the correct information. Seems like its not doing it automatically.
Could you bring this to #expensify-open-source channel as I am not super familiar with how this should work

Thank you, added this question to that channel :)

@waterim Any updates here?

@s77rt no answers for my question yet on the channel. Should I ask it again?

@s77rt
For online mode it takes old account as a small id, but new as a big one.
For offline it creates two big ids. Despite the fact that the first account was created previously, not during this "group creation". And after coming online it takes these 2 big ids.

@waterim Can you please follow the proposal template? I don't think you provided a clear RCA yet.
It may be helpful for you to investigate whether the data is created correctly in offline mode or not, if it's not then we probably have to fix something in the FE. Your above comment is confusing (kept cycling between offline/online results)

when you are coming the offline mode during using the app - old account will have small id, but new email a big one

In offline mode group is creating correctly without issues

This seems like a contradiction

@s77rt based on our conversation on slack
I left this comment about weird ids after creating group in offline mode.
This comment is not a proposal yet.
As I understand after investigation these long ids are coming from the Onyx.
But in Offline mode I can create a group without this particular bug, email is not deleting.

This bug exists just for an online usage.

Locally optimistic report is being generated correctly.
The application sends the correct report, including the correct parameter: emailList.
The first response is not correct - it doesn't have new user data in the participantsAccountIDs nor participants.
The second response(after refreshing the app) is correct - report includes new user.

Looks like it is a backend issue.

@waterim Thanks for the quick follow up.

Locally optimistic report is being generated correctly

The participantsAccountIDs does not seem to be correct, the new one (for the new user) is a big number that will be overwritten. I think this may be okay, AFAIK we cannot predict the id of a user given their email.

The first response is not correct - it doesn't have new user data in the participantsAccountIDs nor participants.

It looks correct, maybe this was fixed already? Is the bug still reproducible from your end?

Is there any video reference for this issue?

@nitin-kukreti There is from Slack post https://expensify.slack.com/archives/C049HHMV9SM/p1686831616374889
https://github.com/Expensify/App/assets/16493223/0f02ae9b-e4de-497c-96b9-b48500742dd6
@Beamanator Can you please include it in the issue description?

<EMAIL_ADDRESS>user is not exist

@nitin-kukreti Yes, that's what the bug is about, create a group chat with two users one that exists (chatted with before) and the other new

@nitin-kukreti Yes, that appears to be the bug here although I'm not able to reproduce it. Are you still able to reproduce the bug?

@s77rt  yes I am able to reproduce it this is because  we are getting empty reportAccountId after some reenders in mobile I am working on It I will give its solution asap

@s77rt My colleague is not able to repro this as well as you, but Im able

@waterim do you know any method by which we can do breakpoints debugging in react native

@nitin-kukreti RN debugging inside of the chrome can be useful for that

@s77rt Okay, trying it

@s77rt With staging server everything looks correct

@waterim Cool so the issue seems to be fixed already. @nitin-kukreti Can you confirm the same?

@s77rt  I think I issue is in front-end side

@waterim  no we can create group with one person (also with person which not exist)

participantAccountIDs array is empty in this case

I'd recommend looking in personalDetailsList, not personalDetails (keyed by accountID, not email) - I think we fixed the -1 accountID problem in personalDetailsList, hopefully :D

@Beamanator Here I dont have even my newly created user :D

@Beamanator when we are requesting from mobile devices for gerrating new Report with a user which not exit  giving accounId=-1 in api response but when we are performaing same operation from desktop web we are getting accurate response in which accountId is not -1.
does we are using different API end points for mobile and web ?

@waterim aahhhh this is the response to an API command, sorry i thought you were looking in Onyx directly :D
@nitin-kukreti that's quite strange, it's very unlikely that the data "should" be sent / returned different depending on the platform (mobile vs web) - we strive to make it all the same so we don't have weird edge cases for 1 platform

@Beamanator Is the issue still reproducible from your end? (test against staging server). Currently it appears that only @nitin-kukreti is able to reproduce which is odd

@Beamanator  and @s77rt
It is a serverside error
I attaching some response portion of both mWeb and Web
here accountId=-1
this response from mWeb when first time we create Group with new user which not exit yet but after reloading response is ok.
MWeb
Before Reloading

After Reloading
Response Is totally different (Before it was array of 7 but after reloading on new request its only array of 5  as In previous response two entry were duplicate ) but accoudId exist for newly created user its not -1

Web
response in web is similar to response of mWeb but here account Id is not -1 but their also have two duplicate entry

@nitin-kukreti I really doubt we get different responses based on the device. I'm still unable to reproduce the bug. Also the personalDetails is deprecated. You should just check personalDetailsList. As for the duplicated entries I have reported this here as well.

I really doubt we get different responses based on the device.

Agreed response shouldn't be different based on device - check you're on the same env (staging / production) on both 🙏

Also the personalDetails is deprecated. You should just check personalDetailsList.

Agreed 👍 We'll be removing all personalDetails data very soon b/c we don't use it in the App anymore - we will use personalDetailsList from now on

As for the duplicated entries I have reported this https://github.com/Expensify/App/issues/21600#issuecomment-1609266104 as well.

👍

@Beamanator
I am rechecking that asap

@Beamanator  @s77rt
MWeb
not getting detail of newly created user
{
            "onyxMethod": "merge",
            "key": "personalDetailsList",
            "value": {
                "14923263": {
                    "accountID": 14923263,
                    "avatar": "https:\/\/d2k5nsl2zxldvw.cloudfront.net\/images\/avatars\/default-avatar_21.png",
                    "displayName"<EMAIL_ADDRESS>                }
            }
        }

after refreshing page
same report open but this time response is correct
{
          "onyxMethod": "merge",
          "key": "personalDetailsList",
          "value": {
              "14943429": {
                  "accountID": 14943429,
                  "avatar": "https:\/\/d2k5nsl2zxldvw.cloudfront.net\/images\/avatars\/default-avatar_6.png",
                  "displayName"<EMAIL_ADDRESS>              }
          }
      },

Web
Every thing is ok
 {
            "onyxMethod": "merge",
            "key": "personalDetailsList",
            "value": {
                "14943466": {
                    "accountID": 14943466,
                    "avatar": "https:\/\/d2k5nsl2zxldvw.cloudfront.net\/images\/avatars\/default-avatar_16.png",
                    "displayName"<EMAIL_ADDRESS>                },
                "14893351": {
                    "accountID": 14893351,
                    "avatar": "https:\/\/d1wpcgnaa73g0y.cloudfront.net\/00e8d12809980f19e9830837925eba7f04c7b31c_128.jpeg",
                    "displayName": "Nitin Kukreti"
                }
            }
        },

after Reload

{
            "onyxMethod": "merge",
            "key": "personalDetailsList",
            "value": {
                "14943466": {
                    "accountID": 14943466,
                    "avatar": "https:\/\/d2k5nsl2zxldvw.cloudfront.net\/images\/avatars\/default-avatar_16.png",
                    "displayName"<EMAIL_ADDRESS>                }
            }
        },

Apart form this problem I notice a inconsistent API response after reloading page we are getting different response for same report  in key=personalDetailsList

@nitin-kukreti That's weird :sweat_smile: Just double check that all those request are being sent to the correct server and that is the staging server. I don't know why you are the only one who can reproduce this. From my end both web and mweb return same data

Melvin

Are we close to approving a proposal?

We are not even close to reproducing the bug :sweat_smile:  That's a good thing I hope

reviewing today and posting next steps!

@s77rt can you repro? Or should we close this out? cc @Beamanator

Hoping we can close this out 🙏

@dylanexpensify I can't repro. Let's close this

Melvin we will probably close this one

Closing!


[WIP] pyspark.sql.functions.col as C

What changes were proposed in this pull request?
This introduces a C.colName shorthand for col("colName") in pyspark.
Why are the changes needed?
Scala has a nice concise $"colName" function, but python is forced to use col("colName").  This PR introduces C.colName as a short-hand version for pyspark.
Does this PR introduce any user-facing change?
See above.
How was this patch tested?
Added pyspark.sql.tests.test_functions.FunctionsTests.test_col_functions

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?


Create tool that turns YouTube video into easily parsed 2d list of black and white frames

This has been completed


doc(lean/main/dsls.lean): fix double error

... and, on the way, mention the existence of ..

While I think this is an interesting and peculiar behavior, the double processing needs better fix. I will work on it later today. It will require a rather deep refactor on the chapter


Feature: Gulp/rollup autoreloading

Why?
This would enable the development flow to be smoother, as we can have the tests run automatically with Quench as well as the system automatically reloading on code change, thus removing the need to refresh the browser / reload the application.
How?
This is implemented using Rollup for OSE, which is where I know the feature from. I have no knowledge of how to setup autoreload for Gulp, eventhough I've tried.

Parts of this will be coming with v11, so when we verify v11 compatability we can see if we still need to do something.


I see the project was updated a few hours ago, does this support "gpt-3.5-turbo"

Describe the feature or improvement you're requesting
I tried the new "gpt-3.5-turbo" with my previous install and I get an 404 error on return.  Has this been updated for the new "gpt-3.5-turbo" model?
Additional context
No response

You have to use the createChatCompletion() method instead of the createCompletion() method.

I just Homer Simpsoned.....

so it no longer  prompt, but a message?  Just confirming

I get a "TypeError: Cannot read properties of undefined (reading 'create')"
                var completion = await openai.ChatCompletion.create({
                    model: "gpt-3.5-turbo",
                    messages: [{ "role": "user", "content": "Hello! world" }]

Any suggestions what I'm doing wrong?  I'm using Javascript.

You have to use the createChatCompletion() method instead of the createCompletion() method. Read the docs for more info.

I just Homer Simpsoned.....

gpt-3.5-turbo , createChatCompletion How to use stream: true ?

according to the docs it should be like this
const completion = await openai.createChatCompletion({
        model:"gpt-3.5-turbo",
        messages: [{role: "user", content:"Hello"}],
});

@phusting  you can try  https://www.npmjs.com/package/gpt-node

Here is a simple overview of Node.js openai usage changes between text-davinci-003 and gpt-3.5-turbo models :
New code:
const completion = await openai.createChatCompletion({
    model: "gpt-3.5-turbo",
    messages: [{
        role: "user",
        content: prompt,
    }],
});
console.log(completion.data.choices[0].message.content);

Git diff:

Here is more from the official docs

hi @shospodarets @dytra @adamk22
I have followed the instructions but I am getting openai.createChatCompletion is not a function may I know why is that?
Here is my working GPT 3 Davinci:

And this is my GPT 3.5 Turbo:

Your guidance is highly appreciated 🙏
Regards,
Abu

Did you update your openai library version from npm?

Hi @robertbak,
Thanks allot for that! I've updated from version 3.1.0 to 3.2.1 and I'm able to get a response now.
I am getting the following error now however: TypeError: Cannot read properties of undefined (reading '0') from the code console.log(completion.data.choices[0].message.content);
For reference, I've printed out just the "completions" and this is what I get:

@robertbak I kind of see the pattern better when I put it this way, I guess it's just a matter of extracting out the answer from the response..
Prompt give: "Hello"
Response: "Hello! How can I assist you"

Issue has been resolved, just got rid of stream: true.

Hi @robertbak,
Thanks allot for that! I've updated from version 3.1.0 to 3.2.1 and I'm able to get a response now.
I am getting the following error now however: TypeError: Cannot read properties of undefined (reading '0') from the code console.log(completion.data.choices[0].message.content);
For reference, I've printed out the entire "completions" and this is what I get:

Hi, how can we use stream? Thank you.

@jgui1129 @phusting Here you can find the working and supported example of latest ChatGPT API used with the streams:
https://github.com/Nutlope/twitterbio/blob/main/utils/OpenAIStream.ts
https://github.com/Nutlope/twitterbio/blob/main/pages/api/generate.ts

live demo
https://www.twitterbio.com/ 😉


Examples, a major audit, and a grab bag of fixes

Notes
This ended up including a major file by file, line by line audit of the entire codebase that exposed a number of small bugs, lots of docstring writing and cleanup and substantial deprecation of old/proto code.
Now that the examples are torn apart, I can quickly update the docs, which is the last remaining issue before the review.
This now includes the updated (not yet complete) docs.
Docs to audit

[ ] getting_started.md
[ ] FAQ.md
[ ] hints.md
[ ] predictions.md
[ ] training.md

The following are currently WIP (so don't focus on)

databases,
deploy
index
utilites

Things to test

[ ] all example files in order
[ ] it is worthwhile quickly reading over all the commit messages to see the enhancements and fixes including:

timestamping on model .save() calls with optional name override
plot cleanup (legends, colors, labels)
a nice robust sqlite writer with built in error handling (the same for the catalyst specific writer)

:x: Build healthcareai-py 1.0.465 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/365a053b0e by @Aylr)

:x: Build healthcareai-py 1.0.474 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/85f953ab4e by @Aylr)

:x: Build healthcareai-py 1.0.476 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/428118ea00 by @Aylr)

:x: Build healthcareai-py 1.0.478 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/c880b0e8f8 by @Aylr)

:x: Build healthcareai-py 1.0.480 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/b2e6f4830f by @Aylr)

:x: Build healthcareai-py 1.0.482 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/9f77a02b13 by @Aylr)

:x: Build healthcareai-py 1.0.484 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/332f1f3665 by @Aylr)

:x: Build healthcareai-py 1.0.486 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/a03b427e4d by @Aylr)

:x: Build healthcareai-py 1.0.488 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/03cb0a8d66 by @Aylr)

:x: Build healthcareai-py 1.0.490 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/2b5b9da6d3 by @Aylr)

:x: Build healthcareai-py 1.0.492 failed (commit https://github.com/HealthCatalyst/healthcareai-py/commit/cddeeef5d5 by @Aylr)


[VL]Fallback complex type in native write

What changes were proposed in this pull request?
Velox doesn't support nested type encoding when converting the rowVector to arrow data https://github.com/facebookincubator/velox/blob/main/velox/vector/arrow/Bridge.cpp#L795. So we fallback nested type in native write.
How was this patch tested?
existing tests.

@zhli1142015 @ulysses-you Can you help to review? Thanks.

===== Performance report for TPCH SF2000 with Velox backend, for reference only ====

query
log/native_4335_time.csv
log/native_master_01_08_2024_b81ecdef1_time.csv
difference
percentage

q1
32.66
33.20
0.546
101.67%

q2
26.42
25.74
-0.684
97.41%

q3
37.96
38.04
0.083
100.22%

q4
40.42
39.01
-1.404
96.53%

q5
70.09
71.87
1.782
102.54%

q6
7.01
8.18
1.164
116.60%

q7
86.33
85.51
-0.825
99.04%

q8
86.95
85.98
-0.974
98.88%

q9
122.88
122.63
-0.252
99.80%

q10
43.83
43.71
-0.121
99.72%

q11
19.63
20.14
0.503
102.56%

q12
23.33
27.54
4.210
118.05%

q13
47.26
46.35
-0.908
98.08%

q14
16.42
18.04
1.616
109.84%

q15
29.00
28.07
-0.932
96.79%

q16
15.28
15.33
0.046
100.30%

q17
158.34
157.40
-0.937
99.41%

q18
195.87
196.16
0.292
100.15%

q19
16.75
16.55
-0.199
98.81%

q20
28.56
29.10
0.539
101.89%

q21
225.87
226.46
0.590
100.26%

q22
13.92
14.01
0.087
100.63%

total
1344.78
1349.01
4.223
100.31%


Timelines no longer showing

For some reason the timelines are no longer showing up on my ui. The error I'm getting is Info: Raid: BrowserConsole: Uncaught TypeError: this.timerlist.clear is not a function (Source: file:///C:/Users//AppData/Roaming/Advanced%20Combat%20Tracker/Plugins/cactbot-0.16.6/cactbot/ui/raidboss/timeline.js, Line: 640).

Fixed in 0.17.1.


Is keybase decentralized?

Hi,
Glad to see Keybase, but the sparse documentation doens't let me assure if it is a decentralize application or relies on centralized server owned by a single party. Is keybase decentralized? How it compared with matrix.org and Riot.im?
Thanks

It's complicated -- it relies on a centralized server, but with decentralized trust and end to end encryption. (The server can't read your messages or lie to you about who wrote them.)

Thanks. So, is kind of Matrix, plus centralized server. Any plans to decentralization on the server front?


Mention the .NET Core docs

It's easy to miss that one is reading the .NET docs not the .NET Core ones which leads to a successful installation of the package, but the package appears to have no exported any namespaces.

@TomasHubelbauer : Thanks for your contribution! The author, @SnehaGunda, has been notified to review your proposed change.

This closes #29276.

@TomasHubelbauer added a minor comment to fix a link. We can merge your PR once that's addressed. Let me know for some reason you can't fix it, I can submit the fix from my end.

@TomasHubelbauer : Thanks for your contribution! The author, @SnehaGunda, has been notified to review your proposed change.

#sign-off

@TomasHubelbauer - this note needs to be formatted with markdown rather than in plain text before we can merge.
Thanks.

@rjagiewich : Thanks for your contribution! The author, @SnehaGunda, has been notified to review your proposed change.


Webpack v5 may be not come with the latest terser-webpack-plugin out of the box.

Bug report

What is the current behavior?
Webpack v5 may be not come with the latest terser-webpack-plugin out of the box.

If the current behavior is a bug, please provide the steps to reproduce.
If minimizer has configuration item （such as: new CssMinimizePlugin(), not TerserPlugin),  OptimizationDefaults can not apply TerserPlugin.
In 'A' function, it should judge configuration item.

What is the expected behavior?
It should judge if the configuration item contains the TerserPlugin. If not, it should apply TerserPlugin.
Webpack v5 can come with the latest terser-webpack-plugin out of the box.

Other relevant information:
webpack version:   5.72.0
Node.js version:  16.3.0
Operating System: macOS
Additional tools:

you should use optimization: { minimizer: ["...", new YourMinimizerPlugin()] }

you should use optimization: { minimizer: ["...", new YourMinimizerPlugin()] } to make defaults work

Thxs.It works, but it doesn't seem very elegant. The doc can add relevant hint.


Assign a dedicated, public version.

This will supercede the other git tag.

Awesome. Should the module name also change to dronekit from droneapi at this point?

@hamishwillee Actually you're right, that should go in this commit as well.

Excellent!


Fix testImportAsHiveTable when create a unpartition table the spec  should be to unpartitioned

When running TestSparkTableUtil#testImportAsHiveTable, the column
data in the table test_unpartitioned_table is null. I think the spec should be set to unpartitioned.
without the fix the table is like that:
 spark.read().format("iceberg").load(DB_NAME + ".test_unpartitioned_table").show();
+---+----+
| id|data|
+---+----+
|  3|null|
|  2|null|
|  1|null|
+---+----+

Thanks @shawnding, looks like the unit test failed, you might want to close and open PR to trigger CI.


Add offered qos incompatible event and event executor test

(edit) #10 has already been merged.
This PR is build on top of https://github.com/osrf/ros2_java/pull/10.
It adds a new publisher event status: OfferedQosIncompatible.
That new event status is used to test the executor code in https://github.com/osrf/ros2_java/pull/10, which surprisingly works without changes.
There are some other cosmetic changes here.
I will rebase and redirect the PR to feature/events when #10 gets merged.

surprisingly works without changes.

:joy:

I have rebased feature/events against foxy-devel, and this branch against feature/events.
In that way, we can see CI being exercised now :smiley: .

@jacobperron there are some event statuses that we want but are not available in foxy (e.g. message lost), should we create a galactic-devel branch?

Unrelated, but I want to get rid of all stale branches.
Do we need to keep some of them or can I delete them all?

@ivanpauno

there are some event statuses that we want but are not available in foxy (e.g. message lost), should we create a galactic-devel branch?

Yeah, feel free to create a galatic-devel branch when the time is right.

Unrelated, but I want to get rid of all stale branches.


Issue when using the same web.config in two IIS applications one being a child of the other

The issue is you receive a blank page when you try to run a child application of another IIS app (website) both of which use the same H5BP web.config.
The problem lies in the customheaders section of system.webServer. Unless we remove the header first in our child application we cannot add the same header name. If we do that, it results in blank page render, which is extremely difficult to troubleshoot (I wonder how no one ever experienced that before).
So the solution is to first remove the header (which for some reason some headers already do) and then add it back again.
If we don't do that we have to watch out for these blank pages and errors and have to resort to

which we don't necessarily want.
I'll be creating a pull request shortly.

What are the tab size, indent size and keep tabs/insert spaces settings for these web.configs?

Hi, I imagine running child apps has become a tad neich over the years (don't get me wrong .net is filled with the joys of legacy); I've previously added remove X around everything being added and seeing its a boiler plate (copy, paste, delete what you dont want) I've added them in.
Thanks :+1:

Not really, child apps are popping up again with the advent of APIs, which often are standalone applications but still reside within the site.
Thanks for adding the removes.

Have to admit, I'm slightly intrigued. Surely you either host the api within the same site and use the routing (mvc/nancyfx/servicestack can be hosted on say /api within an app) or if its a separate solution on a subdomain? The last time I dealt with a sub-application was in an old webforms site on cheap hosting where the only way to cram a new api in was to sub-app it, and that was about 5 years ago and the server was still running IIS7.  :D Genuinely intrigued as to the use case


Oopize the session

Proposition:

Change desicion_callback to decision_strategy with specific abstract interface DecisionStrategy.
Change on_decision_callback to decision_observer with its own corresponding interface DecisionObserver.

Something like that:
class DecisionStrategy(ABC):
    @abstractmethod
    def decide(metadata: np.ndarray, data: np.ndarray, session: Session) -> Label:
        pass

class DecisionObserver(ABC):
    @abstractmethod
    def observe(metadata: np.ndarray, data: np.ndarray, session: Session, decision: Label) -> None:
        pass

That will:

separate different parts of the state in the clear way,
make the purpose of callbacks and their look more obvious to user,
moreover we may move them out of the Session.__init__ to setDecisionStrategy and addDecisionObserver to relieve the constructor a bit.

Is that reasonable? @matwey @hombit

I don't support an idea of making a base class with a single method which users must inherit from. While I agree that it makes user's code more self-descriptive, it also makes it longer and harder to write. My feeling that we rarely see such interfaces in Python libraries, which usually prefer functions over classes. Moreover I don't think that people of science will find it more obvious.
Having long init is fine, look at scikit or other ML libraries like PyTorch Lightning.
However, we should rename arguments if current names are unclear.


Fix TargetCloseError

The Issue
await browser.close() causes the TargetCloseError
Closes #143 and #131, #134, #135, #145

The Fix
I've tried 2,5 hours to fix this, what I learned:

This error should not appear, because everything gets closed correctly (MediaRecorder, WebSocket & navigator.mediaDevices.getUserMedia)
Although it does appear. My final assumption is that something underlying in puppeteer-core does not get closed correctly or gets reassigned.
By closing all tabs except the extension tab and then calling chrome.tabs.query({}), triggers something underlying, so the error is gone
What also works: Closing all tabs except the extension tab and then waiting 2 seconds. But that might be to inconsistent, because different systems are different fast

How to test in debugging

Create a new node project
Install puppeteer-stream: npm i puppeteer-stream
Create index.js file and set the content to

const { launch, getStream, wss } = require("puppeteer-stream");
const fs = require("fs");

(async () => {
    const browser = await launch({
        executablePath: "C:/Program Files/Google/Chrome/Application/chrome.exe",
    });
    const page = await browser.newPage();
    await page.goto("https://www.youtube.com/watch?v=dQw4w9WgXcQ");
    const stream = await getStream(page, { audio: true, video: true });

    const file = fs.createWriteStream(__dirname + "/" + parseInt(Math.random() * 100) + ".webm");
    stream.pipe(file);

    await new Promise(r => setTimeout(r, 10000));
    await stream.destroy();
    file.close();
    await browser.close();
    (await wss).close();
})();

Clone this pull request into parent folder
Install dependencies npm i --save-dev
Run npm run build
Replace this file with the according one in the node_modules/puppeteer-stream folder of the step 1 project

dist/PuppeteerStream.js

Open command line, navigate to step 1 project and execute node index.js
Confirm browser and program close without error

Thank you very much for your contribution
I've tested it and the error seems to be gone.
I've merged and published a new version:
npm i<EMAIL_ADDRESS>


Wrap up v1.1

After all changes that can be merged before the milestone deadline have been merged, use git tag feature to tag the current version with the milestone v1.1 and push the tag to the team repo.

@v1.1


Optional interact for input

I was wondering why there is no interact_opt on the input prompt. Is there a specific reason or just not implemented yet?

@SirWindfield i think at the moment there even can't be an empty string. It has to be at least a whitespace or am I wrong? But yeah returning None would be nice.

No, an empty string works currently. You just have to enable it explicitly:
https://github.com/SirWindfield/git-cm/blob/47de71b9e7245e12c4b881a8aef0b5b61b272ee8/src/questions.rs#L53-L58

I think I will close this issue unless anyone objects.

Why closing it? It's a feature request, a new method that returns an Option instead of an empty String 🤔