DBAPI2

Okay bare with me on this one.  We currently have three different user bases.

Scientific and Engineering codes
A set of chat bots
JayDeBeAPI users

We have picked up a lot in category 1 in the last year.  But the other two are still present at some level.  Unfortunately, JayDeBeAPI never made the transition from JPype 0.6.3 to 0.7.  Thus, it is the number one reason that JPype is pinned at an old version in a Python package.  This creates problems in many ways.  First, JayDeBeAPI hides JPype and launches it internally, thus we end up as a dependent package with zero visibility.  Next, the wrapper is very incomplete leaving a huge pile of holes that generate questions.  Last, it is pretty much abandoned leaving users to wander in here and ask questions about code I don't know anything about.  Anyone using it is basically stuck with buggy code and can't benefit from the huge improvements we have made.
When 687 lines of code is causing me headaches the nature response is rewrite it.  So this is my ham fisted attempt to deal with it.  I took a bunch of different testbenches that were license compatible (JayDeBeAPI is not), and began writing code to satisfy them.  Unfortunately, dbapi2 is really incomplete in Python compared to JDBC so there is a lot of holes.  Many of the DBAPI tests could never pass as one version expects one set of behavior and another version expects the opposite.  This left a lot of ambiguity so I read though a bunch of other DBAPI compatible wrappers and came up with a set of features the meets the needs when you have 3 different type systems playing together.   It is close to JayDeBeAPI where I could make it, draws pretty heavy on sqlite and also mysql and others.  Nothing quite covered the needs exactly so in some places I decided it was time to be creative.
Thus, my best solution is just build a better version of it and include it in our tool so that we don't lose that section of the community as we plow ahead.   Thoughts?  Objections?
This PR is ready for user input... it is time to look of the API, suggest name changes, steer stuff that is wrong headed in a new direction, and try to shake a few bugs out.
If anyone has a test which can use callproc() to produce an OUT argument and an IN/OUT argument is would be great.
If anyone has a test which can exercise nextset with a Java compatible memory only database it would help
Once the bugs are gone we can proceed to code review for inclusion in 0.8.

Items that need to be done before this is releasable.

[ ] Collect input from users (and reviews) regarding how JDBC types are presented.  The getters/setters/converters/adapters was invented to try to make it usable, but it is not clear if it meets the needs yet.
[ ] Collect input on how SQLExceptions are transferred back to the user.   Python requires much finer grain exceptions than JDBC so splitting the exceptions to the right type is a chore.
[ ] Add in common adapters that users are likely to use.  This is complicated by the fact that there are so many databases.  One group may want VARCHAR to accept memoryview and another not.  We don't want default behavior that causes problems.  So we may have to make a way to bulk import a set of adapters when the user wants to configure use.
[ ] Finish the default converters (date/time/bigint).
[ ] Add a real test bench preferably running more than one Java DB solution (anything that supports memory DB is fair game)
[ ] Callable procedures
[ ] Isolation levels
[ ] Documentation

In addition there is one unresolved technical question with fairly strong implications.   The code was modeled on sqlite driver which does not support Connection or Cursors being used cross thread so the same restriction was built into this implementation.  However, JDBC has a different concept of how threading works.   I can drop the restriction easily, but we need tests and also flags that properly report the threading model used by JDBC.
Does anyone know how JDBC threading support matches with Python dbapi2 model?

Making good progress, but need to reconsider setters.  Many databases don't provide good information on the incoming type with the exception of inserts.  We will need to make the setter depend on the incoming type rather than the type requested by the database which may be very vague.

@cgivre I think it may be ready for some user testing/input.    The first hack at some documentation is located at...
https://dev.azure.com/jpype-project/jpype/_build/results?buildId=409&view=artifacts&type=publishedArtifacts

@Thrameos
Do you have any preference as to how I test this?  My main use case was with JayDeBeApi, so should I try that?

@cgivre I think the first step would be to see how well it functions as a drop in replacement in some code that uses JayDeBeApi.   If you have a project which was using it lets try a switch.  There should be two modifications minimum.

[ ] JayDeBeApi launched JPype internally, but that option was always a maintenance problem as the options to start the JVM from JPype never got shadowed.  So you will need to start JPype manually before you can use the database.

import jpype
jpype.startJVM(<other JVM args here>, classpath='<your class path here>')

[ ] Try to pretend that jpype.dbapi2 is jaydebeapi

import jpype.dbapi2 as jaydebeapi

You can see from the PR that I have tested with "h2", "hsqldb", and "sqlite" (yes I know that python already has that driver).  I could not get derby running so I am interested if your project has any luck.

@Szczepanov I know you are actively using JayDeBeAPI.  Does this PR look like a suitable long term replacement?

@baztian I see that you have come out of hibernation.     I had to start fresh as this is Apache 2 and your library in LGPL so I couldn't just fork.  If you would like to review this as a potential replacement it would help.
Key differences between this and current.

support for with statement.
support for curproc and other more advance DBAPI2 features.
support for pulling result set items with something other then getObject
support for setting parameters with specified types.
automatic translation to Java on to and from in most cases.
mode switching from Java and Python types.

I'll just weigh in here re: licensing.  FWIW, it is much more helpful if this is licensed under the Apache license (or other license that is Apache compatible) than LGPL.

@Thrameos I didn't look into your code yet. What is your preferred option? Do you like to develop your approach further or do you want me to resume development on jaydebeapi? Or do you like to contribute to jaydebeapi?
Some features you mention sound nice.
For me personally I would love to keep jython support available which you probably won't implement.
In either way the most challenging part is keeping it compatible with various jdbc drivers.Therefore I find it very important to have a solid test approach. As the CI is currently somewhat broken I'm a bit restrictive in accepting pull request and am more or less blocked until I find the time fixing the CI issues. Also most of the PRs I received so far did not provide proper test or only worked with a limited number of databases.
I don't get why lgpl is a problem for you. But I'm open on changing it to apache.

@baztian Long term I am just trying to give users an option so that people don't have to pin my library.  You are free to borrow as needed for your own subject to license compatibility.  So if some feature in mine looks interesting just steal from the Public Domain testbench and you can provide the same feature.    I did have to add some hooks in JPype to make it easier to do some things easier such as a way to check if a call would succeed to perform type conversions prior to calling and such.  I could wait for an exception to be thrown and then made the second attempt with additional cost.  But the advantage of better integration is that I can place in needed hooks.
I have no particular issue with LGPL.  I have contributed to many LGPL licensed projects in the past.  But LGPL (and GPL) is sort of a one way street so LGPL licensed code is not usable in JPype.   Thus since JPype is Apache 2 I can't simply borrow code from an LGPL project, but my understand is that may not be the same in reverse.  The JPype maintainer is pretty strongly against mixed licenses in this project..
Typical discussions on mixing Apache and LGPL.
https://opensource.stackexchange.com/questions/5664/linking-from-lgpl-2-1-software-to-apache-2-0-library
Having a clean rewrite should be beneficial to the community as I implemented a lot of features due to how I had to work from a clean start.   I started with all of the publicly available test benches for dbapi2 and then tried to see how many I could complete.  I then constructed an API that fit them all including whatever JDBC stuff that I could.   Then I rewrote the test benches to be coherent (many disagreed on what to raise, should it raise or return None, when should a behavior happen when etc).   I then put that whole test bench into Public Domain so that other authors like you could use it rather than being force to rewrite.
As far as the long term direction assuming that my version looks useful is that this driver will eventually be implemented in Java just using JPype as the bridge code rather than an actual Python module.  My long term plan is to make is so that JPype can implement Java classes from within Python and Python classes from within Java.  So for something like this were most of the code that is needed to talk with is on the Java side it will end up as a Java code with annotations make it automatically create a Python wrapper.  (JNI is fastest when few things cross the boundary so that means that stuff always needs to push the dominate side.  I am not sure how compatible that model will be with Jython.  Unfortunately, their code base wasn't useful to me when I started with JPype and it remains so today.   Looking at the Python object mode and the Java object model it would appear to be a tall order to get decent performance under the JVM.
There are unfortunately some Py3 only features that were used in my version, so it isn't clear if my API would translate to the current Jython.

**Sorry my son's login appears to have been cached on the my browser.  Resending from the proper account.  **
@baztian Long term I am just trying to give users an option so that people don't have to pin my library. You are free to borrow as needed for your own subject to license compatibility. So if some feature in mine looks interesting just steal from the Public Domain testbench and you can provide the same feature. I did have to add some hooks in JPype to make it easier to do some things easier such as a way to check if a call would succeed to perform type conversions prior to calling and such. I could wait for an exception to be thrown and then made the second attempt with additional cost. But the advantage of better integration is that I can place in needed hooks.
I have no particular issue with LGPL. I have contributed to many LGPL licensed projects in the past. But LGPL (and GPL) is sort of a one way street so LGPL licensed code is not usable in JPype. Thus since JPype is Apache 2 I can't simply borrow code from an LGPL project, but my understand is that may not be the same in reverse. The JPype maintainer is pretty strongly against mixed licenses in this project..
Typical discussions on mixing Apache and LGPL.
https://opensource.stackexchange.com/questions/5664/linking-from-lgpl-2-1-software-to-apache-2-0-library
Having a clean rewrite should be beneficial to the community as I implemented a lot of features due to how I had to work from a clean start. I started with all of the publicly available test benches for dbapi2 and then tried to see how many I could complete. I then constructed an API that fit them all including whatever JDBC stuff that I could. Then I rewrote the test benches to be coherent (many disagreed on what to raise, should it raise or return None, when should a behavior happen when etc). I then put that whole test bench into Public Domain so that other authors like you could use it rather than being force to rewrite.
As far as the long term direction assuming that my version looks useful is that this driver will eventually be implemented in Java just using JPype as the bridge code rather than an actual Python module. My long term plan is to make is so that JPype can implement Java classes from within Python and Python classes from within Java. So for something like this were most of the code that is needed to talk with is on the Java side it will end up as a Java code with annotations make it automatically create a Python wrapper. (JNI is fastest when few things cross the boundary so that means that stuff always needs to push the dominate side. I am not sure how compatible that model will be with Jython. Unfortunately, their code base wasn't useful to me when I started with JPype and it remains so today. Looking at the Python object mode and the Java object model it would appear to be a tall order to get decent performance under the JVM.
There are unfortunately some Py3 only features that were used in my version, so it isn't clear if my API would translate to the current Jython.

@cgivre Any luck on the testing?

@Thrameos
Thanks for your patience... I'm having some issues getting this to connect to the JVM and find the driver.
This is the code I'm using:
 jpype.startJVM(
                "/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/server/libjvm.dylib",
                "-ea",
                "-Djava.class.path=" + self.jdbc_driver_path + self.jdbc_jar_name)

which is producing the error below.  I've verified that the driver jar is in that path.  Any suggestions?
-Djava.class.path=/Users/cgivre/github/drill-dev/drill/distribution/target/apache-drill-1.18.0-SNAPSHOT/apache-drill-1.18.0-SNAPSHOT/jars/jdbc-driver/drill-jdbc-all-1.18.0-SNAPSHOT.jar
Traceback (most recent call last):
  File "org.jpype.JPypeContext.java", line -1, in org.jpype.JPypeContext.callMethod
  File "Method.java", line 498, in java.lang.reflect.Method.invoke
  File "DelegatingMethodAccessorImpl.java", line 43, in sun.reflect.DelegatingMethodAccessorImpl.invoke
  File "NativeMethodAccessorImpl.java", line 62, in sun.reflect.NativeMethodAccessorImpl.invoke
  File "NativeMethodAccessorImpl.java", line -2, in sun.reflect.NativeMethodAccessorImpl.invoke0
  File "Class.java", line 264, in java.lang.Class.forName
  File "Class.java", line -2, in java.lang.Class.forName0
  File "ClassLoader.java", line 357, in java.lang.ClassLoader.loadClass
  File "ClassLoader.java", line 424, in java.lang.ClassLoader.loadClass
  File "org.jpype.classloader.JPypeClassLoader.java", line -1, in org.jpype.classloader.JPypeClassLoader.findClass
  File "ClassLoader.java", line 530, in java.lang.ClassLoader.findClass
Exception: Java Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "test.py", line 34, in <module>
    with jdbc_engine.connect() as con:
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/engine/base.py", line 2272, in connect
    return self._connection_cls(self, **kwargs)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/engine/base.py", line 104, in __init__
    else engine.raw_connection()
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/engine/base.py", line 2379, in raw_connection
    self.pool.unique_connection, _connection
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/engine/base.py", line 2345, in _wrap_pool_connect
    return fn()
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/base.py", line 304, in unique_connection
    return _ConnectionFairy._checkout(self)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/base.py", line 778, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/base.py", line 495, in checkout
    rec = pool._do_get()
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/impl.py", line 345, in _do_get
    c = self._create_connection()
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/base.py", line 309, in _create_connection
    return _ConnectionRecord(self)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/base.py", line 440, in __init__
    self.__connect(first_connect_check=True)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/base.py", line 661, in __connect
    pool.logger.debug("Error on connect(): %s", e)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/util/langhelpers.py", line 69, in __exit__
    exc_value, with_traceback=exc_tb,
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/util/compat.py", line 178, in raise_
    raise exception
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/pool/base.py", line 656, in __connect
    connection = pool._invoke_creator(self)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/engine/strategies.py", line 114, in connect
    return dialect.connect(*cargs, **cparams)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/SQLAlchemy-1.3.17-py3.7-macosx-10.9-x86_64.egg/sqlalchemy/engine/default.py", line 490, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "/Users/cgivre/github/jdbc_test/env/lib/python3.7/site-packages/JPype1-0.7.6.dev0-py3.7-macosx-10.9-x86_64.egg/jpype/dbapi2.py", line 404, in connect
    _jpype.JClass('java.lang.Class').forName(driver).newInstance()
jpype.dbapi2.ClassNotFoundException: java.lang.ClassNotFoundException: jdbc:drill:drillbit=localhost:31010

You're probably specifying parameters to connect method in the wrong order. A sample code could help

The failed line appears to passing the driver name to the url.  The driver is supposed to be   "org.apache.drill.jdbc.Driver" and the url should be 'jdbc:drill:drillbit=localhost:31010'.   It appears that jaydebeapi is requiring the driver name first.  'def connect(jclassname, url, driver_args=None, jars=None, libs=None):'  which would be a bad practice as using a specific driver to load has not been required since 1.6.
https://mkyong.com/jdbc/jdbc-class-forname-is-no-longer-required/
My implementation did the following.
def connect(url, driver=None, driver_args=None,
            adapters=_default, converters=_default,
            getters=GETTERS_BY_TYPE, setters=SETTERS_BY_TYPE, **kwargs):

But jaydebeAPI did
def connect(jclassname, url, driver_args=None, jars=None, libs=None):

I would expect a proper start up to look like ...
import jpype
import jpype.dbapi2 as dbapi2

jpype.startJVM('-ea', classpath=self.jdbc_driver_path + self.jdbc_jar_name)
dbapi2.connect('jdbc:drill:drillbit=localhost:31010', driver="org.apache.drill.jdbc.Driver")

As per the apache documentation, the driver name is 'org.apache.drill.jdbc.Driver':
https://drill.apache.org/docs/using-the-jdbc-driver/#example-of-connecting-to-drill-programmatically
Things to note:

The style of startJVM with everything specified explicitly and requiring '-Djava.class.path' was deprecated after 0.6.3 because it was prone to typos (hence a constant question generator).  The keyword form is safer.   If you need more than one item on the classpath use a list.   That way you don't need to worry about the system separator.
The driver name is likely not required.  In all of my testing with sqlite, h2, hsqldb, and others, the driver name was not needed.   Only when drivers fail to register themselves properly with meta data does a driver name become required.

I will add a more explicit catch statement to the driver so it produces better diagnostics.
Looking through the pep it appears that both implementations are incorrect.  The correct arguments are called out in footnote 1.  I will revise to match the standard.
https://www.python.org/dev/peps/pep-0249/#id1
Unfortunately it will be tough to match jaydebeapi as it doesn't follow the PEP in this regard.   I suppose the safest thing I can do is force keyword only after the dsn which will make the breakage apparent.
The revised error message would be...
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    dbapi2.connect('jdbc:drill:drillbit=localhost:31010', "org.apache.drill.jdbc.Driver")
TypeError: connect() takes 1 positional argument but 2 were given

HI @Thrameos
I hate to ask you to debug my code, but here's the module I'm using: 1 and here is a link to the line where it opens the connection: 2
I'm still getting the class not found exception.   Here is my test code: 3.  Would you mind taking a look?  I really want to get this to work as SQLAlchemy is used by a lot of tools and doesn't have a generic JDBC dialect for it.  My gut is saying that there is some argument is not being passed down the chain correctly.

Sure I can try to give it a run tonight after work.  I will need some step by step instructions on how to replicate the issue.
Thus far I cloned the repo, called python setup.py build and then python setup.py test. Neither command fails (though I think it likely should as I haven't pointed it to the jpype install with dbapi2 yet.

Unfortunately it doesn't look like we are going to get enough feedback on this one for it to make the next release.  So I am going to put a hold on it for now.

Hi Karl,
I had some issues getting this to work, then we took a family vacation.  If you can hold off until Monday, I'll get you feedback over the weekend.

On Jun 10, 2020, at 9:29 PM, Karl Nelson<EMAIL_ADDRESS>wrote:
Unfortunately it doesn't look like we are going to get enough feedback on this one for it to make the next release. So I am going to put a hold on it for now.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/jpype-project/jpype/pull/744#issuecomment-642351402, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABKB7PT4X6ZZBLKWSMAFLS3RWAXPZANCNFSM4NBJFLKQ.

Sounds good.  We should getting close to our release candidate this weekend assuming no issues pop up.

@cgivre haven't heard back from you regarding the review of this work.  For this to be included I will need to locate another reviewer.
I know that some other people have tested this branch using just the dbapi2 strict portion, but  thus far noone has looked over the extensions, documentation, and general  presentation.  If someone has interest it would help to add a review.

Unfortunately it doesn't look like we are going to get enough feedback on this one for it to make the next release. So I am going to put a hold on it for now.

Taken from the perspective of a completely naive interested party in JPype who doesn't use JayDeBeAPI, but who cares about the long-term sustainability of JPype.
Looking at the changes, I see a bunch of python code which looks like it could live equally well outside of JPype core in its own package (even under the jpype-project GitHub organisation). Is there a reason why is would be a bad thing to have them as separate projects with their own lifecycle? The positives include:

a reduced codebase & test suite in core JPype
a warm feeling that it is entirely possible to implement a powerful DB interface built on JPype as a third-party package (and somebody else could implement/maintain something similar without special JPype hooks)
the potential to maintain the Jython interface (mentioned above, not sure if that is something that is plausible/desirable in this API)

@pelson @Thrameos
I apologize for not getting back with you.  I had some health issues last month and hence haven't had a chance to dig into this.  If you could give me another week or so, I can take a look and give some proper feedback from the Drill perspective.

@cgivre Sorry to hear that you had heath problems.   I hope everything is okay.  I accidentally put a pick ax into my foot while working in the yard and was too cowardly to go into have it treated due to covid 19 concerns given lung scaring from an industrial accident working a summer job in high school.   Sliced straight to the bone on my heel.  Fortunately I have little feeling there due to prior nerve damage and I am finally back on my feet after several weeks of nursing it.

My main motivation for writing a JDBC driver is that the current project for supporting JDBC in Python completely buried the use of JPype.

Thanks for the context. I had understood most of this from your prior comments, and am 100% supportive of your motivation. It is clear that the interface is already useful (and used!), and it is also clear that anything that helps the community move away from v0.6 is a positive step.

Adding additional steps to require triggering the extra packages to test each time someone submits a pull request to JPype would make supporting the interface less desirable.

Agreed. My proposal is much more than just "move the code into its own repository" though, it is about keeping their lifecycles independent (even if the dependent one (JDBC driver) binds to a specific JPype version). There are other projects which have a dependency on JPype which follow this approach (I maintain one of them :smile:), and this should be seen as a strength of JPype (along with the fact that you've been able to implement a powerful JDBC API without special JPype hooks) IMO.

At least part of the code required hooks into JPype because the front end of JPype did not support conversions that were required for speed.

Are these the customizers you've added, or are they not part of this PR? If the former, then they can happily live as a standalone JDBC driver library as much as then can in jpype.protocol, no? If the latter, it seems like you've added some stuff that can benefit any potential third-party library which uses the JDBC.

Once the reverse bridge is completed JPype will actually compete with Jython more than it does today as we will occupy the same space. As JPype will support all CPython modules we may well leapfrog them.

Indeed, I think the recent improvements to JPype are already starting to pay dividends - I can have a full CPython interpreter and still access the full power of Java. From a "Scientific and Engineering codes" perspective it is clear that being able to use a standard scipy stack is a HUGE advantage for JPype (after all, the data science movement is almost exclusively the reason for Python's explosion in popularity). This isn't really a topic for this PR though, so I'll stop there :smile:.
Just to be completely clear, I personally don't mind if this PR goes in to JPype core, I just want to make sure that giving domain specific tools an independent life-cycle is considered in order to keep JPype as focused as possible and to allow the possibility of interested parties to be able to contribute/collaborate more easily (i.e. not be daunted by collaborating on JPype-core if you only care about some Python library that interfaces to JDBC through JPype).

I strongly doubt, that creating new packages will help us in any way. I was maintaining a modular system and the cross-dependency testing between them turned out to be a nightmare, introducing lots of overhead with almost no real benefit. It had been mostly a political decision to split things up, without taking into account what additional burdens the development process will suffer. After my time it was decided to create a monolith (to lower the barrier for new developers to contribute, as reading into fragmented modules is considered more painful).
If the new protocol API does not interfere with existing projects wrapping JDBC I'm totally fine with merging now. By interference I mean that JPype claims to be the only implementation by registering wrappers for core Java API. If jpype.protocol does not get automatically imported, this should be sufficient I guess.

Thanks a lot for this major improvement!


Scale BL jutsu with rank at half rate, restrict offense boost to highest

Putting these suggestions here for your thoughts.

For BL jutsu at Jonin, using typical values:

Genin: 2.5 -> 3.5 power
Chuunin: 3.5 -> 3.95 power
Jonin: 4.4 power

BL jutsu are typically not used except in BL builds, so this is expected to have no/low impact for majority of players.
Test case for boost stacking, typical balance build for Phantasmal Stalker at Jonin cap, jutsu lv100:
Total: 53941

T1 Mental Vigor: 2 turns
T2 Nerve Destruction: Arthesia deals 43651.40 damage to Kibou Defector. -Kibou Defector takes 52381.68 residual damage-
Total: 96032

T1 Shards of Self: 3 turns
T2 Nerve Destruction: Arthesia deals 48073.13 damage to Kibou Defector. -Kibou Defector takes 57687.75 residual damage-
Total: 105760

T1 Shards of Self: 3 turns
T2 Mental Vigor: 2 turns
T3 Nerve Destruction: Arthesia deals 81338.04 damage to Kibou Defector. -Kibou Defector takes 97605.65 residual damage-
Total: 178943

T1 Mental Vigor: 2 turns
T2 Shards of Self: 3 turns
T3 Nerve Destruction: Arthesia deals 74093.22 damage to Kibou Defector. -Kibou Defector takes 88911.87 residual damage-
Total: 163004

T1 Mental Vigor: 2 turns
T2 Shards of Self: 3 turns
T3 Drowning Torrent: Arthesia deals 70154.94 damage to Kibou Defector. Kibou Defector's Taijutsu offense is being lowered. (70154.94 * 0.65% = 45600)```

With change such that only the highest boost applies:
```T1 Mental Vigor: 2 turns
T2 Shards of Self: 3 turns
T3 Nerve Destruction: Arthesia deals 54960.80 damage to Kibou Defector. -Kibou Defector takes 65952.96 residual damage-
Total: 120912```

```Factoring in change to BL jutsu such that lower rank jutsu scale at half rate:
T1 Mental Vigor: 2 turns
T2 Shards of Self: 3 turns
T3 Nerve Destruction: Arthesia deals 57987.51 damage to Kibou Defector. -Kibou Defector takes 69585.01 residual damage-
Total: 127,845```

Additional suggested change for speed boosting jutsu which are currently unused by players:
- Cast Speed no Jutsu
- Untouchable
Base Effect: 25% => 30%
Effect lv100: 30% => 36%
Duration: 3 turns => 4 turns

Calculations used: https://docs.google.com/spreadsheets/d/19soHg1hBp9OiPLui4CU016eHVgW7_T8q9E0di5NyiWM/edit#gid=0
Tested on live server over course of 30m with help from capped players. General conclusions:
- Speed boost remains a poor choice for players with average speed
- Speed boost becomes a strong choice for players with high speed

Additional suggested change along with above.
For speed boosting jutsu which are currently unused by players:

Cast Speed no Jutsu
Untouchable
Base Effect: 25% => 30%
Effect lv100: 30% => 36%
Duration: 3 turns => 4 turns

Calculations used: https://docs.google.com/spreadsheets/d/19soHg1hBp9OiPLui4CU016eHVgW7_T8q9E0di5NyiWM/edit#gid=0
Tested on live server over course of 30m with help from capped players. General conclusions:

Speed boost remains a poor choice for players with average speed
Speed boost becomes a strong choice for players with high speed

For BL jutsu at Jonin, using typical values:
* Genin: 2.5 -> 3.5 power
* Chuunin: 3.5 -> 3.95 power
* Jonin: 4.4 power

I like this, let's do it

Additional suggested change along with above. For speed boosting jutsu which are currently unused by players: Cast Speed no Jutsu & Untouchable
* Base Effect: 25% => 30%

* Duration: 3 turns => 4 turns

This sounds good but 4 turns is a long time for any effect to be active. What about 35-40% for 3 turns?

Higher percent boost for speed is a little weird because it benefits players with lower speed more while causing players with high speed to overcap. Also I'm not 100% sure on how we can make the speed boost viable without increasing to 4 turns. Like if you get +20% evasion for 3 turns, that's still only 60% of an attack, and you sacrificed one of your own attacks to get it.


Istio 1.17+ Increase in 503s compared to Istio 1.16

Bug Description
Knative has a networking conformance test were we probe an ingress endpoint while we mutate a Virtual Service (indirectly through Knative's internal type).
The type of mutations that occur include adding header responses and changing the backend destination. The backend destinations are static and always available.
This test has been flakey in earlier versions (https://github.com/knative-sandbox/net-istio/issues/938) but trying to bump to Istio 1.17.1 seems to consistently fail (https://github.com/knative-sandbox/net-istio/pull/1068)
Version
Istio 1.17+

Additional Information
No response

Currently we have Istio 1.17.0 in CI - and you can see the flakey behaviour - https://testgrid.k8s.io/r/knative-own-testgrid/net-istio#continuous&width=20

Besides access logs are there ways to capture data or debug this further?
This might be similar to a bug we've seen in Contour - https://github.com/projectcontour/contour/issues/2151

Do we have access logs? That would eb the most useful to figure out what type of error we are talking about. Knowing what type of mutation would help as well. I couldn't reproduce just movbing a VS from backend1 to backend2

Test is here
https://github.com/knative/networking/blob/c692e9e6afe17fdd870e19fd04a869585296e315/test/conformance/ingress/update.go#L35
We actually stress it by running it 10x in parallel
https://github.com/knative-sandbox/net-istio/blob/11ffd8009173b43a2401a37245dc281806b6273c/test/conformance/ingress_test.go#L32
On Tue, Mar 7, 2023 at 18:58 John Howard @.***> wrote:

Do we have access logs? That would eb the most useful to figure out what
type of error we are talking about. Knowing what type of mutation would
help as well. I couldn't reproduce just movbing a VS from backend1 to
backend2
—
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/43816#issuecomment-1459051796, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAERAVPLGWY2LBXWXF47I3W27DTJANCNFSM6AAAAAAVTBVVXU
.
You are receiving this because you authored the thread.Message ID:
@.***>

I tried to reproduce but it just hanged forever, this is after installing istio + knative and running go test -count=1 -p 1 -tags=e2e ./test/conformance -run TestIngressConformance -v.

I tried to reproduce but it just hanged forever, this is after installing istio + knative and running go test -count=1 -p 1 -tags=e2e ./test/conformance -run TestIngressConformance -v.

There are some prereqs - install ko then
# Upload test images
$ ./test/upload-test-images.sh

# install our Istio setup
$ kubectl apply -f third_party/istio-latest/istio-ci-no-mesh/istio.yaml

# Install test resources
$ ko apply -f test/config

# Install knative net-istio plugin
$ ko apply -f config/

# Run tests
$ gotestsum -f testname --  -tags e2e -timeout 30m --parallel 12 -run TestIngressConformance ./test/conformance --enable-beta --enable-alpha

Failed run with Telemetry
I have a failed run. You can access prow logs. Or it might be easier to access Cluster Logs via GCP LogViewer
You can access those logs by being a member of the google group https://groups.google.com/g/knative-dev
Here's a query that shows a pod becoming ready and then Istio serving 503s
You can see the Endpoint is ready around 2023-03-10 13:11:20.742 EST, insert ID(f53228af-5116-4f45-852a-13eaa9d68320)

[2023-03-10T18:11:20.516Z] "GET / HTTP/1.1" 503 UH no_healthy_upstream - "-" 0 19 0 - "<IP_ADDRESS>" "knative.dev/TestIngressConformance/0/update/ingress-conformance-0-update-lmjbdirz" "31e6033c-8ad8-4989-9996-544bc574738f" "ingress-conformance-0-update-yaljemdf.example.com" "-" outbound|81||ingress-conformance-0-update-tnemuddb.serving-tests.svc.cluster.local - <IP_ADDRESS>:8080 <IP_ADDRESS>:55564 - -

Here's a summary of the customizations we do
from: https://github.com/knative-sandbox/net-istio/blob/main/third_party/istio-latest/istio-ci-no-mesh.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    pilot:
      autoscaleMin: 3
      autoscaleMax: 10
      cpu:
        targetAverageUtilization: 60
    gateways:
      istio-ingressgateway:
        autoscaleEnabled: false

  meshConfig:
    defaultConfig:
      terminationDrainDuration: "20s"

  components:
    ingressGateways:
      - name: istio-ingressgateway
        k8s:
          replicaCount: 3
          resources:
            limits:
              cpu: 3000m
              memory: 2048Mi
            requests:
              cpu: 1000m
              memory: 1024Mi

Ok so in the logs of the prow failure.
I see ingress-conformance-0-update-tnemuddb is marked as "healthy" in endpoints. Then I see /healthz calls to it giving 503 UH. So far seems expected, there is eventual consistency to readiness. Then there are 503 calls to / - this seems unexpected maybe, I wouldn't think we move traffic over while the prober is failing(?). Eventually we get 200s.
This seems like expected behavior from Istio. There is eventual consistency, so we expect some 503s before we give 200s.
I have an extremely hard time following Knative tests, I've looked at the logs for like 30min and cannot understand what they are doing, what they are expecting, and what the outcome is. So all I understand is that we get 503s then some 200s which is in line with endpoint propagation. My expectation is knative is probing for 200s before switching traffic over, and the logs seem to indicate that is NOT happening.
In an "Istio bug" I would expect traffic to be:

Probe 503... repeat as much as needed
Probe 200
Real traffic 503 - should be ready at this point

But we see, as far as I can tell:

Probe 503... repeat as much as needed
Real traffic 503 - ?? shouldn't be sending real traffic
Probe 200
Real traffic 200

I am probably missing something, let me know

Looks like this issue was reported before - https://github.com/istio/istio/issues/29310
But generally the test does the following

We have a VS pointing to a ready backend A (Deployment & Service)
There's prober running hitting the VS host name
We spin up backend B (Deployment & Service) and wait for a ready endpoint
We update the VS with the new backend B.
Check the prober only received 200 OKs

So the test is ensuring that updating a VS to point to a different and healthy backend is a safe operation. But we're in fact getting 503s.
These logs show the backend spinning up and becoming ready along with envoy cds logs - scroll to the beginning
https://console.cloud.google.com/logs/query;query=resource.labels.cluster_name%3D"e2e-cls-vdqcepgz"
timestamp<%3D"2023-03-19T21:06:53.877850059Z"
timestamp>%3D"2023-03-19T21:00:00Z"
"ingress-conformance-9-update-xkeuftpr";timeRange=2023-03-19T21:06:52.816502Z%2F;summaryFields=resource%252Flabels%252Fpod_name:false:32:beginning;cursorTimestamp=2023-03-19T21:06:50Z;resultsSearch=ingress-conformance-9-update-xkeuftpr?referrer=search&project=knative-boskos-36

time
log line

2023-03-19T21:06:52.565402Z
Endpoint appears as ready

2023-03-19T21:06:52.773955Z
info	ads	Push debounce stable[1609] 6 for config ServiceEntry/serving-tests/ingress-conformance-9-update-xkeuftpr.serving-tests.svc.cluster.local and 3 more configs: 100.480777ms since last change, 242.27403ms since last push, full=true

.
push debounce occurs 3x

2023-03-19T21:06:52.816502Z
Virtual Service is updated

2023-03-19T21:06:52.833554Z
debug	envoy upstream external/envoy/source/common/upstream/cds_api_helper.cc:55	cds: add/update cluster 'outbound

.
same as above x5

2023-03-19T21:06:53.015959Z
503s - debug	envoy router external/envoy/source/common/router/router.cc:470	[C4467][S1965534937268489447] cluster 'outbound

That test seems invalid on any version of Istio and probably even stock kube-proxy. The workload being ready is the signal to the data plane to start sending traffic to the backend, not the data plane reporting it has actuated this. So there is expected eventual consistency here I think? lmk if I misunderstood

although the fact in that example it does seem like we did update the proxy is odd. I guess the eventual consistency is mitigated by the fact the updates to Ready and Virtual Service are through the same process (Istiod) so it probably typically processes them in that order (or together with debounce). However this is not guaranteed by k8s - Istio could see the virtual service event before the endpoint event I believe

This test has been flakey in earlier versions (https://github.com/knative-sandbox/net-istio/issues/938)

It's been a problem in the past the issue above was filed when we were using Istio 1.13/4. We've been dealing this flakes for a while - I just stepped up to dig into their cause recently.

The workload being ready is the signal to the data plane to start sending traffic to the backend, not the data plane reporting it has actuated this. So there is expected eventual consistency here I think? lmk if I misunderstood

But when the workload is ready it's currently not a backend for any VS. So at that time traffic is still going to backend A.

So there is expected eventual consistency here I think? lmk if I misunderstood

I think I understand what you're saying - there's a race between the endpoint propagation and the route propagation.
But the drift seems pretty significant. Endpoint propagation is much slower and the first non-503 takes ~900ms from when the endpoint is ready. While the route cut over happens in 450ms (time from VS update to first 503)

Ok, got some more info.
so https://github.com/istio/istio/issues/29310 was a bug because we tried to remove un-unused envoy clusters. So when the route changed to point to them, the new cluster was added, but was still "warming" when the route was ready. This was reverted to the old behavior to fix the problem; the cluster is always there ready to go.
However, this still has an issue - when a cluster changes in Envoy, it is basically a new cluster. When we scale from 0 to 1 instances, we are always going to change the cluster since we change the match_subject_alt_names. This introduces the same issue as 29310, but only scoped to "scale 0 to 1 then try to send traffic immediately"


safe_load is gonna be deprecated

Thank you for this awesome package, but I got a warning while running pytest:
PendingDeprecationWarning:
  safe_load will be removed, use

    yaml=YAML(typ='safe', pure=True)
    yaml.load(...)

  instead
    obj = cfg.yaml_loads(b)

my environment:
$ python --version
Python 3.10.4

ruamel-yaml==0.17.21
pydantic-yaml==0.6.3

Hope this one can be fix soon, thanks!

Hi, got it - added this to my TODOs. Honestly, supporting both Ruamel and PyYaml seems to require more and more effort over time, but I think this can be fixed by just refactoring and wrapping a custom safe_load operator.


Export of public api and underlying layers

@a14n Should we close this PR? I'm not sure where you landed in terms of wanting to continue down this path.

I'm not sure where you landed in terms of wanting to continue down this path.

Not sure where I landed as well :). For now I'm focused on something else. But basically I'm not sure exporting the public API would make my life as customer easier.


F12 go-to-definition goes to wrong location when type is defined with "and" instead of "type"

When you define a type with and, and it contains a discriminated union, going to the definition of that type will end up inside the DU of X, instead of the definition itself. Replace and for type and it goes well.

Repro steps
You can see the wrong behavior with this code:
/// Types defined with "and" fail to go to the correct definition
module JumpingTest =
    type Three = Three of int
    and Foo = Zed of Three
    and Bar = Foo of Foo

Hit F12 on Foo in of Foo (or any other place you use the class, it doesn't matter), and you end up at of Foo, Same for Three.
Expected behavior
It should go to the definition of Foo or Three instead.
Actual behavior
It goes to a usage of Foo, in particular, a usage inside a DU. When there's multiple such usages there's no telling where you will end up. In large files, F12 is golden when it works, but pretty confusing when it doesn't.
Known workarounds
Done't use and, but there are scenario's where that's simply not possible.
Related information
Seen on any recent (15.6+) version of Visual Studio. Seen it before as well, but didn't report it earlier and I can't remember when it started, or whether it was always like that.
This worked correctly in Visual Studio 2015, i.e. 14.x (just reconfirmed, it doesn't happen there).

It's fixed in https://github.com/Microsoft/visualfsharp/pull/5050

Ive not checked though. Is this bug specific or it’s just about navigating to recursive type declaration?

@vasily-kirichenko I'm not sure it's related to recursion. It happens with the example snippet always and that's not recursive of itself.

OK

@abelbraaksma It's fixed in master:

Closing and labeling for posterity

Great work, thanks!


support modules_$uts modules in run.json

It would be nice to have this documented in https://docs.pantahub.com/pantavisor-state-format-v2/#bsprunjson


pingfederate_oauth_client resources raise errors when persistent_grant attributes are not declared

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform Version
v1.3.9, on linux_amd64
provider version v0.1.1
PingFedeerate v11.1.1

Affected Resource(s)

pingfederate_oauth_client

Terraform Configuration Files

resource "pingfederate_oauth_client" "test" {
  client_id   = "test"
  name        = "test"
  description = "This client is a test client"

  grant_types = [
    "ACCESS_TOKEN_VALIDATION"
  ]

  client_auth = {
    type                      = "PRIVATE_KEY_JWT"
    enforce_replay_prevention = false
  }

  jwks_settings = {
    jwks_url = "https://localhost/"
  }

  validate_using_all_eligible_atms = true

  oidc_policy = {
    grant_access_session_revocation_api = false
    logout_uris                         = null
    ping_access_logout_capable          = false
  }

  ## Enabling the following three lines "solves" the issue (but it is more like a workaround though)
  # persistent_grant_expiration_time = 90
  # persistent_grant_expiration_time_unit = "DAYS"
  # persistent_grant_expiration_type = "OVERRIDE_SERVER_DEFAULT"
}

Debug Output

https://gist.github.com/rkl3ss/1621f7e8c70e99feb2243a66ed4696f7
Panic Output

╷
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to pingfederate_oauth_client.test, provider "provider[\"registry.terraform.io/iwarapter/pingfederate\"]" produced an unexpected new value: .persistent_grant_expiration_time: was cty.NumberIntVal(0), but now null.
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.
╵

Expected Behavior

Being able to configure a pingfederate_oauth_client resource without explicitly declaring persistent_grant attributes.
Actual Behavior

When a client is created without any value for the persistent_grant attributes, or with persistent_grant_expiration_type = "SERVER_DEFAULT" (which is the default value), the error above is raised.
The only way to get rid of the error is to explicitly declare the persistent_grant attributes, as in the last lines of the example aboce. Or, at least, this is the only workaround that I could find.
Steps to Reproduce

Copy the resource above in any test configuration
terraform plan
terraform apply

Important Factoids

n/a
References

n/a

Hi @iwarapter
I'm not sure: the issue happens to me every time I declare a client resource without the three parameters, but it might be related to some other config we have in place.
I can't upload the full TF config due to the privacy restriction of my employee. But I will try to reproduce the issue on a local, clean, test environment and let you know.

Hi @rkl3ss as long as that resource is accurate the only this I can think of is client backing store, all of my tests instances use the xml store, which I guess is not your case?

@iwarapter this is probably a good hint!
I tried to reproduce the error myself on a local instance of PF, which is configured with the standard XML-based clients store, and nothing happens.
In our company's environments we use an LDAP store for that, more specifically a PingDirectory cluster.
I'm going to set-up a similar store in my local environment, let's see if this changes the outcome.

hey would it be possible to get the output of that resource apply whilst running terraform with debug (env TF_LOG=DEBUG) this would be a great help!

@iwarapter sorry for being late, I've been quite busy and I had to set-up a local PD instance to reproduce the error.
Here's the output of the terraform apply command reproducing the error: https://gist.github.com/rkl3ss/74faaff1c596edf306c124315a843ab4
Please let me know if you need any other information.

This has been fixed in v0.2.0


Incorrect role assignments for enabling backup on an Azure VM

Hi.
After a long call with your support we figured out what role assignments you /actually/ need in order to enable backup on an Azure VM:

Backup Operator on the resource group that contains the Recovery Services Vault.
Virtual Machine Contributor on the resource group that contains the Virtual Machine

You need to set these explicitly, being Owner of any of these resource groups is not good enough as far as I can tell.
Please verify my findings and if they are accurate, update your documentation.

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

ID: c0294f74-c28c-01e2-d096-a2ef7ce0ffc7
Version Independent ID: a9755f49-9599-5ed6-a6ef-eed045aeee29
Content: Manage Backups with Azure Role-Based Access Control
Content Source: articles/backup/backup-rbac-rs-vault.md
Service: backup
GitHub Login: @trinadhk
Microsoft Alias: trinadhk;markgal

@MartinNr5  Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

We just need Backup Operator on the Recovery Services vault and a virtual machine contributor on the VM for which you want to enable backup.

@trinadhkotturu - please see case number<PHONE_NUMBER>26025 for more information on why those rights you mention didn't work for me. The support engineer added a number of rights but in the end the final resolution was to add the respective rights you mention to the respective resource groups.
Let me know if you want to set up a remote session or similar to see this issue in our environment.

#please-close

@trinadhkotturu I just happened to notice this closed issue after we published the update with the columns.
Under "Enable backup", Virtual Machine Contributor is currently listed as scope of VM resource. This issue suggests that it is supposed to be scoped to the whole resource group containing the VM. Do we need to make another update to that?
You didn't make an update to the language about VMs when closing this case per below, so I wanted to double check.
https://github.com/MicrosoftDocs/azure-docs/commit/42cdd3b5d3719075d3c7ab67e1d25b5de00013a4#diff-21383da6c6291aa464f877208a3d7bed

This is something which we are fixing and it is only applicable when I want to check backup status from VM blade and not applicable when we go thru Recovery Services vault.

I have also added a note about this in the doc.


Checking the OperatingSystem inside TEstBase probably isn't correct

I don't think this code is testing the correct OS accurately

It's most likely just returning true if you're on a Mac and true if you're on a windows desktop

Yeah you were totally right about this one. Fixed this differently now in the new approach: https://github.com/jfversluis/BasicAppiumSample/tree/separate-projects-stable-appium


Remove unneeded xmlns="http://www.w3.org/2000/svg" from inline SVGs

Description
Remove unneeded xmlns="http://www.w3.org/2000/svg" from inline SVGs
Saves a few bytes = tiny performance improvement
Type of change

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

How Has This Been Tested?

Checklist

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

@coliff Can you remove this from the icon template (IconFunctionalComponent.template.ejs) in generate-icons folder and make sure the generated icons doesn't have this attribute

@coliff Can you remove this from the icon template (IconFunctionalComponent.template.ejs) in generate-icons folder and make sure the generated icons doesn't have this attribute

I don't think I can do that right now. The icons imported from npm have the xlmns attribute (as its needed for standalone SVGs).
For now with this PR all tests pass and it works as intended, so I suggest we merge this as it is and potentially look to remove the xmlns as part of the build-icons script in a separate PR.


Added Relative Prime.py

Relative Prime Checker
Relative Prime or Coprime are the numbers which only have 1 as their common factor

This is just checking if GCD of two numbers (>1) is not one.
Please do not make it typical algorithm PR, as HacktoberFest is depreciating those projects accepting such PRs.
Please make a valid script and raise a PR.
Thank you!


parttool.py crashes when retrieving partition info (IDFGH-3279)

Environment

Development Kit:      [N/A]
Kit version (for WroverKit/PicoKit/DevKitC): [N/A]
Module or chip used:  [N/A]
IDF version (run git describe --tags to find it):
v4.1-beta1-182-g9778b163b
Build System:         [idf.py]
Compiler version (run xtensa-esp32-elf-gcc --version to find it):
(crosstool-NG esp-2019r2) 8.2.0
Operating System:     [Linux]
Using an IDE?: [No]
Power Supply:         [N/A]

Problem Description
parttool.py crashes when attempting to retrieve partition from valid partition name and table.
Expected Behavior
Partition information should be returned.
Actual Behavior
This error occurs when a valid partition name is given, nothing is returned otherwise. Input partition file is ensured to be valid.
Steps to reproduce
Execute the following instruction on the root of a project folder where partition table file is also stored:
$ parttool.py --partition-table-file partition_table.csv get_partition_info --partition-name ota_data
Where partition_table.csv is a valid partition table file and ota_data can be any valid partition name from the table.
Code to reproduce this issue
N/A
Debug Logs
Traceback (most recent call last):
  File "/home/x/esp-idf/components/partition_table/parttool.py", line 346, in <module>
    main()
  File "/home/x/esp-idf/components/partition_table/parttool.py", line 339, in main
    op(**common_args)
  File "/home/x/esp-idf/components/partition_table/parttool.py", line 208, in _get_partition_info
    for i in info:
TypeError: 'NoneType' object is not iterable

Other items if possible

[ ] sdkconfig file (attach the sdkconfig file from your project folder)
[ ] elf file in the build folder (note this may contain all the code details and symbols of your project.)
[ ] coredump (This provides stacks of tasks.)

Hi @XaviDCR92!
Could you try to add --info size?
parttool.py --partition-table-file partitions.csv get_partition_info --partition-name otadata --info size
I think you expected that it will work and return offset and size, for this you can use --info size offset .
I will fix this by adding the default option for the info option [offset, size].
Thanks

That solved it. Thank you!

Reopen until the fix is available on GitHub.


Categories

As a user I want to segregate words by categories,  e.g.  "English" "Portuguese" etc.

#30


Actions.push with params not working with Drawer

Version
Tell us which versions you are using:

react-native-router-flux v4.0.0-beta.28
react-native v0.52.0

Expected behaviour
Actions.push('scene', { back: true }); shows a back button when the scene is pushed onto the stack and displayed
Actual behaviour
Scene is pushed on to the stack but no back button is displayed
Steps to reproduce
This is my router definition:
<Router navigationBarStyle={navBarStyle.headerBg} titleStyle={navBarStyle.headerFg}>
                <Scene key="root" hideNavBar>
<Scene key="main" initial={this.props.isLoggedIn}>
                        <Scene drawerPosition="right" headerTintColor="#fff" key="drawer" title="Welcome" hideNavBar contentComponent={SideMenu} drawer>
                            <Scene key="home" component={Main} title="Welcome" />
                            <Scene key="brandlist" component={BrandList} title="Select Brand" />
                            <Scene key="specs" component={SpecList} title="Specifications" back />
                        </Scene>
                    </Scene>
</Scene>
</Router>

And within the SideMenu component I call Actions.push('brandlist', { back: true, title: 'Select Something' });
The scene is correctly loaded but I can't change any params, such as add back button or change title.
Seems like this should work according to the docs but it doesn't ?

Any news?

same problem

Same problem. Anyone find a solution?

Please try to reproduce it with Example project and latest version 4.0.0-beta.40. Feel free to open if the issue still exists

It works for me! This is my code:
I have a left menu (Drawer).
NB: It works if in my menu.js I call "Actions.team_nav()" and NOT "Actions.my_team()"  and then I can pass data to "show_player_from_team" with "Actions.push("show_player_from_team",{player: player})"
<Router>
      <Stack key="root">
        <Lightbox key="lightbox">
            <Drawer
              hideNavBar
              key="drawer"
              contentComponent={MenuContent}
              drawerIcon={IconMenuBtn}
              backButtonImage={MenuBackIcon}
              drawerWidth={300}
              initial
            >
              {/* My Team navigation */}
              <Scene key="team_nav">
                  <Scene
                    key="my_team"
                    component={MyTeam}
                    title={genericLocalizedString.lblIlMioTeam}
                  />
                 <Scene
                    key="show_player_from_team"
                    component={ProfileUser}
                    title={genericLocalizedString.lblAggiungiGiocatore}
                    back
                  />
              </Scene>
           </Drawer>
        </Lightbox>
      </Stack>
    </Router>

hey @matteocollina  - I am having a similar problem right now and I know this post is very old, I was curious what you meant by your solution. When you said "and then I can pass data to "show_player_from_team" with "Actions.push("show_player_from_team",{player: player})"
Are you making 2 Action calls to pass data to "show_player_from_team" ?

@alittletf with my version I can transfer data from one scene to another ({player: player}).

from app.js (root scene in my app) to MyTeam.js (Actions.team_nav())
from MyTeam.js to ProfileUser.js with the transfer of data (Actions.push("show_player_from_team",{player: player}))

@matteocollina what versions are you on for:
React-native-router-flux:
React:
Redux:
React-Redux:
Thank you so much in advance!

@alittletf
React-native-router-flux: 4.0.0-beta.31
React: 16.3.1
Redux: 4.0.1
React-Redux: 5.1.1
React-Native: 0.55.4

Having same issue. This is related to:
https://github.com/aksonov/react-native-router-flux/issues/3374

Hey guys - I am having troubles to have my environment back to work since I have stopped with react-native for a while.  I'm getting familiar with the ton of changes since my last contribution to the project.

@aksonov if possible - could you email me or send me a couple of instructions about the new version or procedure changes in my absent? thank you.

Hi, welcome back!
If you are about RNRF 4.1.0-beta.x install - nothing is changed except react-native-gesture-handler (required by react-navigation 3.x)

On 29 Mar 2019, at 14:05, Davis Z. Cabral<EMAIL_ADDRESS>wrote:
@aksonov https://github.com/aksonov if possible - could you email me or send me a couple of instructions about the new version or procedure changes in my absent? thank you.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/aksonov/react-native-router-flux/issues/2843#issuecomment-477990419, or mute the thread https://github.com/notifications/unsubscribe-auth/ABQpcbexyfSEZknia8yLfzcOe2MK_KRAks5vbg-vgaJpZM4RybXJ.


fix(schedules): update person selector style when there is no assistant

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


Minor cleanup

Add separators to long literal.
Use first() instead of get(0)

looks good, but you may want to make these values pub const somewhere. Maybe even move them to martin-tile-utils?  Not sure.

P.S. Technically you only need one constant - EARTH_CIRCUMFERENCE

Update
-20_037_508.34 + min_x as f64 * tile_size  to EARTH_CIRCUMFERENCE * 0.5 + min_x as f64 * tile_size?
But if we make a pub const for -20_037_508.34, the naming would be hard...  HALF_EARTH_CIRCUMFERENCE?

you don't need to have a constant for half - do it as part of the function, and the compiler will optimize it

Do you mean?
pub const A_CONST = 4000.0;
let result = A_CONST * 0.5 * var_a;

Compiler would generate something like let result = 2000.0 * var_a?

yes

oh, i just realized why you are fixing this - my #1006 now forces mbtiles crate to also go through the pedantic check, but because GitHub CI is still on Rust 1.73, it didn't show any warnings. I think we don't want to make it mandatory just yet, so i will relax these requirements. It doesn't mean we shouldn't fix them, only that we may want to relax a few rules.

the linting rules are now relaxed for mbtiles, you shouldn't get any warnings


krishma_hw2_q1

Changes made to the Ubuntu 24.04 Desktop using virtual machine.

In the assignment instruction:

Add a README.md file, describing the major resources you modified, including their package name/URLs, if exist, and open-source license type

Please describe the software license for each of the added components/artworks/fonts you used.

thanks, merged


Handle unwraps when launching json-rpc server

Handle unwraps when launching json-rpc server here and here.

Looks like this was fixed.

Fixed by https://github.com/ethereum/trin/pull/562.


Typo in Digital Earth Africa Beginners MD file

A great resource. A typo in the MD file 'Digital Erath Africa'.

Which file has the typo?

@alexgleith I think it's this one:
https://github.com/digitalearthafrica/deafrica-sandbox-notebooks/blob/master/Beginners_guide/README.md

@kitmacleod thanks for reporting, will be fixed soon in the notebooks repo
https://github.com/digitalearthafrica/deafrica-sandbox-notebooks/pull/117


⚠ Jenkins Plugins Artifactory has degraded performance

In 0faa6d2, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1240 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 4585c1f after 12 minutes.


fix expiration date for locally signed certs

Realized that the expiration date was being set to 1 year out instead of what was specified by new_expiry_date when signed by local CA. The GENCERT command needed the expiration date as well, or else it would default to 1 year out.
Also removed handlers for setropts refresh so that it could be done before a listing of the renewed certificate at the end to verify visually in the output that renewal was successful.

@ddimatos please take a look when you get a chance, very small change to the cert renewal playbook to fix expiration date not being set correctly.


Examples for Geospatial schema files required by WorkRecordResource

I have created examples and validated them for all of the schema files required by the WorkRecordResource.

Also this seems to introduce merge conflicts with PR #74

@cookeac I have altered the resource types.
I have set schemes for product registration to "nz.govt.nzfsa.eatsafe.acvm.register" and for withdrawals to "nz.govt.nzfsa.eatsafe.acvm.whp".  I don't know if these are appropriate.  I cannot find a list of WHP's on the ACVM website.
Also I have abbreviated the acvm URL somewhat.  Is that OK?
I don't know what to do for schemes that might be for commercial companies (e.g. fertiliser companies and testing laboratories).  I deliberately avoided using proper company names in case that caused issues.
I have resolved the conflict in lengthMeasureType.  I was improving the example.

@cookeac I have altered the resource types.
I have set schemes for product registration to "nz.govt.nzfsa.eatsafe.acvm.register" and for withdrawals to "nz.govt.nzfsa.eatsafe.acvm.whp". I don't know if these are appropriate. I cannot find a list of WHP's on the ACVM website. Also I have abbreviated the acvm URL somewhat. Is that OK?

Yes, it is good where there are country-specific examples such as these to get them as close to reality as possible.
One piece of advice I was given by a leader in a government organisation was that organisational structures or names change regularly over time, while regulated systems and purposes evolve much more slowly. As the scheme URIs don't need to be URLs, you could consider "nz.govt.acvm.register", for instance.

I don't know what to do for schemes that might be for commercial companies (e.g. fertiliser companies and testing laboratories). I deliberately avoided using proper company names in case that caused issues.

You're right not use an actual company name. Ideally over times these lists (e.g. tests) will be standardised across companies and use standard schemes. But at least some will remain company specific, and fictional data in examples is fine.


Jun 14, 2022 Community Meeting Agenda (中文社区会议)

KubeVela Community Meetings
Every two weeks we host a community meeting to showcase new features, review upcoming milestones, and engage in Q&A with the KubeVela community - all are welcome, and we encourage participation.
The purpose of this thread is to form a discussion amongst the KubeVela community on potential topics to highlight during the meeting. If you have a topic you wish to present or learn more about, please comment and be sure to include your name and a short description of the topic.
The conversations in this thread will directly influence the meeting agenda for the community call on Tuesday, June 28, 2022 19:00 PM China Standard Time (CST). The meeting agenda will be finalized by a Community Call Host days prior to the meeting.
Thank you and we look forward to hearing your input.

Asset
Link

🔗 Meeting Link & Password (中文社区)
Zoom Call: https://us02web.zoom.us/j/88035629406Password: OWp2TlNqM0NjUjhoTlF6eGZMNURuZz09

🎥 Meeting Recordings (中文社区)
https://space.bilibili.com/180074935/channel/seriesdetail?sid=1842207

Meeting time
Tuesday Jun 14th, 2022 19:00 PM China Standard Time (CST)  - See it in your local time

欢迎使用中文留言或交流，此会议也全程使用中文沟通。 (This meeting will use Chinese to negotiate.)

@jefree-cat will give a introduction about a proposal of observablity and SLO Ref: https://github.com/kubevela/community/issues/8#issuecomment-1140992479

Discussions about multicluster concurrent reconciliation performance and related horizontal scaling issues.
Backgrounds:
Assume that we, as CICD platform owners & developers, would like to host one or more control plane cluster(s) with KubeVela core & gateway controller to delivery applications to our external customers. It is likely that we have to vela-cluster-join customers' data plane clusters, which are usually not a small number, and put ourselves under such situation where burst of concurrent reconcile on OAM applications is the common case.
Increasing concurrentReconciles may be the viable workaround solution for now. However, considering that usage of a independent control plane, especially its worker nodes, may be further extended by introducing more horizontal scaling mechanisms.

有关vela-core controller在多集群部署场景下的并发性能&水平性能扩增讨论。
背景：
考虑一种业务场景：CICD平台的开发者，希望通过自持（一个或多个）部署了KubeVela相关控制器的控制面集群，为平台的外部客户提供应用交付能力。这种情况下，客户的数据面集群将会join到控制面集群上（因为是对外业务，量级通常不会是数个或是十数个这样的小规模），且通常会伴随客户的发布节奏产生较明显的OAM application调谐并发量尖峰。
临时解决方案可能是直接增大控制器的concurrentReconciles，但考虑到单点并发的扩增量瓶颈总在apiserver，单纯调谐的方式可能也无法充分利用控制面集群的worker节点，希望能够探讨KubeVela在此类有性能水平扩增诉求场景下的实践方式。


vimPlugins.telekasten-nvim: add missing dependencies

The plugin relies on both plenary-nvim and telescope-nvim.

Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[X] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 349346

x86_64-linux

:white_check_mark: 2 packages built:

vimPlugins.telekasten-nvim
vimPluginsUpdater

aarch64-linux

:white_check_mark: 2 packages built:

vimPlugins.telekasten-nvim
vimPluginsUpdater

x86_64-darwin

:white_check_mark: 2 packages built:

vimPlugins.telekasten-nvim
vimPluginsUpdater

aarch64-darwin

:white_check_mark: 2 packages built:

vimPlugins.telekasten-nvim
vimPluginsUpdater


Maths.h bug in macro definition

The min, max, and abs macros need total parens outside the expression, otherwise they're buggy.
For example:
if (abs(a) >= 512)
This produces wrong results with the current macros.

done.


Refactor component to use Commodore's Kustomize support

See also https://github.com/projectsyn/commodore/pull/646 and https://github.com/projectsyn/documentation/pull/169
Checklist

[x] PR contains a single logical change (to build a better changelog).
[x] Categorize the PR by setting a good title and adding one of the labels:
bug, enhancement, documentation, change, breaking, dependency
as they show up in the changelog.

Tests will fail until https://github.com/projectsyn/commodore/pull/646 is merged


Loss does not change from nan

Hi, I am really appreciate of your work
I am enjoying with your trained model. I am trying to train my own dataset, I got stuck with that loss keeps showing me nan
log :

src image is source image of mask. Cannot upload here due to copyright
mask:

env:
env.txt

Thanks for you interests. You could try to overfit one or two pairs of your
training set, if it still doesn't work, you probably have to imsave the
ground truth and image loaded by the dataloader to see whether they are
correctly loaded and normalized.
Besides, you could also double check the type and range of your images and
labels as well as the sigmoid functions to see if they are correct.
On Wed, Jan 19, 2022 at 1:44 PM gyupro @.***> wrote:

Hi, I am really appreciate of your work
I am enjoying with your trained model. I am trying to train my own
dataset, I got stuck with loss keeps showing me nan
log :
[image: image]
https://user-images.githubusercontent.com/79894531/150104609-8e125c03-7cc0-4803-aaf1-f33add61ac20.png
image is mask of source image. Cannot upload here due to copyright
mask:
[image: image]
https://user-images.githubusercontent.com/79894531/150104938-a56d05e6-2b28-4f6a-b07f-511e78f04aa5.png
env:
env.txt
https://github.com/dennisbappert/u-2-net-portrait/files/7895894/env.txt
—
Reply to this email directly, view it on GitHub
https://github.com/dennisbappert/u-2-net-portrait/issues/12, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ADSGOROSY6ZYR7EG4IIFXBLUW2BYBANCNFSM5MJN2BLQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

--
Xuebin Qin
PhD
Department of Computing Science
University of Alberta, Edmonton, AB, Canada
Homepage: https://xuebinqin.github.io/

Thanks for your prompt reply.
I checked all details you provided, those were okay but I found the problem. I fixed it by chaing parameter "detailed_masks = True" in dataset.yaml configuration file.
I think I have to deliberately look into it what has been set wrong.
Thank you.


Progress incorrect when content is gzip encoded

The content length reported by the HTTP header is the encoded length, whereas the length accumulated in the code is decompressed:
https://github.com/AnthumChris/fetch-progress-indicators/blob/master/fetch-basic/supported-browser.js#L36
As a result, progress extends beyond 100%

Good find! Thanks @ColinEberhardt

I'll plan on adding a "file size" response header or investigating if the Streams API can support compressed encodings.

@ColinEberhardt I contacted the Streams spec authors and was told that decompression happens at a lower level in the browser before the Streams API can access the raw network transfer.  Progress indicators for gzip (or other encodings) can only occur if the server sends a custom header.
I updated my Nginx server to calculate and send x-file-size header. The Streams JavaScript examples are also updated.  I added some files below you can use to test gzip.
// uncompressed, no content-encoding
fetch('https://fetch-progress.anthum.com/10kbps/test/data/100kb.dat');

// gzip-compressed
fetch('https://fetch-progress.anthum.com/10kbps/test/data/100kb.txt');

@AnthumChris Can you provide more information on how to set this x-file-size header in Nginx? How do you configure Nginx to calculate it? Is this because Nginx can access it before encryption?

@mitar Yes, have a look at https://github.com/AnthumChris/fetch-progress-indicators/pull/14/commits/b4ef3644b56c8c614e0d179a26ecd7bd441b0bd1

Awesome, thanks. Not sure how performant that is though, to open every file again and again. :-( But definitely cool.

I'm confident it won't impact UX on a page and performance impact should negligible. In-memory caching strategies could also be used.  For 10,000 HEAD requests of a 1 GB file, a/b times were ~ 1.102s vs 1.327s, which is 0.0000225s per file.
$ ab -ik -c 1 -n 10000 https://fetch-progress.anthum.com/test/data/1gb-bypass.txt

Time taken for tests:   1.102 seconds
Complete requests:      10000
Time per request:       0.110 [ms] (mean)

$ ab -ik -c 1 -n 10000 https://fetch-progress.anthum.com/test/data/1gb.txt

Time taken for tests:   1.327 seconds
Complete requests:      10000
Time per request:       0.133 [ms] (mean)


verify position relative to accuracy

Gladys Pull Request check-list
To ensure your Pull Request can be accepted as fast as possible, make sure to review and check all of these items:

[x] If your changes affects code, did your write the tests?
[x] Are tests passing?
[x] Is the linter (eslint) passing?
[ ] If your changes modify the API (REST or Node.js), did you modify the documentation?

NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
Description of change
I fix the issue in havershine formula (division by 2)
I've changed the way Gladys checked if the user left or entered an area.

Gladys check before the area where the user is inside by verifying if he left it by taking accuracy into account. (it virtually increase the size of the radius)
Then Gl

adys check if the user has entered the areas he was not inside, without taking accuracy into account this time.
It should cover mostly of the cases, but sometimes, user could really left or enter an area while Gladys would not register it because of a bad accuracy.

Thanks for your PR! Just merged it :)


For good performance,asynchronous replication needed。

asynchronous on different level,rack or dc
and log faile replication ,retry or fix by hand

+1 even if not critical.
It wont be trivial to implement that and has some prerequisites:

It requires the timestamp of each file including tombstones
A "post if newer" call is required to not override an item (or a tomb stone) if there is a stored item that is newer than the one that is going to be posted
Tombstones need some grace period. Otherwise there will be a race condition between async replication and compaction: If a volume is compacted and contains an item that has been deleted before previous post was completely synced
Could be done by a log per volume in the storage directories with append only log files and a replay index. A log file can then be safely deleted if whole file has been processed.

if use add + delete replace update ,the problem should be easier ?

f use add + delete replace update ,the problem should be easier ?

what is "delete replace update"?

If I had to guess, @iwangheng meant implementing an MVCC system like Postgres does, where in order to update a row a new row with the new values are written to disk and the previous row is marked as stale and eventually cleaned up by VACUUM/garbage collection instead of changing a column in the row directly.

It seems like async replication is possible by combining the filer sync and the treat_replication_as_minimums feature.
Would the following work as workaround:

set up a single seaweedfs cluster (swfs-1)
set replication factor to 000 for master (master-0.swfs-1) & filer (filer-0.swfs-1)
set up a second seaweedfs cluster (i.e. swfs-2) with a single filer and similar components
set up filer.sync in active-passive mode
one or more volume servers in swfs-1 crash/become corrupted/lose data
get a new volume server to replace the dead one in swfs-1
copy old volume data from the volume server attached to swfs-2 to new volume server in swfs-1

Is there an easier way to do this? Is it better to just back up volume data through some other means (without using filer sync)?
Performance for 000 replication performance is so good (obviously, at the cost of durability) that I'm considering running a custom async replication setup just to get that benefit.


Improve UI of Dashboard

Hey Can I work on this issue under GSSOC22

sure, go ahead @sulogna2001

hey can I get the credentials for the backend setup

hey can I get the credentials for the backend setup

sure give your mailId I am sending

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>
Mailed you

@madihamallick I started the server but its only showing home page other pages are not showing up

@madihamallick I started the server but its only showing home page other pages are not showing up.Can you help me with that

Go to \Dashboard

It's working thank you

@madihamallick thank you  are these work points going to be added to the gssoc 23 score?


Add license to gemspec

@anatol thank you for your pull-request.
It was merged as https://github.com/rack-test/rack-test/commit/fed7b5d6b6143847401870ec7d441806d00fb903 .


[HOLD for payment 2023-06-13] [$250] Migrate DateOfBirthPage.js to function component

Class Component Migration
Filenames

[ ] src/pages/settings/Profile/PersonalDetails/DateOfBirthPage.js

type: React.Component
has state values: false
has refs: false
has context: false
lifecycle methods: none

Task

We currently have some class components in our codebase that we would like to refactor to a function component.
Here's a link with some general advice on how to refactor a class component to a function component: https://react.dev/reference/react/Component#alternatives
If you need additional guidance, please ask in #expensify-open-source
Test for any regressions and verify that there are no breaking changes

Heads up! The pricing for this issue has been adjusted based on the scope of the work and the fact that no complex bug investigations or proposal are required.

Taking this off HOLD since we just merged the other PR you were working on @arosiclair

Drafted a PR for this. Just need to do the checklist and post it

I would like to do that if goes external, Thanks

@twisterdotcom can you pay @allroundexperts for his C+ review so we can close this out? Thanks!

@allroundexperts can you apply here please? 🙇♂

Assigning Dylan because I am having issues accessing Upwork.

is this closed ?

Hi I have see this task at upwork but I did not find any issue in this closed ?

Hey team! We hired @allroundexperts for this one for tackling, thank you though!

Payment sent! Thanks team!


Oracle query is very slow when executed from SQLLab

Oracle Query executed from SQLLab is very slow.
String using to connect from Super sets to oracle using SQLAlchemy
oracle+cx_oracle://username:XXXXXXXXXX@hostname:1521/?service_name=xxxxxx
The query just keeps running and doesn't finish. Also we get service name error at times and then the query start executing. Please could help throw some light on this issue.
Make sure these boxes are checked before submitting your issue - thank you!

[x] I have checked the superset logs for python stacktraces and included it here as text if any
[x] I have reproduced the issue with at least the latest released version of superset
[x] I have checked the issue tracker for the same issue and I haven't found one similar

Superset version - 0.17.1 - Latest version
Expected results - Qeury should return result and I should be able to visualize the data.
Actual results - Query keeps running and the UI is hung.

same here

Write a the simple python script to [un]validate your connection string
import sqlalchemy as sa
sa.create_engine('mysql://root@localhost')
eng.execute('SELECT 1').fetchall()

I think the title of this issue is misleading, it sounds like it should say "Can't figure out how to connect to Oracle"


Lint errored by using artifact attestations

When using artifact attestations described in https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds the actionlint errors with an unknown permission:
Output
unknown permission scope "attestations". all available permission scopes are "actions", "checks", "contents", "deployments", "discussions", "id-token", "issues", "packages", "pages", "pull-requests", "repository-projects", "security-events", "statuses"

Example workflow
name: build-attest

on:
  workflow_dispatch:

jobs:
  build:
    permissions:
      id-token: write
      contents: read
      attestations: write

    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Build artifact
        run: make my-app
      - name: Attest
        uses: actions/attest-build-provenance@v1
        with:
          subject-path: '${{ github.workspace }}/my-app'

Related to https://github.com/rhysd/actionlint/pull/418

actionlint 1.7.0 was released which should fix this issue.

@rhysd thank you. ❤ I've opened #126 so we'll release an update soon.


NbSearchService - question

Hi,
How to use NbSearchService in different components?

Hey @aciechomski, could you elaborate? You can inject it in any component as any other Angular service.

What I do wrong?
export class ListComponent implements OnInit, OnDestroy {
  subscription: Subscription;
  constructor(
    private searchService: NbSearchService) {
  }

  ngOnInit() {
    this.subscription = this.searchService.onSearchSubmit().subscribe((data: { term: string, tag: string }) => this.search() );
  }

  public search() {
  }
  ngOnDestroy() {
    this.subscription.unsubscribe();
  }

}

@aciechomski would you mind providing a complete example? What is expected behavior, are there any errors? It's really hard to tell if there are any issues with the code without that info.

Example on ngx-admin.
Component: smart-table.component.ts
constructor(private service: SmartTableService,
  private search: NbSearchService) {
    search.onSearchSubmit().subscribe(data => this.Filter(data.term) )
    const data = this.service.getData();
    this.source.load(data);
  }

  private Filter(text)
  {
    console.log(text);
  }

Why upper search not working?

Pls answer my question.

@aciechomski have you solve the problem?


context canceled during download

Expected behaviour
Download st-game-server
Actual behavior
context canceled
Information about the Issue
Steps to reproduce the behavior

...

...

I am also seeing this for all containers
I downloaded latest today, so I guess I have v0.17.7, but the app does not appear to show version number


Adaptive gripper not working with Arduino

I'm trying to test the adaptive gripper with the Arduino example, but the gripper won't move.
/// 此文件用于mycobot设备控制末端夹爪运动，对应烧录设备为Basic
/// 烧录前请将夹爪张开至最大角度

#include <MyCobotBasic.h>
#include <ParameterList.h>

MyCobotBasic myCobot;

void setup() {
  myCobot.setup();
  delay(10);
  myCobot.powerOn();
  delay(10);
  myCobot.setGripperIni();                          //设定夹爪当前位置电位值为2048
  delay(20);
  Serial.begin(9600);
}

void loop() {
    myCobot.setEncoder(7,2048);                     //设定末端夹爪打开至2048电位值
    delay(2000);
    Serial.println(myCobot.getGripperValue());      //读取末端夹爪电位值
    delay(50);
    myCobot.setEncoder(7,1700);                     //设定末端夹爪打开至1700电位值
    delay(2000);
    Serial.println(myCobot.getGripperValue());      //读取末端夹爪电位值
    delay(50);
}

I completley opened the gripper and than burned the image as instructed.
After the transfer has finished nothing happens. The gripper stays open. I can check in the serial monitor that the gripper is completely open (prints 255). If I close the gripper manually the value gets smaller. So the getGripperValue() method seems to work. But the gripper doesn't move.
I'm using the latest Atom firmware. I burned it with the myCobot burning tool.
The gripper I'm using is the adaptive gripper.

Have you updated the firmwares of Atom and Basic? And which version of mycobot are you using ? Have you changed baud in MyCobotBasic.h ? And please upload screenshot of arduino compile and upload codes , thank you very much .

Thank you for the replay. You were right. I had an old version of AtomMain installed. I updated Atom to V4.0.1 and know the gripper is working.


Apple M1 Support

Hi there, sorry to ask here, but have you been able to run the project with apple M1? i have been trying to do it, but no success so far, i always get the following errors, i tried to do the same on apple intel and worked, but i may be doing something wrong on M1 and that's why i'm asking, thank you.
[warning] Unable to connect to snowflake: [unixODBC][Driver Manager]Can't open lib '/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib' : file not found SQLSTATE IS: 01000 Connection to database failed.

snowflake Driver's SQLAllocHandle on SQL_HANDLE_HENV

# ~/Library/ODBC/odbc.ini

[ODBC Data Sources]
SnowflakeDSII = Snowflake

[SnowflakeDSII]
Server = xxx.snowflakecomputing.com
UID = xxx
Schema = PUBLIC
Warehouse = xxx
Role = xxx
Database = xxx
Driver = /opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib
Description = Snowflake DSII
Locale = en-US
Tracing = 0

# ~/Library/ODBC/odbcinst.ini

[ODBC]
Trace=no
TraceFile=

[ODBC Drivers]
Snowflake                       = Installed

[Snowflake]
Driver      = /opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib

# simba.snowflake.ini

ODBCInstLib=/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib

# config.exs
config :snowflex, driver: "/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib"

config :job_api, JobApi.SnowflakeConnection,
  connection: [
    role: "xxx",
    warehouse: "xxx",
    uid: "xxx",
    pwd: "xxx",
    server: "xxx.snowflakecomputing.com",
    schema: "PUBLIC",
    database: "xxx"
  ]

Hey @sescobb27, thanks for opening an issue!
This has been a problem for us as well as more engineers get issued Apple Silicon Macbooks.  Some of us have had success with installing the entire Elixir toolchain via Rosetta, but the real solution is that we need Snowflake to deploy an ODBC driver for Apple Silicon.

I believe some folks are successfully using the new driver here https://sfc-repo.snowflakecomputing.com/odbc/macaarch64/index.html

hey there, i was able to solve with that installation and some other configs, i had to clear everything i did and configure it again, here is my setup if you or someone else is interested:
brew install unixodbc
# we are using 2.3.11
sudo ln -s /opt/homebrew/Cellar/unixodbc/2.3.11/ /usr/local/odbc
# add compile flag to erlang via ~/.kerlrc
KERL_CONFIGURE_OPTIONS="--with-odbc=/opt/homebrew/Cellar/unixodbc/2.3.11"
GREP_OPTIONS=''
export CC="/usr/bin/gcc -I/opt/homebrew/Cellar/unixodbc/2.3.11/include"
export LDFLAGS="-L/opt/homebrew/Cellar/unixodbc/2.3.11/lib"
asdf install erlang 24.3.4

# add the following to /opt/snowflake/snowflakeodbc/lib/simba.snowflake.ini
ODBCInstLib=/opt/homebrew/Cellar/unixodbc/2.3.11/lib/libodbcinst.dylib

# elixir config
config :snowflex, driver: "/opt/snowflake/snowflakeodbc/lib/libSnowflake.dylib"


Request for decal on mesh support either in the engine or as an official script/shader

It would be useful if we had an officially supported decal script/shader that users can just drop into the Editor
Similar to:
https://forum.playcanvas.com/t/project-decal-texture-where-the-character-at/28472
https://forum.playcanvas.com/t/spray-decal-script/25778

Dupe of https://github.com/playcanvas/engine/issues/4053


test memory and CPU usage

Is important to know how much memory and CPU is used by fievel, at least in capture_file method (which is for now the only one that we can test).
We need to test it in different scenarios: one or several .pcap files, which differ on how many packets per second are processed.

We need the originals pcap used in the paper

This is an example reading a .pcap file three times (in a loop).
It seems that the memory needs to be freed in some time, because if we have larger .pcap files it will fill the entire memory

bug confirmed with a 7GB pcap

Fixed by #56


error with esy generate

Specs:
Version 10.15.7
OCaml toplevel, version 4.10.0
esy 6.6
Inspired by the readme:
cd hello-reason
...
esy add -D generate@EduardoRFS/reason-mobile:generate.json
esy generate ios.simulator.x86_64
Error log:
.... installing @_ios.simulator.x86_64/_opam_ocaml_migrate_parsetree@path:.mocks/c1dbeec1/esy.json@d41d8                                                                                info installing: done
error: expected string
reading package metadata from ~/.esy/source/i/__ios.simulator.x86__64__s____esy__ocaml__reason__de785ef5
reading manifest @_ios.simulator.x86_64/_esy_ocaml_reason@path:.mocks/188902d4/esy.json@d41d8cd9
esy: exiting due to errors above
Fatal error: exception File "generate/src/Esy.re", line 292, characters 11-17: Assertion failed
Raised at file "generate/src/Esy.re", line 292, characters 11-24
Called from file "src/core/lwt.ml", line 1867, characters 23-26
Re-raised at file "src/core/lwt.ml", line 3027, characters 20-29
Called from file "src/unix/lwt_main.ml", line 27, characters 10-20
Called from file "src/unix/lwt_main.ml", line 114, characters 8-13
Re-raised at file "src/unix/lwt_main.ml", line 120, characters 4-13
Called from file "generate/src/Generate.re", line 431, characters 9-31

@bentxt you need<EMAIL_ADDRESS>

thanks, thats works.
on a different note, maybe in the future you could let the author close the issue.


Remove auto value

Removes the use of AutoValue

Implement Builder pattern on our own.

Add ability to merge models.

PR is looking good, mind running “make integration_test” to update the java fixtures in the repo and updating your PR?

"mind running “make integration_test” to update the java fixtures in the repo and updating your PR?"
-- done

Will review soon, also I filed this to track actually building the java code during integration tests

@RicoYao - Please take a look at the comments and let me know what you think

@rahul-malik Replied in-line.

@RicoYao - I'll merge this now, can you get yourself added to the Pinterest Github Organization so I can assign you tasks? The #opensource room should be able to help :)

@rahul-malik Thanks, I didn't realize you would actually merge it, but it's helpful so I can work on smaller follow-up pull requests. Please check in before producing a release though, as I'd want to run some extra tests.

@RicoYao Yeah I think it was far enough along where it should be merged, I wanted to merge it so I could look into actually building the code. We'll work together before drafting a release candidate which will involve actually having these models building as part of CI
That said, I did notice an issue when I tried to compile some of the code in the private initializers https://github.com/pinterest/plank/issues/174

@rahul-malik I think I broke it in my very last commit when I was trying to fix the tabbing. I normally test it in my Java IDE, but forgot on the last one. Will fix. Thanks!

@rahul-malik Also, just FYI, I'd been loading a Plank-generated model into diff D360909 for a compilation check.


outlineColor doesn't read values from theme for Input component

When providing outlineColor to Input component via sx prop, the value should be read from the theme, but it is being ignored. Only native values work.
theme = {
  colors: {
    primary: '#22aadd'
}

...

<Input sx={{outlineColor: 'primary'}} /> // Doesn't work
<Input sx={{outlineColor: 'red'}} /> // Works

Demo:
https://codesandbox.io/embed/smoosh-violet-mpyny

Currently outlineColor isn't handled by @styled-system/css (see https://github.com/styled-system/styled-system/blob/master/packages/css/src/index.js#L43-L118), but I'd accept a PR. In the meantime, you can use functional values


Adjusted GAC script so all files are loaded as config items

Previously, the GAC scan options loaded as a single file with each file in the GAC listed as a line:

This is not easy to build a policy from, so I've adjusted it so each file is loaded as a configuration item under the GAC section:

Nice one!


Minimum node version

I believe there might be a typo in the package.json.
The following :
https://github.com/arthurfauq/generator-exprest-api/blob/afeacf7a0373619e6333cdeb07b5b5414d855391/package.json#L51
should be replaced by :
 "node": ">= 10.0.0"

As the current LTS versions of node and npm are 14.17.3 and 6.14.13

Thanks for reporting it, fixed it :)


iOS build failure

Issue: xcode fails to build AppPreferences.m
The message is:
.../Plugins/cordova-plugin-app-preferences/AppPreferences.m:24:16: No visible @interface for 'UIView' declares the selector 'stringByEvaluatingJavaScriptFromString:'
Here's the function:
- (void)defaultsChanged:(NSNotification *)notification {
	NSString * jsCallBack = [NSString stringWithFormat:@"cordova.fireDocumentEvent('preferencesChanged');"];
	[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
}

Please specify your environment
Plugin version:

[x] released version: 0.7.4
[ ] repository master

Toolchain:

[x] Cordova cli
[ ] Phonegap cli
[ ] Phonegap cloud
[ ] Ionic
[x] Other: XCode

Platforms affected:

[ ] Android
[x] iOS/macOS
[ ] LocalStorage fallback for browser and blackberry
[ ] Windows and Windows Phone 8.1 and later
[ ] Windows Phone 8 and earlier (deprecated)

What the scope of your problem:

[ ] General functionality (store/fetch/remove/clearAll)
[ ] Suites
[ ] Cloud synchronization and events
[ ] Preferences pane generation and display

Here's an example fix:
https://github.com/Telerik-Verified-Plugins/PushNotification/commit/ddaa7a1548b01eccbc7f3fdd24f7356057c3931e


Integrate DRD modeling

Review Nodes

[ ] Export to PNG not available for DRD (is available for BPMN and CMMN diagrams)
[ ] Tab should read Diagram instead of Table when editing DRD
[ ] Blank page only allows creating of tables and not DRD diagrams (would personally replace create table with create DRD diagram)
[ ] When creating a new DRD it is always called Dish with ID dish Should call it Decision with randomly generated ID instead
[ ] When creating a DMN table, the name / ID combination assigned is always decision / decision. Would change that to Decision / randomly generated ID to avoid collisions, too (especially if users only work with tables on a bigger scale they will quickly run into issues due to decision ID clashes otherwise).

I'd love to see dmn-js#168 integrate, but that is a cherry on top.

The PNG export doesn't work for me, so I disabled it.

Label Editing has conflicts with shortcuts that don't have a modifier
XML Export is broken due to DMN having 2 editors (modelers)

Could you have another look at my review hints, especially the comments I added on https://github.com/camunda/camunda-modeler/compare/443-integrate-drd#diff-85cd966da56f8b501a78b1b121e2be4c? I believe the commandStack magic you added may be the reason for the remaining test cases failing.


Is that possible to save the Form data to a PDF file

I'd like to see the way to save the form data to a PDF file, This way user could have a hard copy or digital copy of the data for what they submit. I am able to do a HTML format, like to know how to save a PDF format.
Thanks
Zhujing

Not currently. We will add a print page that will allow printing so this will be possible at a later time.

#501