$data support

$data proposal implemented by AJV allows validation based on another value. It can drastically reduce the amount of custom coded performed after the schema has been validated.
Additionally, interoperability with AJV would allow to quickly implement UIs with AJV-based form generators such as VueFormJsonSchema or similar solutions.

Hi.
Thanks for the ticket -- in general, this library only implements what is present in specifications.
It's fairly easy to implement whatever other support you need or want on top either in a higher level library or within your own specific project, but yeah here, if it's not in a spec it generally wouldn't go in.

Hi.
I've tried to implement this feature on a higher level or extended validators but caught myself rewriting all validators to support resolution of validator argument. A try to apply RefResolver has failed as it doesn't work with random data rather schemas only.

So, certainly interested in things more like that. If there are specific things that you ran into while trying to implement it that were difficult, talking about what lower-level things you'd want to see is definitely in-scope.
Ideally with examples of what you implemented, so we could see what the pain points were.

My first approach was to replace all {"$data": ...}

My first approach was to extract {"$data": ...} values and apply them later. That's the point where I've started rewriting validators in my own code.
The second approach was to turn off schema validation (yes, not good) and then hack iter_errors as that's the point where $data can be resolved:
        def iter_errors(self, instance, _schema=None):
            if _schema is None:
                _schema = self.schema

            scope = _schema.get(u"id")
            if scope:
                self.resolver.push_scope(scope)
            try:
                ref = _schema.get(u"$ref")
                if ref is not None:
                    validators = [(u"$ref", ref)]
                else:
                    validators = iteritems(_schema)

                for k, v in validators:
                    validator = self.VALIDATORS.get(k)
                    if validator is None:
                        continue

                    # TODO: handle $data in v here
                    errors = validator(self, v, instance, _schema) or ()
                    for error in errors:
                        # set details if not already set by the called fn
                        error._set(
                            validator=k,
                            validator_value=v,
                            instance=instance,
                            schema=_schema,
                        )
                        if k != u"$ref":
                            error.schema_path.appendleft(k)
                        yield error
            finally:
                if scope:
                    self.resolver.pop_scope()

But as you can see there's nothing to hook into and it'll be a copy-paste implementation. To efficiently implement this the following needs to happen:

Schema update. As $data is not supported by current schema specs.
Handle $data in the iter_error loop somehow. As RefResolver is schema-based this will have to be implemented as a separate class that can track the current position in data rather than schema and be able to return value at the requested path.

And I'm not sure if I'm right here as it seems to be too much work for a simple feature so please correct me if I'm wrong.

@naquad $data is controversial and has never achieved a level of support that outweighs the problems.  There is an issue label for it in the spec repo if you want to take a look.  While people occasionally express interest no one has stepped up who can see it through as a specification project, so it's unlikely to be added anytime soon.  And may be better left as an extension anyway.  Either way, it's a spec repo question.

@naquad the way to extend validators is with the validator extension API -- I can't tell -- have you found that, and tried it?
Modifying iter_errors is indeed not supported.
The question to me is given the existing API whether one would be able to implement $data (or something like it) on top in their own project.

@handrews I've looked through the referenced $data spec proposal. Leaving aside "schema" concept and if document content should be a part of the schema (that is should domain-specific constraints influence document structure validity as $data makes document validity to depend also on content rather than just pure structure) this proposal solves a lot of tasks at hand when one tries to use JSON schema as metadata solution for all application parts. So from the practical point of view, it is a must and that's why AJV which is a very robust practical thing has implemented it. Using $data reduces the amount of hand-written validations, simplifies error generation and handling. On a high level one can say that this thing is one of the vital pieces to make JSON schema represent not just some document structure, but data model. To some extent of course.
@Julian anything I can do outside of iter_error is an ugly hack as iter_error is responsible not only for the validator invocation but also for path tracking. This is basically the primary loop of the whole validation process. Referenced custom validation would make sense if I would like to roll out something like dynamicMinimum, dynamicMaximum, etc... validators, but I'm not as validators are fine, their logic (and code) should stay the same. The value itself should be preprocessed. And schema should be updated of course.

@Julian anything I can do outside of iter_error is an ugly hack as iter_error is responsible not only for the validator invocation but also for path tracking.

It's not an ugly hack, it's the current public API :) -- it might be deficient though, which is what I'd love to figure out -- but it does not do path tracking, it just does default path tracking if you don't already do so yourself, if I understand what you mean there.
Sounds like to be more helpful I need to understand what $data is meant to do, so I can see whether it's implementable given the current API. But yeah, there are 2 current ways to extend the specifications -- one is to do pre-transformations. This one is completely outside of the library, you can do whatever transformations you want before handing a schema ultimately to a validator, and you can obviously package that transformation up into a helper method. The other way is via jsonschema.validators.extend.
It's totally possible that some wildly different validator might need even deeper changes (heck, a bunch from draft 6 required redesigning significant pieces of the library), but I can tell you one thing, which is overriding iter_errors itself will not be it :)

@naquad please take the "should $data be in the spec" topic to the spec repo.
The primary problem on the spec side is that no one has volunteered to resolve all of the concerns and see it through.  Having a volunteer does not guarantee that it will be accepted, but it is a necessary first step.  You will also find that not everyone views JSON Schema as the right starting point for a data model, or if it is how far it should go to support that in the standard.  This would be one of the many things that needs resolving.

Hi, I'm working on something that needs $data like handling. If the top-level object were passed down to the customer validator this would be quite easy to implement if the root instance and, optionally root schema were passed down to the validator functions:

Hi, I'm working on something that needs $data like handling. If the top-level object were passed down to the customer validator this would be quite easy to implement if the root instance and, optionally root schema, were passed down to the validator functions. AJV (for javascript) does this. Say my objective is a schema that validates that 2 attributes equal each other:
schema = {
    "type" : "object",
    "properties" : {
        "price" : { "type" : "number" },
        "name_dupe" : {"type" : "string"},
        "name" : {
            "type" : "string",
            'equalsRef': {
                '$data': '1/name_dupe'
                }
            },
    },
}

instance = {
        'name': 'eggs',
        'name_dupe': 'not eggs',
        'price': 1234.99
        }

def equalsRefValidator(validator, value, instance, schema, root_instance, root_schema):
    # here I can use the $data attribute of maximum to introspect root_data
    # and write whatever I want.
    # value = {'$data': '1/name_dupe'}
    # instance = 'eggs'
    # schema = {'type': 'string', 'equalsRef': {'$data': '1/name_dupe'}}
    # root_instance = { 'name': 'eggs',  'name_dupe': 'not eggs', 'price': 1234.99 }
    pass

custom_validators = {
        u'equalsRef': equalsRefValidator
        }

CustomValidator = extend(
            Draft7Validator,
            validators=custom_validators)

Passing root_instance down to the validator function would allow me to easily implement $data like handling on my own without major changes to this codebase.

The root schema is already available, it's validator.schema.
The instance.. yeah doesn't occur to me immediately, there may still be a way to have it passed to you, but if not, then yeah that seems reasonable to add, but couldn't be done the way you have it there, since that'd be backwards incompatible, so we'd need another way.
Possibly introducing a RunningValidator that represents a validator that's in the middle of validating an instance but otherwise satisfies iValidator, and then replacing the validator parameter with one of those.

Would it be backwards incompatible because of the change in function signature? How about adding it as a validator property like validator.root_instance? Seems like it would make sense alongside validator.schema.

Would it be backwards incompatible because of the change in function signature?

Exactly yeah.

How about adding it as a validator property like validator.root_instance

That couldn't work on Validator, since a single validator doesn't represent just one active validation, you can have one schema, and validate many instances with it, that's then entire point of Validator essentially, which is why some new thing would need to exist if it was to represent a single active validation.

If I alter Validator.validate() to add validator.root_instance like this:
        def validate(self, *args, **kwargs):
            self.root_instance = args[0] # <==== added this line
            for error in self.iter_errors(*args, **kwargs):
                print('error?')
                raise error

and I print it out in my custom validator:
schema = {
    "type" : "object",
    "properties" : {
        "price" : {
            "type" : "number",
            'equalsRef': {
                '$data': '1/name'
                }
            },
        "name_dupe" : {"type" : "string"},
        "name" : {
            "type" : "string",
            'equalsRef': {
                '$data': '1/name_dupe'
                }
            },
    },
}

instance = {
        'name': 'eggs',
        'name_dupe': 'not eggs',
        'price': 1234
        }

def equalsRefValidator(validator, value, instance, schema):
    print(validator.root_instance)
    print(instance)

custom_validators = {
        u'equalsRef': equalsRefValidator
        }

CustomValidator = extend(
            Draft7Validator,
            validators=custom_validators)

validator = CustomValidator(schema)

validator.validate(instance)

...it looks like it actually does exactly what I need:
~$python3 validate.py
{'name': 'eggs', 'name_dupe': 'not eggs', 'price': 1234}
{'name': 'eggs', 'name_dupe': 'not eggs', 'price': 1234}
{'name': 'eggs', 'name_dupe': 'not eggs', 'price': 1234}
1234
{'name': 'eggs', 'name_dupe': 'not eggs', 'price': 1234}
{'name': 'eggs', 'name_dupe': 'not eggs', 'price': 1234}
{'name': 'eggs', 'name_dupe': 'not eggs', 'price': 1234}
eggs

Am I missing something?

Yes, it does what you need, but now breaks anytime anyone runs something like:
v = SomeValidator({"foo": "bar"})
first_errors = v.iter_errors("abcd")
second_errors = v.iter_errors("efgh")
do_something_with(first_errors, second_errors)

Which -- if you're not doing that, and you don't mind it not working, you don't need what you changed either, just do what you usually do in this situation, use a closure.
I.e.
def validate(instance, schema):
    root_instance = instance

    def equalsRefValidator(validator, value, instance, schema):
        print(root_instance)
        print(instance)

    extend(Draft7Validator, validators={u'equalsRef': equalsRefValidator})(schema).validate(
        root_instance,
    )

validate(...)

Thanks @Julian, I'll give that a shot. It would be great to have first class support for this use case though, I've had great success with AJV using its equivalent. AJV is one of the more popular js libraries and enabling interoperability between both libraries would benefit both communities greatly.

Cool. Given the above what's the first class support that you'd be missing there? Seems reasonably easy to do what you want, no?

(I'm inclined even to close the issue if what you were after is $data support -- looks fairly possible to me)

To be honest I'm not sure exactly what you mean when you say "you don't mind it not working" but it sounds like this approach might be a little hacky and not include some features of the library.

The "you don't mind it not working" was meant to be about the way you did it previously (by actually modifying the source code -- that way breaks current library functionality) -- if you use a closure though, all the features of the library still work.
If anything the only hacky thing remaining there in the example code I gave is constructing a new validator class each time you validate, but you can get around that too with a bit more work.
So yeah I think personally this seems reasonable enough to do at this point to me, and everything should still work. Some day if anything like $data becomes part of the specification it will become part of this library too, but until then yeah I think this ticket at least is confirmed for me.
Happy to follow up if you still have questions or difficulties.

@threewordphrase It's easy for a single implementation to pick something and implement it as an extension, disregarding the concerns of others in the user community.
It's much harder to work out a solution that balances the concerns of all of the specification stakeholders and use cases.  No one has yet volunteered to take on that project with the specification.  The current spec authors, myself included, would prefer to see keywords targeted at specific use cases created as extension vocabularies, a concept added in the latest draft.  This avoids various concerns around $data violating the rule of least power.
If someone volunteers to work through the concerns, it could get added in the future, but no one has even been willing to try that over the past four years that I've been involved with the spec.

@handrews I wasn't saying $data support should be added, just advocating that the root object should be passed down by default because it would make it easier for folks to build their own shims for libraries in different languages, DIY $data handling being one example.

It's hard to predict these things, $data wants the root instance, some other behavior someone dreams up will want some other thing passed through. It's not like the root instance is the last remaining piece of state someone might want passed through, there are other examples.
I hear you about wanting to make your case simpler, but I have to consider the entirety of the library, and all of the use cases -- something being a part of the spec forces (or potentially forces) additional maintenance burden. But something not part of the spec, and still easy to do as an end user, as it seems $data is, there's only small benefit but potential big maintenance burden to accomodate.

It's hard to predict these things

This is actually part of why draft 2019-09 goes into detail on the classes of keywords (assertions, annotations, applicators, identifiers, and placeholders).  It provides sort of a bounding scope on what an implementation might need to do.
Note that the links keyword in Hyper-Schema does rely on instance data (it's a complex annotation, as opposed to most annotations that work with a single literal value).
Ideally, draft 2019-09 provides enough guidance to implement an extensible generic JSON Schema processor (which this particular library need not be- I'm not advocating that you implement Hyper-Schema, @Julian !).  At least assuming keyword designers follow the spec's recommendation to stay within that set of keyword classifiers.
The fact that there were no constraints on extension keyword behavior at all was really a problem for supporting extensibility.  You need some boundaries that you can reasonably assume.

Thanks for all your hard work on this project, guys... I know it must take a lot to beat back all the speculative feature requests from guys like me :)


Blog app - controllers specs

Added RSpec as a gem to your project.
Created a Request spec file for all  controllers.
For each action checked:

If response status was correct.
If a correct template was rendered.
If the response body includes correct placeholder text.

Added tests for show actions for User controller,


In Android, images can not be saved completely, and there will be a small blank at the top.

I have the same problem. In Android, images can not be saved in mobile phones. The whole picture is full of iPhone.

html2canvas(document.body).then(function(canvas) {
document.body.appendChild(canvas);
});
var img = new Image();
img.src = canvas.toDataURL();
$('#captureTen').html(img);

Layout problem


websockets.exceptions.ConnectionClosedError: received 4500 (private use) [BUG]

Describe the bug
I constantly getting this ErrorCode:
websockets.exceptions.ConnectionClosedError: received 4500 (private use) Internal server error; then sent 4500 (private use) Internal server error
I´ve checked the Token several times, and in the API-Explorer erverything works fine:-)
Tibber Support can´t help..
To Reproduce
import tibber
account = tibber.Account(tibber.DEMO_TOKEN) # Log in with an access token. All information gets updated here and stored in cache.
These properties are retrieved from cache and DO NOT reflect data at the given time
(but rather the data as it was when it last was cached)
print(account.name)         # "Arya Stark"
print(account.user_id)      # "dcc2355e-6f55-45c2-beb9-274241fe450c"
print(account.account_type) # ["tibber", "customer"]
print(account.login)        #<EMAIL_ADDRESS>To update the cache with new data straight from the tibber api, run this:
account.update()
Now use the updated data as you would before:
print(account.name)

Full error / traceback here
PS C:\Users\RotheS\Desktop> & C:/Users/RotheS/AppData/Local/Microsoft/WindowsApps/python3.10.exe c:/Users/RotheS/Desktop/srxtibber.py
INFO:gql.transport.websockets:>>> {"type": "connection_init", "payload": {}}
Traceback (most recent call last):
File "c:\Users\RotheS\Desktop\srxtibber.py", line 1, in
import tibber
File "c:\Users\RotheS\Desktop\tibber.py", line 55, in
asyncio.run(main())
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 649, in run_until_complete
return future.result()
File "c:\Users\RotheS\Desktop\tibber.py", line 24, in main
async with Client(
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\client.py", line 658, in aenter
return await self.connect_async()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\client.py", line 632, in connect_async
await self.transport.connect()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\transport\websockets_base.py", line 514, in connect
raise e
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\transport\websockets_base.py", line 512, in connect
await self._initialize()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\transport\websockets.py", line 152, in _initialize
await self._send_init_message_and_wait_ack()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\transport\websockets.py", line 149, in _send_init_message_and_wait_ack
await asyncio.wait_for(self._wait_ack(), self.ack_timeout)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\asyncio\tasks.py", line 445, in wait_for
return fut.result()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\transport\websockets.py", line 124, in _wait_ack
init_answer = await self._receive()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\gql\transport\websockets_base.py", line 231, in _receive
data: Data = await self.websocket.recv()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\websockets\legacy\protocol.py", line 568, in recv
await self.ensure_open()
File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\websockets\legacy\protocol.py", line 953, in ensure_open
raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: received 4500 (private use) Internal server error; then sent 4500 (private use) Internal server error
PS C:\Users\RotheS\Desktop>
Expected behavior
get DEMO data an connerction up and running
Version
latest Version tibber.py

Thanks for creating an issue! Could you add this at the beginning of your script and show the output:
import logging

logging.basicConfig()
logger = logging.getLogger("tibber")
logger.setLevel(logging.DEBUG)

Hi, i added the code snippet:-)
PS C:\Users\RotheS\Desktop> & C:/Users/RotheS/AppData/Local/Microsoft/WindowsApps/python3.7.exe c:/Users/RotheS/Desktop/srxtibber.py INFO:gql.transport.websockets:>>> {"type": "connection_init", "payload": {}} Traceback (most recent call last):   File "c:/Users/RotheS/Desktop/srxtibber.py", line 1, in <module>     import tibber   File "c:\Users\RotheS\Desktop\tibber.py", line 55, in <module>     asyncio.run(main())   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\asyncio\runners.py", line 43, in run     return loop.run_until_complete(main)   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 587, in run_until_complete     return future.result()   File "c:\Users\RotheS\Desktop\tibber.py", line 26, in main     fetch_schema_from_transport=True,   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\client.py", line 658, in __aenter__        return await self.connect_async()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\client.py", line 632, in connect_async    await self.transport.connect()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\transport\websockets_base.py", line 514, in connect     raise e   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\transport\websockets_base.py", line 512, in connect     await self._initialize()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\transport\websockets.py", line 152, in _initialize     await self._send_init_message_and_wait_ack()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\transport\websockets.py", line 149, in _send_init_message_and_wait_ack     await asyncio.wait_for(self._wait_ack(), self.ack_timeout)   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\asyncio\tasks.py", line 442, in wait_for     return fut.result()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\transport\websockets.py", line 124, in _wait_ack     init_answer = await self._receive()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\gql\transport\websockets_base.py", line 231, in _receive     data: Data = await self.websocket.recv()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\websockets\legacy\protocol.py", line 568,  in recv     await self.ensure_open()   File "C:\Users\RotheS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\websockets\legacy\protocol.py", line 953,  in ensure_open     raise self.connection_closed_exc() websockets.exceptions.ConnectionClosedError: received 4500 (private use) Internal server error; then sent 4500 (private use) Internal server error
Can you see any hint of the Problem, i´ve heard from a lot of other Forums and Thread that the websocket is buggy..
THX and hope to hear from you. BastiR

Thanks! I'm really not sure why you're receiving this error, but I'm also surprised that your code runs with Python 3.7. I thought tibber.py only supported version 3.9 and up. Could you try upgrading your Python version to Python 3.9, 3.10 or 3.11 and see if the error persists?

Hi, i fixed it by my self... Problem is the used path to the gql-socket:
wss://websocket-api.tibber.com/v1-beta/gql/subscriptions is the right one:-)


pull request for e2e test at 11/08/2016 19:45:04

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

Details

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


multi lines chart example

Can you add an example for using tool tips to a multi-lines chart e.g.  http://bl.ocks.org/mbostock/3884955
Thanks

+1
Having the ability to use them on the multi-series chart would be fantastic.
Thanks!

Closing as not a bug.  The example in the comment above should work and also explicit targets are now part of the project.


[Bug Report] Typo in Reinforcement Learning Tips and Tricks documentation page

Describe the bug
In the file docs/guide/rl_tips.srt under the Current Limitations of RL subsection, line 59 reads:

In order to to achieved a desired behavior, expert knowledge is often required to design an adequate reward function.

I think this is a typo and could be corrected to read:

In order to achieve the desired behavior, expert knowledge is often required to design an adequate reward function.

OBS: This is my first time using this project and I caught the typo while reading the docs. Nice work!

I made a PR with the proposed change in #711.


"Try again" does not clear canvas

(sorry if this was known issue being worked on)
Current master doe not clear game canvas after "try again" click

I seemed to have screwed that up in the WebGL renderer somehow. Dupe of #168


[SMALLFIX] Deprecating MASTER_RETRY.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/13908/
Test PASSed.

Build finished. Test PASSed.


License is missing

Hi all, and thank you for the awesome lib 💪🏻
Would it be unreasonable to have a LICENSE file that specifies with license the library is distributed with?
We are tidying up the licenses' situation in one of our apps, and we hit a blocker with flow-lifecycle-observer.
Thanks a lot 😍

Hi @hamen,
Just added a LICENSE file. Thanks!


No routing to internet

On VPS server (Unbuntu) or on a raspberry Pi Server, I cannot get the client to route everything to the internet via wiregaurd through my servers.
I have played  with NAT rules and sysctl net.ipv4.ip_forward=1  to no avail. The clients are set to forward all packets, and indeed must be doing so as the client then loses all internet connection when wireguard is started.  The server is not routing or the DNS not working.
The script is otherwise excellent.  I wonder if the menu options should include
"Do you want Server's LAN access?
Server only access?
Route all traffic from client to internet via this server"  and configure accordingly.
Gerry

it sounds like your firewall is preventing outbound access for the wireguard

Thank you for the reply.  Server port is open udp and TCP and android client does not have outgoing port blocking as far as I know. I will double check my windows clients. Thanks for the idea.
Gerry
On 5 Sept 2024, 17:43, at 17:43, mleku @.***> wrote:

it sounds like your firewall is preventing outbound access for the
wireguard
--
Reply to this email directly or view it on GitHub:
https://github.com/angristan/wireguard-install/issues/520#issuecomment-2332195880
You are receiving this because you authored the thread.
Message ID:
@.***>

Same problem, if there is a solution I would be grateful!

I have the same problem. Now no VPN (wire guard, openvpn) connects to the Internet. Removing wireguard from the script does not solve the problem. Only shadowsocks remains to work

I have it working now. Angristan was correct. Firewall issue.
My ISP VPS firewall system was not working in applying  the rules set, so there was no connection.
The wireguard  client app gives the impression it has connected on turing on a tunnel and changes the default route  to nowhere when not connected to the server. Openvpn does not do that, nor Softether VPN. No connection  "on" back to off, and there is no change in default route until actually connected.
Once you have a connection, there is a little handshake message.
So this confusion is nothing to do with the excellent install script, but a wireguard 'feature'  confusing me.
Gerry
On 7 Sept 2024, 08:10, at 08:10, eth5 @.***> wrote:

I have the same problem. Now no VPN (wire guard, openvpn) connects to
the Internet. Removing wireguard from the script does not solve the
problem. Only shadowsocks remains to work
--
Reply to this email directly or view it on GitHub:
https://github.com/angristan/wireguard-install/issues/520#issuecomment-2335098903
You are receiving this because you authored the thread.
Message ID:
@.***>

@gerryb  How did you fix that?

Got the ISP, running the firweeall for my VPS server to fix the firewall which was not applying firewall rule set.   They still have problems with IPv6.    So the issue was not routing at server end at all   Wirgaud is now working on my two VPS. and I applied to my Raspberry Pi server as well.  It did my own testing as a ham on these matters and my SSH socks proxy was faster to my surprise
Straight connection with no VPN on my fibre line gives 980Mbps.  Upload and download speeds were always similar.
SocksProxy using SSH (secured; key-only authentication) connecting to my VPS server came out best to my surprise.   Normally I used Seamonkey Browser to use this proxy tunnel, not all of windows.  It averaged 600Mbps.  When I set windows itself to use this proxy tunnel the speed was 680Mbps.
SoftetherVPN with its own protocol and client 460Mbps
WireGuard 280Mbps
Open VPN 150Mbps
L2PP/IPSEC    140Mbps


A small problem about the paper

At the end of section 4.3 Soft-KB Lookup + Summary, you mentioned that the final summary vector is
tilde_s^t =  [H(tilde_p^t_1), H(tilde_p^t_2), ..., H(tilde_p^t_M), q^t_1, q^t_2, ..., q^t_M, H(p^t_mathcal(T)].
I am wondering how to get tilde_p^t_i for i =1, ...M ?
Does it come from (8) ??
Thx!!

Hi, yes that is correct. \tilde{p}^t_i (v) = w^t_i (v) / Z, where Z is the normalization constant.


Tabs authentication sample for C# redirects to page not found

Tabs authentication sample for C# redirects to page not found

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

ID: 7d939a56-d1be-f2a2-3454-0f0c5144bc27
Version Independent ID: ec4d5574-ddeb-9408-ad82-d86507a5111b
Content: Authentication for tabs using Azure Active Directory - Teams
Content Source: msteams-platform/concepts/authentication/auth-tab-AAD.md
Product: msteams
GitHub Login: @o365devx
Microsoft Alias: o365devx

Removed link to C# example.  Thanks! The change should be live later today.


⚠ Samsung has degraded performance

In 581e781, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2763 ms

Resolved: Samsung performance has improved in 3db7ffe.


export&import involving two UV maps malfunctions for any materials referencing the second UV map.

Describe the bug
The GLTF export that ships with blender 3.6.2 LTS malfunctions by using the first UV map for all materials, even when the shader nodes refer to the second UV map.
To Reproduce
Steps to reproduce the behavior:

export the scene from the attached .blend as a .glb.
create a new blend file and import the .glb
activate Material Preview shading in the 3D viewport.
Grumble about how the materials do not match the original.

Expected behavior
The GLTF exporter should create .glb files that reference the correct UV map.
Screenshots
original

after export/import

.blend file/ .gltf
attached
Version

OS: linux
Blender Version 3.6.2

Additional context
NA

Confirmed.
The root cause here is the fact that the same material is link to a mesh, and to another object too.
Investigation in progress to find how to manage it

In case it helps to understand my target use case:
I have a model with three UV maps.  The first two are used in the materials to determine its appearance.  The third is used for a texture bake.
I then create a spare scene using the source meshes, but use object-specific emission materials to reference the baked textures which are based on the 3rd UV mesh.  That is what I will export to gltf (and eventually into Godot).
What I want is that the exported gltf includes the 3rd UV map which is used by the baked textures.


Warning: Error in : Problem with filter() input ..1.

Hi Honzee
I was trying to analyse my sample with your RNAseqCNV but facing error during data analysis. Please look into this and suggest some solutions.
ERROR IN Rstudio:

library(RNAseqCNV)
launchApp()
Loading required package: shiny

Listening on http://<IP_ADDRESS>:3981
Warning in readLines(input$config$datapath) :
incomplete final line found on 'C:\Users\ngs\AppData\Local\Temp\RtmpKkkqvG/86a5f01f4519aa95e37e6d11/0'
[1] "Normalization for sample: Sample_3 completed"
[1] "Preparing file with snv information for: Sample_3"
Reading in vcf file..
Extracting depth..
Extracting reference allele and alternative allele depths..
Needed information from vcf extracted
Finished reading vcf
Warning in setDT(list(l = lower, u = upper)) :
Some columns are a multi-column type (such as a matrix column): [1, 2]. setDT will retain these columns as-is but subsequent operations like grouping and joining may fail. Please consider as.data.table() instead which will create a new column for each embedded column.
Warning: Error in : Problem with filter() input ..1.
x i.l is type list which is not supported by data.table join
i Input ..1 is |....
175:
Warning: Error in : Problem with filter() input ..1.
x i.l is type list which is not supported by data.table join
i Input ..1 is |....
175:
ERROR in APP window:
x i.l is type list which is not supported by data.table join
i Input ..1 is |....
System details:

version
_
platform       x86_64-w64-mingw32
arch           x86_64
os             mingw32
system         x86_64, mingw32
status
major          4
minor          0.2
year           2020
month          06
day            22
svn rev        78730
language       R
version.string R version 4.0.2 (2020-06-22)
nickname       Taking Off Again

Kindly do needful to resolve this issue.
Thanks and regards
Deepak

Dear Deepak,
thank you for trying out RNAseqCNV, I hope we can solve the issue soon.
A similar issue was already raised by a different user, I suspect it might be due to a recent update in code. I will resolve it and will let you know after.
If this would not solve your problems, I will look more closely into your case individually.
Best,
Jan

Dear JanThanks, waiting for update. RegardsDeepakSent from my Samsung Galaxy smartphone.
-------- Original message --------From: honzee<EMAIL_ADDRESS>Date: 11/08/2020  20:52  (GMT+05:30) To: honzee/RNAseqCNV<EMAIL_ADDRESS>Cc: Deepak Verma<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [honzee/RNAseqCNV] Warning: Error in : Problem with filter() input ..1. (#5)
Dear Deepak,
thank you for trying out RNAseqCNV, I hope we can solve the issue soon.
A similar issue was already raised by a different user, I suspect it might be due to a recent update in code. I will resolve it and will let you know after.
If this would not solve your problems, I will look more closely into your case individually.
Best,
Jan
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

Dear Deepak,
I have updated the package, you can try to reinstall RNAseqCNV, but I am not sure if it will solve your issues.
I think the issue is either in 1. incompatible input or 2. package versioning

To check for the correct input format or for me to make the package work for your specific data, I would need to see your data first. It would be great if you could send me the first few lines of your vcf file without the header.

To see what versions of packages you are working with, please use:
utils::sessionInfo()
and send me the result. Some of the package versions you are using might be incompatible with RNAseqCNV at the moment.

Thank you,
Jan

Dear JanThank you so much for your quick response.  I will share you the results as soon as I run it.Best regardsDeepakSent from my Samsung Galaxy smartphone.
-------- Original message --------From: honzee<EMAIL_ADDRESS>Date: 12/08/2020  22:50  (GMT+05:30) To: honzee/RNAseqCNV<EMAIL_ADDRESS>Cc: Deepak Verma<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [honzee/RNAseqCNV] Warning: Error in : Problem with filter() input ..1. (#5)
Dear Deepak,
I have updated the package, you can try to reinstall RNAseqCNV, but I am not sure if it will solve your issues.
I think the issue is either in 1. incompatible input or 2. package versioning
To check for the correct input format or for me to make the package work for your specific data, I would need to see your data first. It would be great if you could send me the first few lines of your vcf file without the header.
To see what versions of packages you are working with, please use:
utils::sessionInfo()
and send me the result. Some of the package versions you are using might be incompatible with RNAseqCNV at the moment.
Thank you,
Jan
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

Dear Deepak,
I managed to replicate the error by updating dplyr and tidyselect, corrected it subsequently, and uploaded the new RNAseqCNV version to GitHub. I hope this works. Please let me know.
Best,
Jan


Add RU_864_870 frequency plan to the list for Russia LoRaWAN channels

Add RU_864_870 frequency plan to the list for Russia LoRaWAN channels support in TTN
This changes are needed for submitting pull request to TTN for RU_864_870 plan support.

Thanks!


ON-15095: Add (Golang) Onload operator

In this PR, we want to introduce the Onload Operator scaffolding code and start the history from scratch to conform to https://sdk.operatorframework.io/docs/overview/project-layout/. It is tentatively based on a temporary "operator" branch, but I will reset the "master" and rebase this PR shortly.
I have not fleshed out the Onload CRD spec because @tcrawley-xilinx has started working on that already and might consider filing a follow-up PR.
For the public users, I followed the Operator SDK Golang tutorial https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/.
For the internal users, please see https://confluence.xilinx.com/display/CNS/Golang+Operator+SDK+jump+start+guide with the specifics related to our typical in-house OCP configuration.

Updating hack/boilerplate.go.txt should hopefully make updating all the go files simple

Thank you, this is a very good suggestion! I have updated it in the cleanup commit and re-generated the Golang files.


Mark certificate keys as exportable for compatibility with macOS

Fix #4056

What's the difference between .Exportable and .DefaultKeySet?

I think they are unrelated, in macOS without setting the Exportable flag it cannot work because the keys cannot be accessed by common crypt. If I recall correctly the key is read by a separate process in macOS

What's the difference between .Exportable and .DefaultKeySet?

I think they are unrelated, in macOS without setting the Exportable flag it cannot work because the keys cannot be accessed by common crypt. If I recall correctly the key is read by a separate process in macOS

Why do some servers use one vs the other?

Why do some servers use one vs the other?

An autocompletion typo, should be Exportable everywhere.

Do we have a test for this? CI on my PR doesn't seem to be failing with any TLS issues

I noticed this when updating TLS test to work with .NET 9 in issue#3990

Do we need to update the templates as well?

Yes they are still using the deprecated X509Certificate2 constructor.


Update contract address of Smart Margin

Description
This PR updates the following contract address and sets the fee to 0.
Smart Margin system deployed and verified on Optimism Goerli
Smart Margin system deployed and verified on Optimism
Related issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):

Continued in #2187


add a command line option to only run a specific case id

Is your feature request related to a problem? Please describe.
for #52 we need the ability to test different test separately. It is also useful when you only want to check a specific part of your api because changes didn't impact all of it.
Describe the solution you'd like
add a command line option to the benchmark runner and a config to the main.tsx, that filters out any main-tasks, that don't have the specified id.

@madina0801 this could be something interesting for you if you are interested :)

Looks interesting! I'm not sure how to solve it now, but I'd definitely give it a try. Is it needed to get done without external libraries? I'm thinking about something like commander or yargs :)

Since breaking the interface of the binary is not an option, likely neither yargs nor commander work right now(but can be revisited for 3.0.0). If you can get either of them to work without it breaking backwards compatibility, feel free to use them :)
https://github.com/Idrinth/api-bench/blob/master/framework/src/build-task-list.ts is where you could do the actual filtering.

I'll take a closer look tomorrow or in a couple days :)

I'm sorry, but where can I find benchmark runner file? I'm thinking about using process.argv :)

I'm sorry, but where can I find benchmark runner file? I'm thinking about using process.argv :)

sorry, forgot to add that. it's framework/bin/run-benchmark.js, that is calling framework/src/cli/bench.ts with argv as parameter.

Okay, I see the implementation as following:

Filter out main tasks in build-task-list.ts
Update the main.tsx config {taskId: null}
Modify the benchmark-run.js: create a function to parse command line args
Filter tasks based on the taskId in main.tsx
If I understood correctly what's needed to be done :)

Okay, I see the implementation as following:
1. Filter out main tasks in build-task-list.ts

yes

2. Update the main.tsx config {taskId: null}

would prefer {taskId?: string}, so it is either undefined or a string

3. Modify the benchmark-run.js: create a function to parse command line args

yes, there is a some functionality for that already. Feel free to also adjust the run-loadtest if desired

4. Filter tasks based on the taskId in main.tsx

main should remain as low logic as possible, the filtering as stated above, should be in the build-task-list.ts

   If I understood correctly what's needed to be done :)

:) looks good

hi @madina0801 if you want to discuss the topic or get some feedback we can also setup a call via for example teams or discord. Your first try looked pretty good.


I get the same error as the one I clipped since yesterday.

It looks like an issue with loading the Google Maps API and not related to this lib.
Have you tried to not instantiate this lib and only display a map to check if you still have the same issue?

a problem with the address above "https://github.com/googlemaps/js-api-loader ".


 Thanks for reporting. Well, for some reasons JLD2 has some issues on clusters. We could go with HDF5 yes, unless this also would have some issues. I went the JLD2 road as it has some concise save / load syntax.

On scratch everything is fine


php: 7.4.26 -> 7.4.27, 8.0.13 -> 8.0.14

This PR:

[x] Upgrade PHP to version 7.4.27
[x] Add myself to PHP maintainers

Motivation for this change
Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[x] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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/)
22.05 Release Notes (or backporting 21.11 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
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

@ofborg build php74

@ofborg build php74

@ofborg build php74

@ofborg test php

nixpkgs-review reveals no new failures, macos 10.15 & nixos x86_64.
Many packages also built happily on nixos aarch64

php80 also had a release, do you mind taking care of that as well @drupol? If not, I (or somebody else) can just take care of that in another PR.

Sure, will do it.

@ofborg build php74 php80

This should also be two separate commits where they actually refer to the affected attribute, which is php74: 7.4.26 -> 7.4.27 and php80: 8.0.13 -> 8.0.14 :)

Ok will do.

@ofborg build php74 php80

@ofborg test php74 php80


Simplified Travis configuration

Merged Travis js tests into one test run.
This should simplify test runs, reduce chances of external infra failures and make CI reports more focused.
Test plan (required)
See how travis runs it.
Need to double check that APPETIZE_TOKEN and S3_TOKEN aren't used.

No merging yet, waiting for #2981 to confirm

For the record the env variables were needed for Appetizer integration that probably has never been implemented.
From @vjeux
Jsierles wanted to automatically push new versions to appetize for the docs to be always up to date but don't think that he actually implemented it

Contacted jsierles on some game chat that was going to implement this if it is still relevant.
If not relevant then I'll proceed with the changes.

@ide @mkonicek FYI.
Just in case you missed my points in https://github.com/facebook/react-native/pull/2981
I feel quite confident to proceed with this change after we get travis builds stable today

@facebook-github-bot shipit

@facebook-github-bot shipit

@facebook-github-bot shipit


ACM certificate with domain validation options not idempotent

Problem
This is a follow up to https://github.com/getmoto/moto/issues/7138, but is technically a different issue, so I have opened a new one.
I noticed when doing some checks for idempotency that the acm cert was being destroyed and recreated each time when the aws_acm_certificate_validation resource is used causing multiple resource to be replaced in the run.
I also noticed it when the aws_acm_certificate_validation resource was commented out as well, but it's not every time. It seems to be after a short period of time has passed. For example, with it commented out, I could run an apply and run another one right after and it would show no changes, and possibly even a third after that, but then after waiting a short period of time then it would show the changes below even though nothing in the code changed.
It almost seems like the domain validation options are removed after a period of time passes or if they are used in subsequent code, but that could just be coincidence.
Let me know if any questions and thanks in advance!
Reproduction
I have the following Terraform files:
providers.tf
provider "aws" {
  region                      = "us-east-1"
  s3_use_path_style           = true
  skip_credentials_validation = true
  skip_metadata_api_check     = true
  skip_requesting_account_id  = true

  endpoints {
    acm     = "http://localhost:5000"
    route53 = "http://localhost:5000"
  }

  access_key = "my-access-key"
  secret_key = "my-secret-key"
}

acm.tf
resource "aws_route53_zone" "test" {
  name = "test.co"
}

resource "aws_acm_certificate" "certificate" {
  domain_name       = aws_route53_zone.test.name
  validation_method = "DNS"

  subject_alternative_names = ["*.${aws_route53_zone.test.name}"]

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_route53_record" "certificate_validation" {
  for_each = {
    for dvo in aws_acm_certificate.certificate.domain_validation_options : dvo.domain_name => {
      name   = dvo.resource_record_name
      record = dvo.resource_record_value
      type   = dvo.resource_record_type
    }
  }

  allow_overwrite = true
  name            = each.value.name
  records         = [each.value.record]
  ttl             = 60
  type            = each.value.type
  zone_id         = aws_route53_zone.test.zone_id
}

resource "aws_acm_certificate_validation" "validation" {
  certificate_arn = aws_acm_certificate.certificate.arn
  validation_record_fqdns = [
    for record in aws_route53_record.certificate_validation : record.fqdn
  ]
}

The issue:
Note: Objects have changed outside of Terraform

Terraform detected the following changes made outside of Terraform since the last "terraform apply" which may have affected this plan:

  # aws_acm_certificate.certificate has changed
  ~ resource "aws_acm_certificate" "certificate" {
      ~ domain_validation_options = [
          - {
              - domain_name           = "*.test.co"
              - resource_record_name  = "_d930b28be6c5927595552b219965053e.*.test.co."
              - resource_record_type  = "CNAME"
              - resource_record_value = "_c9edd76ee4a0e2a74388032f3861cc50.ykybfrwcxw.acm-validations.aws."
            },
          - {
              - domain_name           = "test.co"
              - resource_record_name  = "_d930b28be6c5927595552b219965053e.test.co."
              - resource_record_type  = "CNAME"
              - resource_record_value = "_c9edd76ee4a0e2a74388032f3861cc50.ykybfrwcxw.acm-validations.aws."
            },
        ]
        id                        = "arn:aws:acm:us-east-1:123456789012:certificate/8b6ae798-134b-4097-ba15-c6c63862cb70"
        # (14 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

Unless you have made equivalent changes to your configuration, or ignored the relevant attributes using ignore_changes, the following plan may include actions to undo or
respond to these changes.
...
# All the actual run info goes here, but figured it isn't actually needed to be shown, so cut it out for now
...
Apply complete! Resources: 4 added, 0 changed, 4 destroyed.

Expectation
I expect that I am able to use the domain validation options and still have the infra as code still be idempotent.
Current Setup
services:
  moto-server:
    image: motoserver/moto:latest # have also tried 4.2.13 specifically since I saw v5 is out in alpha, both have same issue
    ports:
      - 5000:5000

Hey @jrindy-iterable, thanks for raising this. Moto automatically verifies any certificates after 60 seconds, and changes the status from PENDING_VALIDATION to ISSUED. But we then return different DomainValidationOptions based on the status, which is what confuses Terraform.
Some quick testing in AWS tells me that we should return the same DomainValidationOptions - I've opened a PR with a fix.

That would explain why I would see the issue show up even with that one resource commented out, but it would only be after a short period amount of time. Thanks for looking into this and raising a PR. I'll be sure to test it out as soon as it is merged.


feat: wait broadcasted data to be available from queries

Issue being fixed or feature implemented

What was done?

wait broadcasted data to be available from queries
How Has This Been Tested?

With mn-bootstrap
Breaking Changes

Checklist:

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have added or updated relevant unit/integration/functional/e2e tests
[x] I have made corresponding changes to the documentation

For repository code-owners and collaborators only

[x] I have assigned this pull request to a milestone

This will be helpful for some things (I can eliminate a dirty hack from something I've written). But it also seems that this waiting should be optional. Some use cases may want to just store documents that are accessed infrequently (e.g. logging values to run a report once per month) and don't care whether it takes 3 seconds or 3 minutes for the data to be available. Wouldn't this PR slow down every broadcast?

@thephez it doesn't slow down broadcasting, it just resolves promise when your data is actually committed to the Platform state - acknowledgment. If you don't care you can just do not use await or handle errors with .catch. We gonna rework this part next year to make it more efficient and we will introduce different levels of acknowledgments like in other distributed databases. So you will be able to send and forget, get acknowledgment from several nodes, and so on.

Cool, sounds good :+1:


Scale test telemetry

Scale test that the telemetry system system can handle the target volume.  The simulate proxy script could be used to avoid needing to run the proxy.  We would like our test to simulate:

10K RPS
100 deployments with 100 replicas each

This could be accomplished by running 10000 instances of simulate proxy, each sending a report every 10s consisting of data from 100K requests.  Alternatively, fewer simulate proxy instances could be run if each instance simulates multiple proxy instances.
The goal is that the telemetry service should remain stable, continue to process telemetry reports quickly, prometheus should remain stable, and prometheus queries should remain fast.  It may be necessary to increase the number of replicas of the telemetry service to accomplish this.

I don't think there are any hard requirements about the topology of the services other than it look vaguely like a real application.  There should probably be some terminal services which don't make any calls and non-terminal services which call some number of other services.
One key question to answer is: can a single instance of the telemetry service keep up with this volume of reports, or are multiple instances required?

@pcalcado please let me know if there are other details that would be helpful


Prefer maven URLs going forward

Following up from https://github.com/ruby/setup-ruby/issues/220...
The S3 URLs used by ruby-build are still maintained, but we prefer that apps and tools switch to the Maven URLs. They are mirrored and federated and not dependent on us maintaining our own data store.
Pinging @enebo to see if we should make this change for earlier versions, perhaps back to the earliest version for which we push jruby-dist?

Thank you.
Could you update https://github.com/rbenv/ruby-build/blob/master/script/update-jruby too?
You can try to rerun it (./script/update-jruby <IP_ADDRESS> .) and it should not change the <IP_ADDRESS> file.

Script updated and confirmed that it does not change the <IP_ADDRESS> file when executed.
I looked into it, and we have been publishing the jruby-dist artifact as far back as JRuby 1.6.0 in 2011. For now I think just using the new URL going forward is fine, as we worked out long-term storage of the S3 artifacts with Engine Yard a couple years back.

I agree, probably best to use the new URL from 9.3 onward, and ruby-build has its own mirror in front anyway.
I installed 9.3 with this change locally and it works.
Thanks for the PR.

Sorry I was late to this but I think we should just do it <IP_ADDRESS> onward.  We can retroactively do another PR if the need ever arises.


Fail fast option

Hey,
after a while with AET I came to a conclusion that it'd be great to have a fail fast option.
Our test suite lasts for around 10 minutes (2 Karaf workers) and the goal is to keep it green all the time. Right now we have to wait until the end to find out that 3rd out of 60 pages failed.
Is it possible to stop processing upon first error? This should significantly shorten feedback loop.
Regards,
Kuba

@jwadolowski to be completely honest due to various rendering issues keeping AET green all the time might be pretty hard as in big project we see false positivites pretty often (too often to base a continuous delivery process automation on result from AET - a looot of builds would be failed ;) )

Well, no one said that's an easy process, but it's definitely achievable :)
Last year I participated in a project (quite a big one) that heavily relied on AET as a base for release and it worked quite well. We run AET in CI pipeline and simply paid a lot of attention to its stability.
@tommix1987, you actually touched upon a quite interesting topic - stability. If your tests randomly fail - what's the value they bring to the table? Is there any reason to keep such tests in place if you can't rely on them?
Getting back to that fail fast feature - in my opinion that'd be a great addition to AET, as there's no point to wait for the entire test to complete if you know something's not right since the very beginning.

Idea for a fast fail is very interesting. However it is not so easy do define...
Please remember that AET tool does not detect errors - it detects changes.
As I understand you wold like a mode that enables failing whole suite if more than X changes were detected? Or rather when there is some level of errors (e.g. 5 tested pages returned 404)?

A change is an error in my case :)
I'd like to fail the whole build as soon as any change (number of changes greater than 0) was detected by AET to shorten feedback loop.
The second case (level of errors) you brought up is quite interesting too, but up to some extent can be covered by xUnit plugin in Jenkins (leaving aside the need to wait for build end).

See also #535

It should like the issue raised by Kube extends #535, so they can be addressed together


Pinokio not showing anyting after clean install

So I had pinokio installed previously then migrated to a new external drive. This 'seemed' to work as it moved everything, but then nothing worked as the paths didn't seem to be updated on the installed apps. Anyway, so I uninstalled pinokio, renamed the external drives installation and tried to install again. It should be a clean install.
After install I get the discover content page which is typical. However, after clicking on the Visit discover page, I get a blank screen that never refreshes. I did try this yesterday and I did get the discover page, but clicking on any item would give the same blank white screen.
Is there a server its connecting to that's down???

same problem here

Same


data:DevasyaRajguru

Changes proposed
Added name and social media handles to get my LinkFree account

Check List (Check all the applicable boxes)

[ x] My code follows the code style of this project.
[ x] My change requires changes to the documentation.
[ x] I have updated the documentation accordingly.
[ x] All new and existing tests passed.
[ x] This PR does not contain plagiarized content.
[ x] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers
None

Changes proposed
Added name and social media handles to get my LinkFree account
Check List (Check all the applicable boxes)

[ x] My code follows the code style of this project.
[ x] My change requires changes to the documentation.
[ x] I have updated the documentation accordingly.
[ x] All new and existing tests passed.
[ x] This PR does not contain plagiarized content.
[ x] The title of my pull request is a short description of the requested changes.

Screenshots

## Note to reviewers
None

Make sure not to put any space between [ and x. It would be [x] to get a tick mark.

@FahimFBA please check out my code is correct or not?

Resolve the review from @SaraJaoude

I cannot find my profile in the Linkfree project, Please help me with that! @SaraJaoude

I cannot see my Profile Photo on my LinkFree Account. Please help me with that! @SaraJaoude

Hey @SaraJaoude , Please check out my query! Thanks!


fix url == nil creash

Description
iOS system objective-c , When using "url_launcher" plugin, if the urlString is illegal or Unusual, [NSURL URLWithString:urlString] = nil, calling the canOpenURL method will crash.
Related Issues
issue72704

@googlebot I signed it!

@googlebot I signed it!

@googlebot I fixed it

@googlebot I fixed it

@googlebot I fixed it.

@googlebot I fixed it.

@googlebot I fixed it.

@googlebot I fixed it.


[#377] Management: Support encryption

Expose a new variable, encryption, to support encryption and decryption of the wire protocol.
Create a new function, pgmoneta_encrypt_decrypt_buffer, to support three modes for encrypting and decrypting buffers.

There is doc/manual/user-10-cli.md

updated

Rebase, please

It should be both aes and aes256 as options.
It crashes,
    #1 0x7ff96a6f1d19 in pgmoneta_json_parse_string src/libpgmoneta/json.c:534:23
    #2 0x7ff96a7064d4 in pgmoneta_management_read_json src/libpgmoneta/management.c:1009:8

with
pgmoneta-cli -E aes expunge primary<PHONE_NUMBER>1219

Remember to test with -C zstd too

It crashes,
    #1 0x7ff96a6f1d19 in pgmoneta_json_parse_string src/libpgmoneta/json.c:534:23
    #2 0x7ff96a7064d4 in pgmoneta_management_read_json src/libpgmoneta/management.c:1009:8

The crash is not related to these new functions. I tested them, and the functionality of the new feature works well.
As for the memory leak, it's due to the function pgmoneta_json_parse_string, not an issue with my logic.

After adding log traces, both sides are printing the correct information, confirming that the crash is not related to the newly added logic.
[pgmoneta@fedora-linux-38 ~]$ pgmoneta-cli -E aes expunge primary<PHONE_NUMBER>2700
Original string {"Header":{"ClientVersion":"0.15.0","Command":13,"Output":0,"Timestamp":"20241018194214"},"Request":{"Backup":"20241013082700","Server":"primary"}}
Compressed size 147
Encrypt size 160
Encode string JUYMVx9hqnpVM85iRm1EAytVR6QuKAvDytFtdK9GExRVtU95Q5mIcTm2IXOgz4onx+2TlAubCsFvoPv1ygyBXp3koH9uxeCBqoOThAH3PjW8t9Rza/n5OHpiO6Y4I2edN84+GuvzjeGv/dNxlw1maub2LYnSGlQrON3JFF8U5cnbbXUBOiJJN1nz1VpWRdLtJsQ63RX6HMD8qsdJjg5V5w==
Reading Original string JUYMVx9hqnpVM85iRm1EAytVR6QuKAvDytFtdK9GExRVtU95Q5mIcTm2IXOgz4onx+2TlAubCsFvoPv1ygyBXp3koH9uxeCBqoOThAH3PjUAaNxOIA9ZUsm9Wy7O4fLX/hmjE30GzOYOlqDMm7ZfkQmTdE2rOZgQAj3nbX2LYfVbxXT02u4HtHwVf/0ICtLF5Uoe/rJUrHGqsQLiq2PlW+R7o2e1c93Mkis7lcTO9Fx1CRPvt7+8zODyFG2gK9Gv7EmUDIF8A/k4iBwuCFa8wGb+qMBRlTCRvdfBRPQJvi/BpYaoDkG32KEQCIy5zhXblPG+VNdCjt87wXoGVmZGFdn2mZJMFwTZ0rkBP1JL+U0jtbLJHspZYbW+wYBDeKnkKZVa99vZ6ZvwY/OjF+ei0+Kcvcja/9DJwPwG9lTkbmjMiafHoKek3iQGl4n45qULXR10fPC6/vOgWaoGXt5DJUsgm8afC4q+4aXwZKM9Ss1+kYHhcqGg1pzbrKC5lFUTk02UnWfolcWNi7na59Cf06VdsrOiilXcOik8fzD6pmBPCfMiduG8X01Ru1AOUFuRNpUrr7p4ivlTW6pSHo+Vzjbdkekx5SfvTF3JLc08c1gPtL9NWm77gF67wbq5EyoS
Reading decode size 480
Reading decrypt size 471
Reading decompress string {"Header":{"ClientVersion":"0.15.0","Command":13,"Output":0,"Timestamp":"20241018194214"},"Outcome":{"Status":true,"Time":"00:00:00"},"Request":{"Backup":"20241013082700","Server":"primary"},"Response":{"Backup":"20241013082700","Comments":"/home/postgres/pgsql/pg_replslot/repl/state, /home/postgres/pgsql/pg_replslot/log.txt, /home/postgres/pgsql/pg_replslot/tmp/da,"Keep":false,"MajorVersion":15,"MinorVersion":1,"Server":"primary","ServerVersion":"0.15.0","Valid":1}}�6�+��x��S[�R���a�
pgmoneta-cli: No connection to pgmoneta on /tmp/

[pgmoneta@fedora-linux-38 ~]$ pgmoneta -c pgmoneta.conf -u pgmoneta_users.conf
2024-10-18 19:42:08 INFO  main.c:661 Started on localhost
Reading Original string JUYMVx9hqnpVM85iRm1EAytVR6QuKAvDytFtdK9GExRVtU95Q5mIcTm2IXOgz4onx+2TlAubCsFvoPv1ygyBXp3koH9uxeCBqoOThAH3PjW8t9Rza/n5OHpiO6Y4I2edN84+GuvzjeGv/dNxlw1maub2LYnSGlQrON3JFF8U5cnbbXUBOiJJN1nz1VpWRdLtJsQ63RX6HMD8qsdJjg5V5w==
Reading decode size 160
Reading decrypt size 147
Reading decompress string {"Header":{"ClientVersion":"0.15.0","Command":13,"Output":0,"Timestamp":"20241018194214"},"Request":{"Backup":"20241013082700","Server":"primary"}}
Original string {"Header":{"ClientVersion":"0.15.0","Command":13,"Output":0,"Timestamp":"20241018194214"},"Outcome":{"Status":true,"Time":"00:00:00"},"Request":{"Backup":"20241013082700","Server":"primary"},"Response":{"Backup":"20241013082700","Comments":"/home/postgres/pgsql/pg_replslot/repl/state, /home/postgres/pgsql/pg_replslot/log.txt, /home/postgres/pgsql/pg_replslot/tmp/da,"Keep":false,"MajorVersion":15,"MinorVersion":1,"Server":"primary","ServerVersion":"0.15.0","Valid":1}}
Compressed size 471
Encrypt size 480
Encode string JUYMVx9hqnpVM85iRm1EAytVR6QuKAvDytFtdK9GExRVtU95Q5mIcTm2IXOgz4onx+2TlAubCsFvoPv1ygyBXp3koH9uxeCBqoOThAH3PjUAaNxOIA9ZUsm9Wy7O4fLX/hmjE30GzOYOlqDMm7ZfkQmTdE2rOZgQAj3nbX2LYfVbxXT02u4HtHwVf/0ICtLF5Uoe/rJUrHGqsQLiq2PlW+R7o2e1c93Mkis7lcTO9Fx1CRPvt7+8zODyFG2gK9Gv7EmUDIF8A/k4iBwuCFa8wGb+qMBRlTCRvdfBRPQJvi/BpYaoDkG32KEQCIy5zhXblPG+VNdCjt87wXoGVmZGFdn2mZJMFwTZ0rkBP1JL+U0jtbLJHspZYbW+wYBDeKnkKZVa99vZ6ZvwY/OjF+ei0+Kcvcja/9DJwPwG9lTkbmjMiafHoKek3iQGl4n45qULXR10fPC6/vOgWaoGXt5DJUsgm8afC4q+4aXwZKM9Ss1+kYHhcqGg1pzbrKC5lFUTk02UnWfolcWNi7na59Cf06VdsrOiilXcOik8fzD6pmBPCfMiduG8X01Ru1AOUFuRNpUrr7p4ivlTW6pSHo+Vzjbdkekx5SfvTF3JLc08c1gPtL9NWm77gF67wbq5EyoS
2024-10-18 19:42:14 INFO  keep.c:180 Expunge: primary/20241013082700 (Elapsed: 00:00:00)

Did you find the root cause ?

Not yet. It seems to be related to other functions that I'm not familiar with. I'm not entirely sure what each function does, but based on the log, everything points to the file art.c.
==3054104== 128 bytes in 1 blocks are possibly lost in loss record 82 of 93
==3054104==    at 0x48C0860: malloc (vg_replace_malloc.c:442)
==3054104==    by 0x53E6623: create_art_node (art.c:428)
==3054104==    by 0x53E6DBF: art_node_insert (art.c:640)
==3054104==    by 0x53E637B: pgmoneta_art_insert (art.c:354)
==3054104==    by 0x53FBFD3: pgmoneta_json_put (json.c:364)
==3054104==    by 0x540506F: create_outcome_success (management.c:1641)
==3054104==    by 0x5403583: pgmoneta_management_response_ok (management.c:788)
==3054104==    by 0x53FE73F: keep (keep.c:162)
==3054104==    by 0x53FE1F3: pgmoneta_expunge_backup (keep.c:52)
==3054104==    by 0x11BD2F: accept_mgt_cb (main.c:1266)
==3054104==    by 0x4AE20CB: ev_invoke_pending (ev.c:3770)
==3054104==    by 0x4AE5C43: UnknownInlinedFun (ev.c:4190)
==3054104==    by 0x4AE5C43: ev_run (ev.c:4021)
==3054104==
==3054104== 128 bytes in 4 blocks are possibly lost in loss record 83 of 93
==3054104==    at 0x48C0860: malloc (vg_replace_malloc.c:442)
==3054104==    by 0x542F75F: pgmoneta_value_create (value.c:69)
==3054104==    by 0x53E657F: create_art_leaf (art.c:414)
==3054104==    by 0x53E6D17: art_node_insert (art.c:618)
==3054104==    by 0x53E637B: pgmoneta_art_insert (art.c:354)
==3054104==    by 0x53FBFD3: pgmoneta_json_put (json.c:364)
==3054104==    by 0x53FCC87: json_add (json.c:717)
==3054104==    by 0x53FCE53: fill_value (json.c:753)
==3054104==    by 0x53FC9BF: parse_string (json.c:647)
==3054104==    by 0x53FD09F: fill_value (json.c:796)
==3054104==    by 0x53FC9BF: parse_string (json.c:647)
==3054104==    by 0x53FC553: pgmoneta_json_parse_string (json.c:539)

Start from main.c and work your way down

Is it pyl ?

Start from main.c and work your way down

I’ll try it, but this issue is unrelated to the current PR. If you test other CLI commands with the -C and -E options, you’ll see that the functionality in this PR works as expected.

Is it pyl ?

what does this meaning?

If I run this pull request without -E, I get no errors - so we have to track this down.
So, we have to figure out where the error is coming, first candidate is https://github.com/pgmoneta/pgmoneta/blob/main/src/main.c#L1262

    #0 0x55e5700008e3 in malloc (build/src/pgmoneta+0xd28e3) (BuildId: d6aaab731c20881703a6274ce3b0c21eb96baedf)
->  #1 0x7ff96a69b97b in pgmoneta_encrypt_decrypt_buffer src/libpgmoneta/aes.c:898:34
    #2 0x7ff96a7060e8 in pgmoneta_management_read_json src/libpgmoneta/management.c:916:17
    #3 0x55e57004b060 in accept_mgt_cb src/main.c:828:8

Are you using a Debug build with clang ?

Yes, I'm using a Debug build with Clang.
Right now, I'm still trying to understand the expunge command. I consistently encounter the following error, even when using it without the -E option:
[pgmoneta@fedora-linux-38 ~]$ pgmoneta-cli expunge primary<PHONE_NUMBER>2700
pgmoneta-cli: No connection to pgmoneta on /tmp/

However, when I check running processes, I see that pgmoneta is active:
[root@fedora-linux-38 build]# ps aux | grep pgmoneta
pgmoneta 3060725  0.3  0.2  58000  5260 pts/2    S    00:28   1:44 pgmoneta: wal/primary
pgmoneta 3122712  0.3  2.1  57676 42624 pts/2    S+   07:48   0:00 pgmoneta: main
pgmoneta 3122714  0.5  0.2  58000  5260 pts/2    S+   07:48   0:00 pgmoneta: wal/primary

I'm still investigating why the connection to pgmoneta isn't being established despite it running in the background.

It should be the same for all commands, so see if status works first, and then work from there

The strange issue is that they work perfectly when I use other commands.
I've tested them several times, so I submitted this PR. I've also checked for memory leaks, and there's no leak associated with the logic in this PR.
[pgmoneta@fedora-linux-38 ~]$ pgmoneta-cli -c pgmoneta.conf -F json -C gz -E aes status
{
  "Header": {
    "ClientVersion": "0.15.0",
    "Command": "status",
    "Output": "json",
    "Timestamp": "20241019081832"
  },
  "Outcome": {
    "Status": true,
    "Time": "00:00:00"
  },
  "Request": {},
  "Response": {
    "FreeSpace": "824.25MB",
    "NumberOfServers": 1,
    "Offline": false,
    "ServerVersion": "0.15.0",
    "Servers": [
      {
        "HotStandbySize": 0,
        "NumberOfBackups": 3,
        "RetentionDays": 7,
        "RetentionMonths": "Unspecified",
        "RetentionWeeks": "Unspecified",
        "RetentionYears": "Unspecified",
        "Server": "primary",
        "ServerSize": "34.52MB",
        "Workers": 0
      }
    ],
    "TotalSpace": "976.95MB",
    "UsedSpace": "34.52MB",
    "Workers": 0
  }
}
[pgmoneta@fedora-linux-38 ~]$ pgmoneta-cli -c pgmoneta.conf -C gz -E aes status
Header:
  ClientVersion: 0.15.0
  Command: status
  Output: text
  Timestamp:<PHONE_NUMBER>1844
Outcome:
  Status: true
  Time: 00:00:00
Request:

Response:
  FreeSpace: 824.25MB
  NumberOfServers: 1
  Offline: false
  ServerVersion: 0.15.0
  Servers:
    - HotStandbySize: 0
      NumberOfBackups: 3
      RetentionDays: 7
      RetentionMonths: Unspecified
      RetentionWeeks: Unspecified
      RetentionYears: Unspecified
      Server: primary
      ServerSize: 34.52MB
      Workers: 0
  TotalSpace: 976.95MB
  UsedSpace: 34.52MB
  Workers: 0

[pgmoneta@fedora-linux-38 ~]$ pgmoneta-cli -c pgmoneta.conf -E aes -C gz backup primary
Header:
  ClientVersion: 0.15.0
  Command: backup
  Output: text
  Timestamp:<PHONE_NUMBER>1522
Outcome:
  Status: true
  Time: 00:00:00
Request:
  Server: primary
Response:
  Backup:<PHONE_NUMBER>1522
  BackupSize: 5.00MB
  Compression: zstd
  Encryption: aes-128-ctr
  MajorVersion: 15
  MinorVersion: 1
  RestoreSize: 46.54MB
  Server: primary
  ServerVersion: 0.15.0
  Valid: yes

I'm still getting
    #0 0x55bd822e78e3 in malloc (build/src/pgmoneta+0xd28e3) (BuildId: d6aaab731c20881703a6274ce3b0c21eb96baedf)
    #1 0x7ff71909b97b in pgmoneta_encrypt_decrypt_buffer src/libpgmoneta/aes.c:898:34
    #2 0x7ff7191060e8 in pgmoneta_management_read_json src/libpgmoneta/management.c:916:17

from status

You can try valgrind too

-C on its own works

I still can’t find the memory leak in pgmoneta_encrypt_decrypt_buffer. Could you help me take a look at how we’re using it? After we use this function in pgmoneta_management_read_json, we replace it with transfer_buffer, and later we call free(transfer_buffer). I don’t see any potential for a memory leak. I’m not sure why you’re encountering this issue.

You are testing this like,
pgmoneta-cli -c pgmoneta.conf -E aes status

right ?
Because,
pgmoneta-cli -c pgmoneta.conf -C zstd -E aes status

works - so is encryption even active ?

logging.txt
Doesn't seem like the string is \0 terminated before parsed

Doesn't seem like the string is \0 terminated before parsed

If you add the following lines after s = pgmoneta_json_to_string(json, FORMAT_JSON_COMPACT, NULL, 0); in the pgmoneta_management_write_json function, you'll notice that when we first retrieve s, it is not properly terminated with \0:
   size_t max_len = strlen(s);
   for (size_t i = 0; i < max_len; i++)
   {
      if (s[i] == '\0')
      {
         break;
      }
      if (i == max_len - 1)
      {
         pgmoneta_log_error("not terminated correctly");
         s[i] = '\0';
      }
   }

This code will help identify if the string is missing a null terminator.

The pgmoneta_json_to_string function does not properly handle the resulting string.

And if we forcibly correct it by adding a \0, the subsequent processes will fail, and the server will display the following error:
2024-10-19 13:52:31 ERROR main.c:831 Management: Bad payload (1)

   size_t max_len = strlen(s);
   if (s[max_len] != '\0')
   {
      pgmoneta_log_error("Reading not terminated correctly");
      s[max_len] = '\0';
   }

I tested it again using this approach to confirm if the string is not terminated properly, but so far, I haven't found any issues.

Doesn't seem like the string is \0 terminated before parsed

Jesper is right, the string is not \0 terminated. My guess is for decrytion alone it doesn't append trailing \0, but for decompression it does. That's why it works when -C is configured.

size_t max_len = strlen(s);
if (s[max_len] != '\0')
{
pgmoneta_log_error("Reading not terminated correctly");
s[max_len] = '\0';
}

This won't work. You see strlen works by counting until \0. It won't work when the string is not terminated in the first place. @GuChad369

Of course in gcc it often works, since the surrounding bytes of the string are very much likely to be 0 anyway. But with debug mode in clang the malloced memory is wrapped around protecting bytes (the red zone), that's why you are getting the error.

Thank you for explaining. It was my mistake. I updated the code and used the following command to build it:
sudo cmake -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local ..

Now, I believe there are no errors anymore.
Please check if the current version is correct, and let me know if there are any other issues.

rebase and update

Rebase again, please

Merged.
Thanks for your contribution !


Resolve syncing conflicts from repo_sync_working_branch to main

Pull request opened by Docs to resolve syncing conflicts from repo_sync_working_branch to main.

Sync conflict on 20.3 topic - involving the topics with that PR.


Update comment in core.py

Rationale for this change
the default value of use_compliant_nested_type is True

What changes are included in this PR?
Change the comment from False to True

Are these changes tested?
No, it just changed the comment

Are there any user-facing changes?
No

You can change the Title to MINOR: Update comment in core.py


Central misses notifications from connected peripherals after increasing MTU

Describe the bug
When central is connected to multiple peripherals and the MTU is increased to 247 bytes, central gets notifications only from the last connected peripheral
To Reproduce
Steps to reproduce the behavior:

Central connects to more than one peripheral
For each connection, set the connection interval to be 25 ms
For each connection, increase the MTU above 190 bytes
Send notifications from connected peripherals other than the last connected one

Expected behavior

Central receives notifications from the last connected peripheral
Notifications from peripherals other than the last connected one are missed
Peripherals that aren't communicating disconnect with time out disconnection reason

Additional context
Issue doesn't occur if the connection interval is increased or the notification data size is below 160 bytes
Environment

OS: Ubuntu 22.04
Toolchain : Zephyr SDK 0.15.1
Commit SHA 3607a05fbaf1d85a1e11d19c6ff33b869c5e88bb
PR https://github.com/zephyrproject-rtos/zephyr/pull/52392

I think it's a controller issue, the test works fine (there were some logic errors) when peripherals are compiled with CONFIG_BT_AUTO_DATA_LEN_UPDATE=n.
It seems the central controller has issues ACK-ing one of the peripheral after switching to the max LL packet length. When the LL data length stays at 27, there are no issues whatsoever.
@kruithofa and @cvinayak To reproduce:

check out this branch: https://github.com/jori-nordic/zephyr/tree/long-packets-no-ack
run the build&test script tests/bluetooth/bsim_bt/bsim_test_conn_stress/tests_scripts/conn_stress.sh

I've tested the same scenario using the desktop application "nrf connect for desktop Bluetooth Low Energy" in place of the central device while keeping the same peripherals and following the same behavior of the central application and there were no issues found.

@ahmedmoheb-nordic @jori-nordic PR #52012 fixes this issue, but requires that the event-length update feature is enabled by adding following 2 lines to the prj.conf files:
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_CONN_EVENT_LEN_UPDATE=y
@ahmedmoheb-nordic can you confirm?


worker-short-running is a memory hog

After bumping our base image to F37, the worker-short-running leaks memory and is periodically OOMKilled and restarted.

The worker-long-running is OK so it's just the multi-threaded one.
We can try the other thread pool, i.e. eventlet instead of gevent.
We can also experiment with setting some options, but they seem to be supported only by the prefork pool.
Also read through celery/celery#4843 (EDIT: that seems to apply only to prefork pool and RabbitMQ broker)

thank you for creating this, was about to do the same :D
I stumbled upon Memory leak in run Celery Django, Gevent strategy with Multi Worker but it doesn't seem related: I couldn't find any warning in the celery startup.

I tried the eventlet pool (#1825)  end there were some PostgreSQL issues so that's not a way.
F37 contains celery-5.3.0b1, while F35 had celery-5.2.6 so I built a worker image with 5.2.6 from PyPI (rpm can't be installed because of dependencies) and I'm now running it on stg.


cmake 32bit  - box2D

I collect the library through cmake I get the 64bit version, how do I generate 32bit box2D.lib?
Maybe there are some flags at build.bat?
please help...!

Use -A Win32 switch when generating with cmake, see https://stackoverflow.com/questions/28350214/how-to-build-x86-and-or-x64-on-windows-from-command-line-with-cmake .
This issue is not related to Box2D.

thanks, I'm just learning.


Large loss with slow descent

Hi Belval ! When I use your code to train with my training data of 100,000 pictures, I got a large loss and the loss descend slowly as follows:

How can I solve this problem?
Thank you!

Unfortunately I don't have much advice to offer on this because ctc_loss is mostly a blackbox for me. Some training I did had high loss yet performed a lot better than other lower-loss training.


⚠ Bofrost.de has degraded performance

In c164bd0, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1009 ms

Resolved: Bofrost.de performance has improved in e787cb2 after 8 minutes.


[Data Flow->Data Ingestion] Manifest Ingestion DAG

Includes a Workflow Engine, an implementation of Apache Airflow, to orchestrate manifest/metadata ingestion via Storage Service

Moved from backlog to MVP


added props to add user callbacks to UI events

In LoginForm component, added props

onSignOut
onSwitchToSignUp
onSwitchToSignIn
onSwitchToPasswordReset
onSwitchToChangePassword
onSignUp
onSignIn
onChangePassword
onSwitchToSignOut

to make it possible for developers to add their own callbacks to click events for corresponding basic methods:

signOut
switchToSignUp
switchToSignIn
switchToPasswordReset
switchToChangePassword
signUp
signIn
changePassword
switchToSignOut

in a form of
  onClick: function (event) {
    if (_.isFunction(this.props.onX)) {
      this.props.onX(event);
    }

    this.X(event);
  }

Each of these methods is a function assigned to onClick of a corresponding button DOM element. Therefore, it's now possible to do something like
  <Accounts.ui.LoginForm
    onSwitchToSignIn={() => console.log('clicked "Sign In" button!')} />

and receive this message in the console every time a user clicks "Sign In" button.

Probably the naming sucks, but I haven't come up with anything better. A proper naming would involve something like "before" because outbound function received through props and then put to be called on corresponding event is called before the component's own method. But not that way of "before" as it should be, and calling a prop "onBeforeSignUp" is even more confusing. So I left names as they are and looking forward to suggestions on how to improve it.

This looks good, maybe we could simplify the code and avoid the repetition, but to merge this I need an updated Readme as well. Could you update it?

There's a conflict here, would you mind also taking care of it?

Closing after a month on inactivity.


When clicking on items in the side bar (messages, operations, schema etc) be nice to highlight the nodes in the flow diagram

Reason/Context
At the moment when you have the sidebar and the documentation open, clicking on a message, operation etc will take you straight to the place in the docs.
I think it would be a nice touch to have the nodes in the flow diagram highlight (maybe blink animate) when clicking on these nav items.
So if the user has  this nav bar open....

Clicking on the items whilst looking at the flow diagram will highlight the nodes.

Can I take up this issue?

Hey @boyney123, @magicmatatjahu!,
I can work on this issue. Please assign this to me.

@Ankitchaudharyy You can :)


Muted Icon Color in SplitButton

Describe the bug (current behavior)
When using the SplitButton and providing an icon, the icon color is muted making the button look disabled.
Expected Behavior
Icon color should be the default icon color.
Link to minimal repro
https://stackblitz.com/edit/github-9fgyga?file=src%2FApp.tsx,package.json,package-lock.json,tsconfig.json
Steps To Reproduce

Click repro link
Toggle light mode (if dark mode applied by default)
Notice the icon color is muted

Package Version

[X] I'm using the latest version of iTwinUI.

Anything else?
No response

Hey, thanks for opening this issue. In short, this is not a bug. The SplitButton (and also the base Button) wasn't designed to be used without text, so what you're seeing is the default (static) color of the icon. iTwinUI does provide a IconButton for cases where it makes sense, but it's not compatible with SplitButton.
Can you share more details about your use-case? Is there a reason you're not able to use the regular SplitButton with the text "Save"?

Thanks for the quick reply! I was wondering if perhaps this component wasn't intended to be used with icons since the example doesn't use one.
We're looking at using the SplitButton for a "Save/Save As" workflow in our query builder where the default behavior of the button (the left side click) would save the changes to the existing query, and the menu item "Save As" would prompt the user for a new name for the query and save the changes under a new name.
Right now our save button is a high-visibility IconButton without a label but we are working on polishing our UI with Dan Abney in which case our new SplitButton would look something like this

If we can just pass the startIcon like suggested and get the correct styling and then also provide the label inside the SplitButton, that should be enough for our purposes to achieve the result in the mockup.
Thanks again for your replies!


[Forge Support Request] Are there any plans for releasing Forge versions?

I saw the images of the mod, as well as a few videos and I love the mod. However, I currently have a Forge server with 40+ mods and I was wondering if it's possible to add Forge support, considering Forge is just as used as Fabric, if not more.

Duplicate of #11.
Also, +1!


Functionary small 2.4 is ignoring the system prompt.

Hello,
I was testing the Functionary Small 2.4 model for its capabilities. I found a glitch or bug in the model. I tried to alter the behavior of the model with system prompt. but model is ignoring the instruction in system prompt.
I am using OpenAI client btw.
Thanks,
Gunpal Jain

Any comments??

Hi, unfortunately, we have not trained our models with a variety of system prompts. The focus for this model (v2.4) is function-calling and code-generation. Thus, it may not follow instructions in your own system prompts that well.

What I wanted to do is use these models for AI Agents reasoning engine. I want to build a smart AI agent using functionary. which will use only to optimize the prompt for the second/Main AI model to write content.
What it needs to do is analyze the prompts and decide whether to call a function or not.

if there's no function calling involves it needs to write the original prompt back.
if there's a function calling involves, it needs to rewrite the original prompt with the function response. e.g.

<context>
function response
</context>

original prompt

I need to learn how to fine tune it to do the same. I think small model should be fine for this type of scenario.


Shape Error

Hello,
I ran the training file with no issues, but when I ran the predict file I received the error below. Can you help me understand how to fix this?
runfile('C:/Users/ccalvert/PycharmProjects/NeuralMusic/venv/predict.py', wdir='C:/Users/ccalvert/PycharmProjects/NeuralMusic/venv')
Using TensorFlow backend.
Traceback (most recent call last):
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\framework\ops.py", line 1628, in _create_c_op
c_op = c_api.TF_FinishOperation(op_desc)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Dimension 1 in both shapes must be equal, but are 144 and 359. Shapes are [256,144] and [256,359]. for 'Assign_11' (op: 'Assign') with input shapes: [256,144], [256,359].
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 1, in
File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/ccalvert/PycharmProjects/NeuralMusic/venv/predict.py", line 135, in
generate()
File "C:/Users/ccalvert/PycharmProjects/NeuralMusic/venv/predict.py", line 25, in generate
model = create_network(normalized_input, n_vocab)
File "C:/Users/ccalvert/PycharmProjects/NeuralMusic/venv/predict.py", line 71, in create_network
model.load_weights('weights.hdf5')
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\keras\engine\network.py", line 1166, in load_weights
f, self.layers, reshape=reshape)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\keras\engine\saving.py", line 1058, in load_weights_from_hdf5_group
K.batch_set_value(weight_value_tuples)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\keras\backend\tensorflow_backend.py", line 2465, in batch_set_value
assign_op = x.assign(assign_placeholder)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\ops\variables.py", line 1718, in assign
name=name)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\ops\state_ops.py", line 221, in assign
validate_shape=validate_shape)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\ops\gen_state_ops.py", line 64, in assign
use_locking=use_locking, name=name)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\util\deprecation.py", line 488, in new_func
return func(*args, **kwargs)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\framework\ops.py", line 3274, in create_op
op_def=op_def)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\framework\ops.py", line 1792, in init
control_input_ops)
File "C:\Users\ccalvert\PycharmProjects\NeuralMusic\venv\lib\site-packages\tensorflow\python\framework\ops.py", line 1631, in _create_c_op
raise ValueError(str(e))
ValueError: Dimension 1 in both shapes must be equal, but are 144 and 359. Shapes are [256,144] and [256,359]. for 'Assign_11' (op: 'Assign') with input shapes: [256,144], [256,359].

how did you solve this error?
help please


Directory reorganization needed

As it stands every time a new parser is created you create a new directory copying over the Graph.py file from Tsukihme. This makes unnecessary code rewriting and Graph.py files in other directories that are behind or ahead in features.

The reason this hasn't been done so far is due to a lack of knowledge around python modules. Ideally one module structure would be as below:
init.py
Graph.py
NscriptParser/
YoutubeParser/
RenpyParser/
I've had problems with this however in that I haven't been able to inherit from Graph if I use the type of structure due to weird issues with python modules.


Handle ND secret tensors in insert-rotate

https://github.com/google/heir/pull/587 identified that we may need to determine how to handle multidimensional secret inputs in insert-rotate or upstream of it.
Just brainstorming: it seems like what we would want to do is determine in advance of insert-rotate how to convert multidimensional tensors to 1D tensors. Perhaps that means we take any ND function inputs and add reshape ops at the very beginning and end, though that would have a pretty large effect on the intermediate IR, requiring one to convert any tensor index-accessing ops to the corresponding flattened version. Even so, we must have gotten most, if not all, of the hard work done when we did this for verilog codegen. We can probably reuse that.

I think the SIMD packing work will handle this. Optimistically closing.

I'll update the SIMD packing to clarify the ND case as a TODO - we talked a little about collapsing tensors as well, and I need to recap that discussion in the issue.


Allow to skip specific keys

It's useful if there is an option which prevents to remove specific keys which contain values like,
[], {}, null, ""

// Example:

let obj =  { a: "", b: "xyz" }

let res = cleenDeep(obj, {
   skipKeys: [ "a" ]
})

// Output
// res:
{
   a: "",
   b: "xyz"
}

@pranavwani interesting concept, but at that point I think I'd prefer a more generic approach, like:
const obj = { a: "", b: "xyz" };

const res = cleanDeep(obj, {
   cleanIf: (key, value) => key !== 'a'
});

// Output
// res:
{
   a: "",
   b: "xyz"
}

I'll give this one a think :)

I like the skipKeys option for typed reasons, it might be less generic, but it could allow for better typing, for example it could allow only the valid keys of the object passed, and then the return type could only be partial on the keys passed. ts-essentials has some types that should make doing that reasonably easy from a type perspective. Ultimately though my reason for wanting this is just to have the same output type as input, it's the optional keys I want to strip in the first place.

Hello,
We have an exciting opportunity for you! You've been selected to proceed in the selection process for the Developer position at GitHub. Congratulations on your achievement!
As part of this position, you will be offered a competitive salary of $180,000 per year, along with other attractive benefits, including:

Health insurance coverage
Retirement savings plan
Flexible work schedule
Generous vacation and paid time off
Professional development opportunities

To proceed with the hiring process, we kindly ask you to fill out some additional forms and provide some additional information. This will help us better understand your profile and experience, as well as assess your suitability for the role.
Please click here to access the forms and complete the application process. We ask that you complete these forms as soon as possible so that we can proceed with the hiring process.
Important: You have 24 hours to complete the application process.
If you have any questions or need further information, please don't hesitate to contact us.
Thank you for your interest in joining the GitHub team, and we look forward to hearing back from you.
Best regards,
GitHub Recruitment Team
leonidkozhukh, @zxhfirefox, @uberspot, @raw5, @QlDoors, @Nubuck, @epheien, @anatolinicolae, @nicolashahn, @gyb997, @Kairs0, @tysper, @mattallty, @Alessandro-D, @aaroncgw, @sdan, @agustinottobre, @jubbon, @kevspahn, @timxor


MM-25695 Select channel when switching teams if available

Summary
Currently when switching teams, the selected channel is empty, which shows the channel loader until the team channels are fetched from the server and the initial channel gets selected. This PR helps to select the channel  in advance when switching teams if we already have them.
Ticket Link
https://mattermost.atlassian.net/browse/MM-25695

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/6550
https://circleci.com/gh/mattermost/mattermost-mobile/6549

Artifact links:
https://6550-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.apk
https://6549-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.ipa

@enahum
Error trying doing the automated Cherry picking. Please do this manually
+++ Updating remotes...
Fetching upstream
Fetching origin
+++ Updating remotes done...
!!! 'upstream/release-1.33' not found. The second argument should be something like upstream/release-0.21.
    (In particular, it needs to be a valid, existing remote branch that I can 'git checkout'.)

/cherry-pick release-1.33