Unity object serialization

You can serialize the objects using [SerializedField] and class by [System.Serializable]

Yeah I'm aware of it. I could apply those attributes at runtime with preload patcher.
Problem with that though is if there's already a class with Serializable on a game's type, and if one of the fields has NonSerialized on it, I could remove that attribute from the field but it could cause problems on the game's side down the line and we wouldn't know, while keeping that attribute won't be any good either for use on UniTAS side.

Also for this issue, I mainly have to figure out serializing unity types (stuff like RigidBody, Texture2D, GameObject) and unless I'm missing something, I don't think its possible to serialize most of these even on a modern unity version

Steps to serializing

get all GameObject, active or not (and only the root)
serialize data for the GameObject instance, and its components
repeat for child objects for each root

Things I'm not sure about

should I get all Object and serialize all that?
or maybe I get all Object, store in some "to be processed" list, and when a static field references an unity object, I remove from list and process it

Notes

All of the data is pretty much references
Unity's objects can be referenced in static fields and pretty much in c# side

Idea 2, trace object creation steps

Traces operations such as "scene load", "instantiate", etc
I could use this as a "last resort" to some things I can't easily track
Some operations can cancel out the previous

scene load 1 -> scene load 2 can be reduced to just scene load 2, which also removes any "child operations" such as object manipulation


perf - removes pinning

I noticed that it's not necessary to pin a string if it's being used explicitly during a CGO function call (see also this discussion in the google forums.
zend_string_init will always copy the underlying string anyways so removing pinning for most globals is safe.
In the flamegraphs you can see that Pinner.Pin and Pinner.Unpin currently consume around 7% of the CPU profile for the optimized 'Hello World'. Without Pinning most of that time is gone.
With Pinner

Without Pinner

The only way to optimize this even more would be by directly using the allocated go string as a zend_string (not sure if this is currently possible)

NICE!

The only way to optimize this even more would be by directly using the allocated go string as a zend_string (not sure if this is currently possible)

That would require pinning. From the thread you linked to:

Unless, the C function stores the pointer and it's kept after the call returns, correct? That's what I mean by calling the function keep_this_pointer in the second example. In this case, it would be necessary, I'm assuming?

Ah, yes, in that case the pointer does have to be pinned.

That would require pinning. From the thread you linked to:

I guess you're right. So maybe this is the most efficient way to pass a string to PHP currently. I know that CGO calls themselves have some overhead because of entersyscall and exitsyscall. But that overhead seems to be smaller than that from pinning.


MM-12630 Adding debounce to prevent client breaking for very high rate channels.

Adds a queued denounce function to websocket event handling for new posts. This is an attempt to prevent very high rate channels from breaking the client by overloading it with posts.

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: https://i-0f957e01030fc6a87.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-0f957e01030fc6a87

@lindy65 Can you take a look at this? Should be able to test this with /test posts like we discussed before.

@crspeller - yep, will test this today using test posts :)

Hey @crspeller
Tested by enabling Developer Test Commands in System Console and using /test posts 100 ten times in a row. The channel broke.

Then tested /test posts 75 ten times in a row and the channel still broke.

Adding ten times /test posts 50 in a row didn't break the channel but I continued to 13 times and it broke on the twelfth post of /test posts 50

I am posting these test post commands very quickly one after the other with no pause inbetween so am not sure if this is a true simulation of user experience?
The channel does not break for over 30 continuous /test posts 5, /test posts 10, /test posts 15, test posts 20 posts at high speed.
It starts to break again at around 25 continuous /test posts 30 posts at high speed.
Let me know if you need me to test in a different way or whether these results are sufficient?

@lindy65 That message is fine. The "break" is only for very high frequency channels. The important thing to test is if the client is still usable while the posts are incoming.
You can compare the behavior to the behavior on master and you should see the difference.

Thanks @crspeller
Just compared the behavior on master and absolutely can see a huge difference!  Performance on the spinmint is way, way better.

Spinmint test server destroyed


Small fixes

ping @ldko, @madhulika95b, this is ready for review. Gets rid of trailing slashes for JSON views and puts links on https where possible, and grabs resources with same scheme of the site.

closes #118


Add signer implementation to TSS2 keys

Description
This PR adds a signer implementation for TSS2 keys, it also adds new methods to marshal those keys to PEM.

I've added an option to set the SRK template to use, and I'm defaulting to the same used in the rest of the package.


[^] 修改telnet测试 接口参数实现HashMap 导致 找不到方法问题。

修复：
接口的参数sendSmsMessage(GenericRequestDto reqDto);
public class GenericRequestDto extends HashMap<String, Object>
通过telnet测试时，报找不到对应的方法。
"No such method " + sendSmsMessage + " in service " + service

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

首先：使用方式上，请在参数中加class属性即可：

{"class":"xxxpackage. GenericRequestDto", "key1":"value1"}

其次，没看出你代码调整后和原来逻辑上有什么实质区别


CI: align crds under bundle automatically

Extending the bundle makefile rule to copy the crds also
under the bundle file. The removed conversion webhook section is covered
by running make bundle.
Fixes https://github.com/metallb/metallb-operator/issues/189

lgtm


feat: add animation to notification

Fixes #
Changes

Adds an animation to the notification component.
Had to move onClose logic to the component, although it is extracted to a custom hook to handle the removal/destroyal of the component.

Checks

[x] Have you catchup your branch with the latest state in base?
[x] Have you lint your code locally prior to submission?
[x] Have you reviewed your proposed changes and removed debris?
[x] Have you successfully ran due tests with your changes?

I think there's some changes that could improve this visually. Reduce the timeout bar to half height, the opacity to anything between 0.175 and 0.2 would be better, also get the bar a little lower and apply a overflow hidden so it doesn't look like it's floating in the component. 1 thing more, if we close the notification there won't be any animation?

Please send me the values you think would improve this. I say this because if I reduce the height to 0.2rem (from 0.4rem), opacity to 0.2 and a margin-bottom of -0.05rem with overflow hidden it looks like this and is barely visible:

And yes, I added the animation also when clicking the close button, although I had to move the onClose function inside the component.

I do not know if it is correct that when a cm is updated, the notification appears in the middle of the screen, instead of appearing at the bottom right of the screen @aspnxdd

Fixed now. The position was absolute, so if we scrolled down, it seemed like it was in the middle of the screen. I changed it now to fixed so it scrolls down as well and it is kept at the bottom.

🙏🏼


Derive Clone for Request

With the current API, it is not possible to save owned values of Request
in a Match implementation, because Match is only given a reference to a
Request, and Request does not implement Clone. If you wanted to store a
list of Requests and iterate over them and make assertions on them after
the fact, this would not be possible unless you could Clone owned values
of Request from their references.

Thanks for the PR!


fix badly rendered skyboxes

fix badly rendered skyboxes, @gimhael's suggestion.
example of bad rendering:

For reference (quoted from irc development channel):

gimhael> illwieckz: the cause of the skybox badness is that the engine asks the GL driver to use on-the-fly DXT compression for the images
gimhael> the GL compressors are usually written for speed not for quality, so the image looks bad
gimhael> this is the default for all images unless the user adds the "nocompress" option in the shader file
gimhael> only for skyboxes nocompress was ignored and compression was always used
gimhael> now we could disable no-the-fly compression for skyboxes, or we could make "nocompress" work in skybox shaders, but I think we could drop the texture compression for all images and make "nocompress" obsolete
gimhael> if anybody wants to use compressed textures, they should be compressed with a offline compressor like crunch, because the quality is much better

The skybox texture is a very special texture since it's static and unlike walls and other objects, does not move on screen while the player is moving, so any artefact is very visible and never blurred by move. Also, the skybox is renderer on the whole viewport on open area, letting any artefact very visible. That's why badly compressed skyboxes are doing nothing else than ruining the scene.
Because the game is very fast and because of movement, we can use bad compression everywhere except skyboxes and lightmaps: nothing can hide a skybox artifact (same for lightmaps).
You can have a look at this comparison I did once:

It does not included crunch comparison, but crunch is generally worst than jpeg, and on-the-fly opengl compression is far far worst than crunch in any case. So, as you see, compressing a skybox with a bad algorithm is always a very bad idea.
@gimahel also suggested to drop the ugly on-the-fly texture compression since modern rendering techniques (like Vulkan) does not provide it. Instead, we must offline compression (using crunch) what we already do.
For reference, my Urcheon packaging tool picks the best compression profile for each use case, so there is really no need to keep on the fly compression.
Whatever we decide about removing on-the-fly compression ability or not, this commit disallow on-the-fly compression on skyboxes because that's always a bad idea to badly compress a skybox.
The nocompress shader keyword is hence deprecated: it's never a good idea to badly compress a skybox, and keeping this bad compression as a default behavior makes no sense anymore.


update EMBER_CLI_VERSION to use with<EMAIL_ADDRESS>

Need up update at least this flag in order to use the updated ember-cli.
Changed the ember check and appears everything is working fine.

:+1:

:+1:

:+1:

Definitely needs a PR. In the meantime, I threw this into an initializer:
EmberCLI::App::EMBER_CLI_VERSION = ['~> 1.0']

oops.. course you can override it... Duh.. ok cool. thanks @rzane !!

PR submitted:  #183
thanks @webark!

Fixed and released 0.3.3


[Issue] SourceSideValidations fails to remove invalid permissions

After SourceSideValidations finds invalid permissions, it can be run with -RemoveInvalidPermisions switch to remove them. However, sometimes this fails with "There is no existing permission found for user." This can occur when the recipient principal is in various invalid states.
The script used to be able to remove these when we were piping the bad permission to Remove-PublicFolderClientPermission. However, that was changed in order to allow the script to work when serialization signing is not working. That change happened here: https://github.com/microsoft/CSS-Exchange/commit/3bb9f7a40c2f99eb8769e6faae9ffeb52809093
The piping approach fails if:

The script is run from remote powershell.
The script is run from EMS but the auth certificate is not valid.

So that change made it work in those scenarios, but now it is not able to reliably remove invalid permissions.
I think we should no longer support those scenarios with the -RemoveInvalidPermissions switch. The script must be able to remove invalid permissions. Therefore, we should revert that change. When the script is run with -RemoveInvalidPermissions, it will require EMS with a working auth certificate.

With Confirm-ExchangeShell, we do properly detect if the pipeline will work.
$shell = Confirm-ExchangeShell

if (-not $shell.EMS -and $RemoveInvalidPermissions) {
      Write-Host "This script requires EMS. If you are using EMS, then you might have an issue with your Auth Certificate preventing the serialization of the Exchange objects to have pipelining work. Because of pipelining will not work, we are unable to execute the script with the switch `-RemoveInvalidPermissions`"
      Write-Host "Please address the issue or do not use the switch `RemoveInvalidPermissions`"
      exit
}


setup UI endpoint to serve the UI

PR #37 is adding the UI stuff but not actually serving it.
This is a followup for task #19 : need to redirect the user to the UI endpoint when finished handling the OIDC callback. The redirectURL should contain a handle of some sort that can be used by the UI to fetch the user's bootstrap info and offer it to the wallet via CHAPI.

@llorllale @talwinder50
You don't have to call CHAPI to send user boot strap info. Remember, CHAPI registration happens after successful login.
Webwallet registration already has api to save user metadata (refer wallet-metadata store in jsindexdb).
Currently, we are saving username, user DID, invitation & signature type. You just have to add more fields in already existing wallet user metadata.
https://github.com/trustbloc/edge-agent/blob/master/cmd/user-agent/src/pages/chapi/Login.vue#L83

@sudeshrshetty @talwinder50 we need to talk about this then because this flow will change anyhow.
In the long run: hub-auth and edge-agent should exchange key material (DIDs) to create a secure authenticated channel. hub-auth can push updates through this channel, and offer services the user may also use
In the short run: edge-agent should register key material (DID) in hub-auth. With this, the user does not have to be redirected to hub-auth whenever they need to authenticate to other components (eg. adapters)

@sudeshrshetty @talwinder50 @aholovko as we discussed, here's my proposal in rough form. Please weigh in to see if it looks like it's going in the right direction:

Proposal: hub-auth sends bootstrap data to the wallet via CHAPI
Goals:

Authenticate the user using an external OIDC provider
User SSO
Adapters (and other components?) do not redirect the user (again) during the login phase

Assumptions:

User will be authenticating to the adapters much more frequently than to hub-auth
The wallet is already registered as a CHAPI Credential Handler in the user's browser

Flow (1st time login):

User navigates to wallet domain and clicks on Login
Redirect to hub-auth
hub-auth redirects to OIDC provider
OIDC provider authenticates user
User redirected back to hub-auth
hub-auth onboards user in network
hub-auth sets up bootstrap data
hub-auth creates a CHAPI request with bootstrap data
hub-auth invokes navigator.credentials.get({bootstrap data})
edge-agent stores bootstrap data
edge-agent creates new key pair (did:key?)
edge-agent responds (CHAPI) with pub key
hub-auth verifies everything is OK
(Optional) redirect user back to wallet domain

Key features:

Wallet registers a key with hub-auth, which means the user doesn't need to be redirected anywhere when authenticating to the Adapters

@Baha-sk @DRK3 ^^

@llorllale here are the points I am concerned with.

we shouldn't register CHAPI before login. It will initialize polyfill handler in browser and user can launch CHAPI window without login (even after failed login).  In current basic implementation we have, polyfill handler gets registered/unregistered during login/logout, I propose we should stick to that.
hub auth request with bootstrap data should be generic, we shouldn't send bootstrap data through CHAPI (also, we can't send CHAPI request if wallet is not registered).
We have webwallet JS API in place to handle user registration/login, we can resuse/modify that to handle user bootstrap data without involving CHAPI.
Reasons:

CHAPI is just an iframe it is as secured as user agent login page.
CHAPI request (store call in your case), should have data only in presentation format. We shouldn't send arbitrary data to CHAPI.
CHAPI when launched transits to thirdparty domain even if they are local (like authn.io, which may not be safe for sensitive data like bootstrap data)

Bad User Experience: for simple login we have to go through 3 popups/pages

wallet registration popup
login page
wallet selection popup + showing some UI for bootstrap data in CHAPI window + accept it

@troyronda @rolsonquadras @fqutishat ^^

As per the discussion the plan team agreed upon is.
User agent on page load will be redirected to Hub-Auth. After successful login, there will be did communication to share the bootstrap data.

HA need to have public DID
HA will generate invitation
HA will send the invitation to user-agent via redirect URI
Then DID Comm connection will begin using messaging protocol.

@talwinder50 @sudeshrshetty @DRK3
Based on today's call:
Draft of flow


GUI doesn't show correct coordinate's LinearFunction

Steps to reproduce

open Rajagopal model
unfold Joints > hip_l
click on rotation2 and see axis in Properties window

Expected result
axis = (-1 0 0)
Actual result
axis = (1 0 0)

Environment and GUI version
Windows 10, OpenSim 4.4

It doesn't seem to be an issue (its linear function coefficient was -1), sorry for this post.


python312Packages.emoji: 2.12.1 -> 2.13.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.emoji is: Emoji for Python
meta.homepage for python312Packages.emoji is: https://github.com/carpedm20/emoji/
meta.changelog for python312Packages.emoji is: https://github.com/carpedm20/emoji/blob/v2.13.0/CHANGES.md
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.13.0 with grep in /nix/store/vwg5zfq6vcnc9vcn2zmp6f65wpxxncxq-python3.12-emoji-2.13.0
found 2.13.0 in filename of file in /nix/store/vwg5zfq6vcnc9vcn2zmp6f65wpxxncxq-python3.12-emoji-2.13.0

Rebuild report (if merged into master) (click to expand)

43 total rebuild path(s)

43 package rebuild(s)

First fifty rebuilds by attrpath

ascii-draw
deltachat-cursed
dinghy
gajim
home-assistant-component-tests.google
home-assistant-component-tests.husqvarna_automower
home-assistant-component-tests.local_calendar
home-assistant-component-tests.local_todo
home-assistant-component-tests.rainbird
komikku
libretranslate
matrix-commander
monophony
octoprint
opsdroid
python311Packages.aioautomower
python311Packages.argos-translate-files
python311Packages.argostranslate
python311Packages.dalle-mini
python311Packages.dinghy
python311Packages.emoji
python311Packages.gcal-sync
python311Packages.ical
python311Packages.libretranslate
python311Packages.mpris-server
python311Packages.pyrainbird
python311Packages.stanza
python311Packages.translatehtml
python312Packages.aioautomower
python312Packages.argos-translate-files
python312Packages.argostranslate
python312Packages.dinghy
python312Packages.emoji
python312Packages.gcal-sync
python312Packages.ical
python312Packages.libretranslate
python312Packages.mpris-server
python312Packages.pyrainbird
python312Packages.stanza
python312Packages.translatehtml
signal-export
terraform-compliance

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/vwg5zfq6vcnc9vcn2zmp6f65wpxxncxq-python3.12-emoji-2.13.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.emoji https://github.com/r-ryantm/nixpkgs/archive/157294d60147426e95d2dd5b4b9fea69bb47fc03.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/157294d60147426e95d2dd5b4b9fea69bb47fc03#python312Packages.emoji

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/vwg5zfq6vcnc9vcn2zmp6f65wpxxncxq-python3.12-emoji-2.13.0
ls -la /nix/store/vwg5zfq6vcnc9vcn2zmp6f65wpxxncxq-python3.12-emoji-2.13.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

68 packages built:

ascii-draw
deltachat-cursed
deltachat-cursed.dist
dinghy (python312Packages.dinghy)
dinghy.dist (python312Packages.dinghy.dist)
gajim
gajim.dist
home-assistant-component-tests.google
home-assistant-component-tests.husqvarna_automower
home-assistant-component-tests.local_calendar
home-assistant-component-tests.local_todo
home-assistant-component-tests.rainbird
komikku
libretranslate (python312Packages.libretranslate)
libretranslate.dist (python312Packages.libretranslate.dist)
monophony
octoprint
octoprint.dist
python311Packages.aioautomower
python311Packages.aioautomower.dist
python311Packages.argos-translate-files
python311Packages.argos-translate-files.dist
python311Packages.argostranslate
python311Packages.argostranslate.dist
python311Packages.dalle-mini
python311Packages.dalle-mini.dist
python311Packages.dinghy
python311Packages.dinghy.dist
python311Packages.emoji
python311Packages.emoji.dist
python311Packages.gcal-sync
python311Packages.gcal-sync.dist
python311Packages.ical
python311Packages.ical.dist
python311Packages.libretranslate
python311Packages.libretranslate.dist
python311Packages.mpris-server
python311Packages.mpris-server.dist
python311Packages.pyrainbird
python311Packages.pyrainbird.dist
python311Packages.stanza
python311Packages.stanza.dist
python311Packages.translatehtml
python311Packages.translatehtml.dist
python312Packages.aioautomower
python312Packages.aioautomower.dist
python312Packages.argos-translate-files
python312Packages.argos-translate-files.dist
python312Packages.argostranslate
python312Packages.argostranslate.dist
python312Packages.emoji
python312Packages.emoji.dist
python312Packages.gcal-sync
python312Packages.gcal-sync.dist
python312Packages.ical
python312Packages.ical.dist
python312Packages.mpris-server
python312Packages.mpris-server.dist
python312Packages.pyrainbird
python312Packages.pyrainbird.dist
python312Packages.stanza
python312Packages.stanza.dist
python312Packages.translatehtml
python312Packages.translatehtml.dist
signal-export
signal-export.dist
terraform-compliance
terraform-compliance.dist

Maintainer pings
cc @joachifm for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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

Result of nixpkgs-review pr 343172 at d52a7b2b run on aarch64-darwin 1

:fast_forward: 7 packages marked as broken and skipped:

komikku
libretranslate
matrix-commander
opsdroid
python311Packages.dalle-mini
python311Packages.libretranslate
python312Packages.libretranslate

:white_check_mark: 27 packages built:

deltachat-cursed
dinghy (python312Packages.dinghy)
matrix-zulip-bridge
octoprint
python311Packages.aioautomower
python311Packages.argos-translate-files
python311Packages.argostranslate
python311Packages.dinghy
python311Packages.emoji
python311Packages.gcal-sync
python311Packages.ical
python311Packages.mpris-server
python311Packages.pyrainbird
python311Packages.stanza
python311Packages.translatehtml
python312Packages.aioautomower
python312Packages.argos-translate-files
python312Packages.argostranslate
python312Packages.emoji
python312Packages.gcal-sync
python312Packages.ical
python312Packages.mpris-server
python312Packages.pyrainbird
python312Packages.stanza
python312Packages.translatehtml
signal-export
terraform-compliance


received the value '5000' of type 'long' but current is none

I try to add some parameters when creating Queue.
Map<String,Object> arguments = new HashMap<>(); arguments.put("x-expires", 5000L); Queue queue = QueueBuilder.durable(“lc”).withArguments(arguments).build(); rabbitAdmin.declareQueue(queue);
There was a mistake in the statement.
com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-expires' for queue 'lc' in vhost 'dc': received the value '5000' of type 'long' but current is none, class-id=50, method-id=10)
I don't know how to specify parameter types.

This happens because the queue lc already exists on the Broker and it is there without that x-expires attribute.
Or remove that queue on the broker, or don't declare it with this x-expires in the application.
You can't modify queue after its creation.
Please, consider do not ask question here on GitHub in the future.
They have to be present on some Community forums, e.g. StackOverflow.
We use GitHub issues only for bug reports and new features requests.


FileReader close?

There doesn't seem to be a close member function for FileReader. How do we close instances of FileReader?

The class FileReader does not take ownership of the passed C++ std::ifstream - it is passed as a shared pointer and the user has control of when to close it.
If a file_path is passed instead, we construct a shared pointer around a new std::ifstream and the expectation is that it is closed automatically upon destruction since only theFileReader has a reference to it (https://cplusplus.com/reference/fstream/ifstream/close/)

Thanks @jagrit06. I should have read the code more closely and answered that question for myself. Next time I'll pay closer attention.


Update tutorial.md

corrected minor typo in the tutorial

Thanks for the contribution!

Thanks for the contribution, have updated your name to https://github.com/dmlc/mxnet/blob/master/CONTRIBUTORS.md
Please feel free to update the information, and help making mxnet better and easier to user for everybody


update breeze lib with shorter name.

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


Fixes touch event handling in nested scrollbar containers

If you have one perfect-scrollbar container within another, on mobile devices, initiating a touch in the inner container, then scrolling beyond the bounds of the inner container, does nothing to the outer container even with swipePropagation enabled.
I'm not 100% sure why it works, but this hack fixes it.

Just tested it, and can the fix works.

Thanks for the great work @azala!

@DanielApt No problem! Several mobile Apples Against Humanity players had this problem after I switched to perfect-scrollbar, so I had to do something about it.


Add Cross WOC Banner or Poster

Related Issuse

Add Cross WOC Banner or Poster

Closes: #192
Describe the changes you've made
no of issues open
no of issues closed
no of pull requests open
no of pull requests closed
no of forks
no of stars
no of contributors
Type of change
Update README.md

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

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.
Describe if there is any unusual behaviour of your code(Write NA if there isn't)
A clear and concise description of it.
Checklist:

[x] My code follows the style guidelines of this project.
[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 made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have added tests that prove my fix is effective or that my feature works.
[x] New and existing unit tests pass locally with my changes.

Screenshots

Original
Updated

original screenshot
updated screenshot

This pull is for issue no #192


Multi-level  nav translation problem

Hello @sukki37 ,
I meet a problem similar to #96 . My nav setting is like:

I have translations for Home, Reference, Changelog, but only Home and Changelog have been translated for the default language (ja).

And this is my i18n settings.
If I change the default titles to ja and make en translations, everything works well.
Report this just in case.

Hello @EvilMask ; thanks for reporting this
I'm gonna investigate

@EvilMask it's actually quite hard to reproduce... Do you have any public repository where I can test this?

Ok @EvilMask scratch that, I found out what the problem was !
Can you check #119 maybe? I added tests to reproduce so if no report in a week, I'll merge & release that fix
Thanks again!


Saving?

I cannot seem to save a macro i've created in GSE 2.0
Is there something i should be doing?

Also can't appear to import old macro's despite it saying successful - Is this feature fully available just yet?

For Old Macros - Are you choosing the Legacy Radio Button?  For the others the only bug I can replicate with regards to saving is the one in #149
Are you performing your edits ingame?

In regards to the old macro i was pressing the GS/GSE radio button at the top, the edits are being performed ingame with the sequence editor and only occassionally will save any new ones / changes

I'm not trying to be a pain but I really need a lot more information like "This specific macro is an example of one that didn't import" or "had this macro and made this specific edit which didn't save"
I cannot cause the problem you are describing. Without being able to cause it I can't work through to find the problem.
TimothyLuke

On 10 Jan 2017, at 4:45 am, TheEffects<EMAIL_ADDRESS>wrote:
In regards to the old macro i was pressing the GS/GSE radio button at the top, the edits are being performed ingame with the sequence editor and only occassionally will save any new ones / changes
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Im currently at work but i provide that info as soon as i finish :)
Sent from my SAMSUNG Galaxy S6 on the Telstra Mobile Network
-------- Original message --------From: Timothy Minahan<EMAIL_ADDRESS>Date: 10/01/2017  6:51 AM  (GMT+10:30) To: TimothyLuke/GnomeSequencer-Enhanced<EMAIL_ADDRESS>Cc: TheEffects<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [TimothyLuke/GnomeSequencer-Enhanced] Saving? (#148)
I'm not trying to be a pain but I really need a lot more information like "This specific macro is an example of one that didn't import" or "had this macro and made this specific edit which didn't save"
I cannot cause the problem you are describing. Without being able to cause it I can't work through to find the problem.
TimothyLuke

On 10 Jan 2017, at 4:45 am, TheEffects<EMAIL_ADDRESS>wrote:

In regards to the old macro i was pressing the GS/GSE radio button at the top, the edits are being performed ingame with the sequence editor and only occassionally will save any new ones / changes

—

You are receiving this because you commented.

Reply to this email directly, view it on GitHub, or mute the thread.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/TimothyLuke/GnomeSequencer-Enhanced","title":"TimothyLuke/GnomeSequencer-Enhanced","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/TimothyLuke/GnomeSequencer-Enhanced"}},"updates":{"snippets":[{"icon":"PERSON","message":"@TimothyLuke in #148: I'm not trying to be a pain but I really need a lot more information like "This specific macro is an example of one that didn't import" or "had this macro and made this specific edit which didn't save" \n\nI cannot cause the problem you are describing. Without being able to cause it I can't work through to find the problem.\n\nTimothyLuke\n\n\u003e On 10 Jan 2017, at 4:45 am, TheEffects<EMAIL_ADDRESS>wrote:\n\u003e \n\u003e In regards to the old macro i was pressing the GS/GSE radio button at the top, the edits are being performed ingame with the sequence editor and only occassionally will save any new ones / changes\n\u003e \n\u003e —\n\u003e You are receiving this because you commented.\n\u003e Reply to this email directly, view it on GitHub, or mute the thread.\n\u003e \n"}],"action":{"name":"View Issue","url":"https://github.com/TimothyLuke/GnomeSequencer-Enhanced/issues/148#issuecomment-271388931"}}}

I was attempting to import https://wowlazymacros.com/forums/topic/sub-made-easy/ the first macro from this one into it
and in regards to the new one - I was just trying to make my own one with the ingame editor

This is now working with the release.

Sequences['Peacesub'] = {
Author="Peacekeeper@Bleeding Hollow",
SpecID=261,
Talents = "?,?,?,?,?,?,?",
Help = "Talents: 1233111",
Default=1,
Icon='INV_MISC_QUESTIONMARK',
MacroVersions = {
[1] = {
StepFunction = "Sequential",
KeyPress={
"/cast [nocombat,nostealth] Stealth",
"/cast [form:1,stealth] Symbols of Death",
"/cast [form:1,stealth] Shadowstrike",
"/cast [mod:alt] Shadowstep",
},
"/castsequence [nomod] reset=6/combat/target  Backstab, Backstab",
"/cast [combat] Goremaw's Bite",
"/cast [combat] Crimson Vial",
"/cast [combat] Shadow Blades",
KeyRelease={
"/cast [mod:shift] Shadow Dance",
"/cast [mod:ctrl] Evasion",
"/cast [combat,nostealth] Start Attack",
},
},
},
}


Fixed DC to use time series CSV data

First, goes to a website to retrieve the cookie necessary to be authorized for the CSV exporter form.
Then, grabs a value from that form which is needed in the exported CSV's USL. It's different for every time there's a different cookie.
Next, retrieves the CSV and parses it after removing a title line and extra characters.
Last, finds the correct column for the date we're looking for.
#703
Well, at least I learned a lot from this mess...

holy shit wow nice work!


Meu submit é limitado a 22 inputs usando o , isso é normal?

Aqui o retorno

Aqui o código

Hey @arielff3,
Scope does not limit the number of Inputs.
Give more details about your error.

Hey @arielff3, I am going to close this issue because it is not following the guidelines described here.
While contributing or interacting in any way in this project, refrain from using any language other than English.


Using Buildx as Docker builder

When I try to optimize apisix-dashboard's CI, I find that the build script in this repo is a reason for slow CI. As discuss in https://github.com/apache/apisix-dashboard/pull/2072, using buildx can cache Docker layers and so speed up CI.

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

All committers have signed the CLA.

Hi @qsliu2017 , you can follow the Instruction to sigh the CLA, thanks

@qsliu2017 Hi, CI failed, please see https://github.com/api7/apisix-build-tools/pull/74/checks?check_run_id=3530992884.


Defining multiple indexes? "unique_index:ui1,ui2" and "unique_index:ui1:unique_index:ui2" don't seem to work.

Consider this example:

type BaseObject struct {
  ID uint64
  SomeID uint64 `gorm:"unique_index:ui1"`
}

type SpecificObject struct {
  BaseObject
  SomeOtherID uint64 `gorm:"unique_index:ui1,ui2"`
  YetAnotherID uint64 `gorm:"unique_index:ui2"`
}

... This doesn't seem to work. The unique_index is omitted entirely for me on the SomeOtherID column since it has multiple indexes defined. Swapping this with unique_index:ui1:unique_index:ui2 of course only does one of them as one configuration supersedes the other.

refer https://github.com/jinzhu/gorm/blob/master/migration_test.go#L372-L380


Font detection for suckless terminal (st)

Description
This adds font detection for the suckless terminal (st).
Command line arguments are checked first, if a font is not specified via command line arguments we run strings on the st binary and grep for something that looks like a font. In my testing this has worked well except in the following edge case:
config.h:
static char font[] = "Liberation Mono";

The above is technically a valid font. As it doesn't contain anything that indicates it's a font declaration e.g "pixelsize=", "size=", etc it will not be matched.
Other than this one edge-case, in my testing the font has matched correctly 100% of the time. However, it's possible that some patches a user might have applied to st (or any modifications that a user has made) might cause neofetch to match the wrong thing. For that reason alone I understand if you want to close this pull-request.
For fonts specified as command-line arguments though e.g st -f "Liberation Mono:pixelsize=12:antialias=true:autohint=true" should be matched correctly.

Thanks for the PR.
I don't think I'll merge this though. It's got too many edge cases.

I spent some time thinking about this and if we can add some way to avoid printing anything when we hit an edge case I'll merge this.

$parent can be changed to $PPID since $parent may not be set.

@dylanaraps We can't use $PPID since this is the process of the shell (e.g bash or zsh) and not the terminal (st). I've added an explicit check for $parent though and set it if it's not set.

LGTM :+1:


net/http: undocumented ServeFile index.html redirect behavior

After an hour of head scratching and cursing and found that there's a strange way how ServeFile handles any path's that end with index.html:

Instead of serving the file directly it generates a 301 redirect response to the nearest folder

Example:
http.ServeFile(w,r,"/public/blog/index.html")
this redirects to /public/blog/
This is not mentioned in the documentation and could cause undesirable behavior.
I tried to add the note about it to the documentation but got rejected because apparently Go doesn't use Github's pull request system. So I don't know how to get this into the documentation so that others won't get tripped over it.
I would actually propose that "feature" to be removed because it's based on an arbitrary of considering the trailing slash ("/") to be the equivalent of a reference to "index.html".

Docs to contribute a patch for review are at: https://golang.org/doc/contribute.html
We should just document it so we're not changing behavior. IIRC, @rsc likes (and implemented) the current behavior. I don't have much preference either way, except for I prefer things not to change. Documenting it is fine.

Thank you!
I would like to update the docs but the contribution process is very complex! I'm totally confused after looking at it.
Is there a simple way to submit a change for review?

That's the process. The document looks a lot more complicated than it is, because we made the instructions very thorough. Try following it through. It should take you around 10 minutes, or less.


add component id for eventMesh java plugin.

add component id for pr: https://github.com/apache/skywalking-java/pull/376

The style is still wrong.

Any update?

Oops, you missed updating changes.md in the /docs/en/changes. Please fix it.


Endpoint: actually treat identifiers as immutable, remove lock

The EndpointPatch request has been deprecated since 2018. It's still used by the docker network plugin, but that doesn't support changing identifiers, only labels.
So, remove the ability to patch IDs. Then remove an unnecessary lock now that these fields are static.

Update: this code is wrong wrong wrong. It turns out that docker container IDs are set after-the-fact.

This PR is no longer broken :-)
@gandro @doniacld I updated this PR to put the container name and ID behind atomic pointers. That way the docker network plugin can still update them, and we don't need a lock to read.

All green. @jrajahalme PTAL.

Rebased; needed to adjust to @gandro's CNI changes. Managed to remove another lock while I was at it :-)

/test

/test


Replacement for ConvRNN API (implementing custom ConvGRU2D Cell)

Environment:
Miniforge conda installation; pip installation via instructions on main Tensorflow page with additional workarounds described here
Python version: 3.11.8
New versions:
Tensorflow: 2.16.1
Keras: 3.1.1
Old versions:
Tensorflow: 2.14.0
Keras: 2.14.1
Situation:
I wrote a custom ConvGRU2DCell. It worked in my generator this way:
from keras.src.layers.rnn.base_conv_rnn import ConvRNN
...
        with options({"layout_optimizer" : False}):
            z = ConvRNN(rank=2, cell = ConvGRU2DCell(filters=ofilt, kernel_size=(3,3)), return_sequences = True)(z, initial_state = [skip])

Setting aside the "layout_optimizer" hack to get running, this worked. I couldn't get the regular RNN API to accept this properly at the time. Indeed, in the Keras RNN API, it looks like the RNN API is expecting a Tensor of shape [B, T, C]. Now, in the new version of Keras and TF, this ConvRNN wrapper is gone. Looking into ConvLSTM2D class, there is a ConvLSTM class that it inherits from that permits the "rank" argument.
Do I have any recourse here aside from coding it all from scratch or should I stick with the older versions of TF and Keras? Will this API return? Are we not meant to implement our own recurrent convolutional cells anymore? Did I screw something up when I first tried the RNN API?

Hi @dryglicki ,
To better understand your enquiry can I have more context and details which worked for Keras2 and which is not working now with Keras3 with a minimal code snippet. Thanks!

Hi Surya. Okay, I can provide a simpler example. The ConvGRU2DCell is a bit complicated, so I'll work on getting a simpler example that has all of its same parts but the call logic is reduced. Standby.

@SuryanarayanaY All right, I created a gist here: https://gist.github.com/dryglicki/5f198807d5cd14f9cdd8b52d90dac211
If I try running that, I get the following error:
Traceback (most recent call last):   File "/home/dryglicki/code/RNN_example/example_old.py", line 135, in <module>     x = KL.TimeDistributed(KL.Conv2D(1,kernel_size=3))(x)         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/data3/miniforge3_2024-01/envs/tensorflow_2d16/lib/python3.11/site-packages/keras/src/utils/traceback_utils.py", line 122, in error_handler     raise e.with_traceback(filtered_tb) from None   File "/data3/miniforge3_2024-01/envs/tensorflow_2d16/lib/python3.11/site-packages/keras/src/ops/operation_utils.py", line 184, in compute_conv_output_shape     raise ValueError( ValueError: Kernel shape must have the same length as input, but received kernel of shape (3, 3, 32, 1) and input of shape (None, 32).
That GRU Cell is a minor modification of what I'm using in my development -- I took out Spectral Normalizations to make it easier to work with.
Anyway, I've been spending a lot of time looking at the ConvLSTMCell implementation here: https://github.com/keras-team/keras/blob/master/keras/layers/rnn/conv_lstm.py
It does look similar to what was in the older versions of Keras. I find this message to be alarming, however:
         if None in self.spatial_dims:             raise ValueError(                 "ConvLSTM layers only support static "                 "input shapes for the spatial dimension. "                 f"Received invalid input shape: input_shape={inputs_shape}"
So does that mean ALL custom RNN-CNN cells have to follow this rule, or is it specific to this particular implementation of ConvLSTM? That would be a showstopper for me if that's the case where I can't set my inputs to include [None, None] in the [H, W] dimensions.

...small update in gist to change tensorflow.keras to regular keras. Same error.

There are no plans to bring back this API at this time. You can either use Keras 2 (which is available as the tf_keras package, regularly updated) or you can write your own layer in the style of ConvLSTM2D, which permit higher input ranks.

@fchollet All right, well that's not the best news. Thanks for your attention. I have a new surprise in a new ticket!


Solve Windows-related issues from #136

Based on my comments in #136 .
With these changes, make test-dc runs seamlessly on Windows.
If the patch is ok I can also author Windows-specific instructions for CONTRIBUTING.md

Thanks a lot!


Table v8 expanding - incorrect state of parent checkbox when selecting subrows

TanStack Table version
8.17.3
Framework/Library version
18.2.0
Describe the bug and the steps to reproduce it
The closed issue #4720 has potential bugs.
It can be verified according to the following steps.
1. Apply the code guided in issue #4720 to the sample code below:
https://tanstack.com/table/v8/docs/framework/react/examples/expanding
<IndeterminateCheckbox {...{ checked: row.getIsSelected() || row.getIsAllSubRowsSelected(), indeterminate: row.getIsSomeSelected(), onChange: row.getToggleSelectedHandler(), }} />

2. Implement this guided sample code into the sample code and conduct tests.
3. The potential bugs identified are as follows:
if the parent is checked and all children are checked, unchecking one child does not change the status of the parent checkbox.
https://github.com/TanStack/table/assets/29395995/fb14a72b-cce2-4a38-b3d6-218c00809581
If all children are individually checked, the parent's checkbox status changes to checked. However, if the parent checkbox is then unchecked, it does not uncheck all the children.
https://github.com/TanStack/table/assets/29395995/06470539-9371-43c2-b301-ddfcb178066b
Your Minimal, Reproducible Example - (Sandbox Highly Recommended)
https://codesandbox.io/p/devbox/jolly-nightingale-k9tx7h
Screenshots or Videos (Optional)

https://github.com/TanStack/table/assets/29395995/fb14a72b-cce2-4a38-b3d6-218c00809581
https://github.com/TanStack/table/assets/29395995/06470539-9371-43c2-b301-ddfcb178066b

Do you intend to try to help solve this bug with your own PR?
None
Terms & Code of Conduct

[X] I agree to follow this project's Code of Conduct
[X] I understand that if my bug cannot be reliable reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.

Does anyone have some workaround?

Up

@odini85 you solve this?


Comments missing in Css output generated using .ToCss method and a formatter

When generating output from a modified Stylesheet document, the comments appear to be lost. My code looks something like this:
CssParserOptions options = new CssParserOptions();
options.IsStoringTrivia = true;
CssParser parser = new CssParser(options);
string CssSource = null
// Read from file code here
AngleSharp.Dom.Css.ICssStyleSheet document = parser.ParseStylesheet(CssSource);
AngleSharp.Css.PrettyStyleFormatter formatter = new AngleSharp.Css.PrettyStyleFormatter();
string newCssSource = document.ToCss(formatter);

I have also tried the CssStyleFormatter but that also seems to discard the comments. From a quick look at the code it looks as though the formatter only outputs Rules and not the comment nodes that I can see as Children under the document in debug.
I did fudge the code to write out comments, and noticed that the comments are output incorrectly (as "comment text /* */") - looks like this code in CssStyleFormatter.Comment is the culprit:
return String.Join("/* ", data, " */");

.. this will join the second 2 arguments with a separator of the first argument, which I'm pretty sure wasn't the intention. For my fudge, I changed it to this:
return String.Format("/* {0} */", data);

Yes of course, this should have been String.Concat. Right now the ToCss is still the same as the CssText for most CSS nodes. Therefore, it mirrors the behavior of browsers, which discard the CSS comments. In the future they will diverge, i.e., while CssText produces the browser's output, ToCss will be a serialization of the contained OM. However, in general both won't reproduce the original source text. The original source text can only be reproduced by printing the relation to the original source.

I recognize that reproducing the original source text isn't always going to be possible, but not being able to retain comments would make any kind of use for roundtrip css manipulation impractical in real world scenarios (where the css may contain invaluable comments) - a task for which AngleSharp is otherwise ideal. The nodes for document level comments are certainly there in the OM (Children collection) at present; the fudge I'm working works fine for document level comments.
Is there a logical workaround I can implement for comments within the rule body as well as those at the document level, given what is available in the OM right now do you think?

The workaround I see is to generate the string representation and insert the comments afterwards at their proposed locations.
Generally, CSS comments may appear at any position (basically almost everywhere, where a whitespace could be placed), which does not map nicely to a concept of child nodes, i.e., just because a comment is a child node of, e.g., a rule, does not mean that it is in fact contained within that rule. It could be overlapping, e.g., being placed inside a prelude of that rule.

Thanks for the insight. It would be a real shame to lose all source comments because of some edge case scenarios - in the example you describe outputting the comment inside the rule would be significantly better than dropping it completely and crucially wouldn't lose any information.

Well, as I wrote in my initial answer, ultimately, nothing is lost. Also ToCss will be different to CssText. And finally, I will try to master these edge cases. For now, just placing the comments at their original positions should be sufficient.
The bug will be fixed with this issue, the other enhancements will be related to this issue, but I can't promise that they (all) make it into the next release (v0.9.5).


feat(rqlite-rs): support Option arguments (#15)

This PR resolves #15 and is an alternative and is favorable over #16.
The core advantages of this implementation are sticking to SemVer (/ keeping backwards compatibility) and simplicty.
Thanks @magwoo for assisting :)

I'm glad to help, thank you very much for the library, it's hard to find working and convenient clients for rqlite in rust

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 66.66667% with 2 lines in your changes missing coverage. Please review.

Project coverage is 82.93%. Comparing base (c6f3ce3) to head (b00b102).
Report is 1 commits behind head on main.

Files with missing lines
Patch %
Lines

rqlite-rs/src/query/arguments.rs
66.66%
2 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #17      +/-   ##
==========================================
- Coverage   83.13%   82.93%   -0.20%
==========================================
  Files          13       13
  Lines         498      504       +6
==========================================
+ Hits          414      418       +4
- Misses         84       86       +2

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Should we URL quote subscription names

@tseaver I tried to use
t = client.topic('foo')
s = t.subscription('bar with space')

and got a strange error. Should we forbid subscription names that don't adhere or manually escape them for users? I wrote a docstring edit but wanted to discuss before sending a PR
diff --git a/gcloud/pubsub/subscription.py b/gcloud/pubsub/subscription.py
index e3da8a0..8c54d39 100644
--- a/gcloud/pubsub/subscription.py
+++ b/gcloud/pubsub/subscription.py
@@ -26,7 +26,10 @@ class Subscription(object):
     https://cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions

     :type name: string
-    :param name: the name of the subscription
+    :param name: the name of the subscription. Must start with a letter, and
+                 contain only letters, numbers, dashes, underscores, periods,
+                 tildes, plus or percent signs. It must be between 3 and 255
+                 characters in length, and it must not start with ``goog``.

     :type topic: :class:`gcloud.pubsub.topic.Topic`
     :param topic: the topic to which the subscription belongs..

I'm assuming you mean URL quoting?.  I'd prefer that we just document the expected format, preferably by pointing to the API docs (I looked at project.subscriptions and project.subscriptions.create, and couldn't find the constraint specified).

:+1: Yes I meant that, sorry.

The constraint I mentioned is from the topics.create doc. Also just searching for 255 in the discovery doc turns up lots of mentions.

Hmm, I didn't look at the "Try It!" section for specification, silly me.  subscriptions.create has it, too!

Anyway, I'm still -1 on DWIMing the invalid-name-with-spaces to the urlquoted form.  Maybe we can Zawinski the names ahead of time (of course, then we have to worry about drift between our regex and the backend's constraints).

Cool. At the very least we should update the docstrings

Hello! :-)
First, a mea culpa; I have not done as good of a job at keeping up with issues as I should have. If you are getting this (I admit it) cut and paste, it is likely because your issue sat for too long.
In this case, I have been in the process of making a radical update to the PubSub library (#3637) to add significant performance improvements and a new surface, which we hope to launch soon. As such, I am clearing out issues on the old library. It is my sincere goal to do a better job of being on top of issues in the future.
As the preceding paragraph implies, I am closing this issue. If the revamped library does not solve your issue, however, please feel free to reopen.
Thanks!


How does one wait for all event handlers to fully complete processing after shutdown?

Version: 3.3.2
It appears that event handlers are not necessarily finished executing when Disruptor.shutdown() returns. What is the definitive way to detect when all event handlers have finished execution after the disruptor is shutdown?
As a point of illustration, this unit test sometimes prints 0, and sometimes prints 1:
public class ShutdownTest {
    volatile int value = 0;

    @Test
    public void shutdownFailure() throws TimeoutException
    {
        Disruptor<Void> disruptor = new Disruptor<>(() -> null, 8, (ThreadFactory) Thread::new);
        disruptor.handleEventsWith(this::updateValue);
        disruptor.start();
        disruptor.getRingBuffer().publishEvent((m, s) -> {});
        disruptor.shutdown(10, TimeUnit.SECONDS);

        System.out.println(value); // Sometimes prints 0, but if updateValue has completed it would be expected to always be 1.
    }

    private void updateValue(Message message, long sequence, boolean endOfBatch)
    {
        value = 1;
    }
}

What is the correct way of ensuring that "1" is printed, always?

You can use the LifecycleAware interface to detect shutdown, I've drawn up an example.

Thanks!

It appears that only the first EventHandler in the chain may be LifecycleAware. Later event handlers, if marked LifecycleAware, will not be called.
For example in disruptor.handleEventsWith(new FirstEventHandler()).then(new SecondEventHandler());, it should be the FirstEventHandler that is LifecycleAware. If SecondEventHandler is LifecycleAware, it does not appear to be called on shutdown.

I don't see the problem that you mention.  I've updated the example to use two EventHandlers and the onShutdown method is called for both.  Do you have a complete example that shows the problem.

The code below printed "Failures: 46/100" for me. If I switch from using EventHandlers to WorkHandlers, the failure rate drops to 0/100.
private class ShutdownTest
{
    private CountDownLatch startupLatch;
    private CountDownLatch shutdownLatch;

    @Test
    public void shutdownFailure() throws TimeoutException, InterruptedException
    {
        int failures = 0;
        for(int i = 0; i < 100; ++i)
        {
            startupLatch = new CountDownLatch(1);
            shutdownLatch = new CountDownLatch(1);

            Disruptor<Void> disruptor = new Disruptor<>(() -> null, 8, (ThreadFactory) Thread::new);
            disruptor.handleEventsWith(new EventHandler1());
            disruptor.handleEventsWith(new EventHandler2());
            disruptor.start();
            disruptor.getRingBuffer().publishEvent((m, s) -> {
            });
            disruptor.shutdown(10, TimeUnit.SECONDS);

            Assert.assertTrue(startupLatch.await(5, TimeUnit.SECONDS));

            if(!shutdownLatch.await(10, TimeUnit.SECONDS))
            {
                ++failures;
            }
        }

        System.out.println("Failures: " + failures + "/100");
    }

    private class EventHandler1 implements EventHandler<Void>
    {
        @Override
        public void onEvent(Void event, long sequence, boolean endOfBatch) throws Exception
        {
            System.out.println("Event 1");
        }
    }

    private class EventHandler2 implements EventHandler<Void>, LifecycleAware
    {
        @Override
        public void onEvent(Void event, long sequence, boolean endOfBatch) throws Exception
        {
            System.out.println("Event 2");
        }

        @Override
        public void onStart()
        {
            System.out.println("Start 2");
            startupLatch.countDown();
        }

        @Override
        public void onShutdown()
        {
            System.out.println("Shutdown 2");
            shutdownLatch.countDown();
        }
    }
}

Move the line Assert.assertTrue(startupLatch.await(5, TimeUnit.SECONDS)); before the shutdown call.  The shutdown is occurring before the thread has had a chance to start.

That's the primary source of confusion for me, I suppose. In this example, the thread does seem to actually start and handle traffic, but because the shutdown happens so quickly it seems to skip doing the onShutdown method.
The logs from a failed iteration of this test are:
Event 1
Start 2
Event 2
That indicates to me that the threads have already started because:

The onStart() is being called.
The onEvent() is being called.

Despite these two functions being executed, the onShutdown() is never called when the thread is killed. That's pretty confusing as I would expect after an onStart() you would always see an onShutdown().
This probably won't ever be an issue in production code because it's unlikely people would ever start and stop the disruptor so quickly, but it's a bit of a nuisance in unit testing where you're more likely to be starting and stopping them in quick succession. As you've pointed out, it can be worked around by adding the startup latch and ensuring the startup has finished before the shutdown is initiated.

It is a source of confusion that I want to fix, but doing it transparently (without API or behaviour change) is tricky and given that it tends to only turn up in unit tests and there is a fairly straight-forward workaround it keeps falling to the bottom of the priority list.

Seems reasonable. Thanks!


Does Accelerate support speed up custom cuda forward?

Hello
I've defined some custom cuda function in the python code, but I haven't observed significant reductions in memory usage and execution time through Accelerate.
So my question is does accelerate support to speed up custom cuda forward?

No, I don't think it should at all. Accelerate just helps with optimizing DDP etc easier.


Sending data with more than 1250 bytes

I am creating a player-hosted multiplayer survival game, so there is a lot of stuff that isn't stored on the server, but on the clients. because of this when the game gets saved I need to send a relatively big JSON savefile from every client to the server. Currently I need to break it down into several messages, because a message can't have more than 1250 bytes. However this is obviously not ideal, and as the savefile gets bigger because there is more data that needs to be saved It will get more and more complicated. So I wanted to ask: is there a possibility to send bigger chunks of data with riptide? and if this isn't possible: is there a reason for it not to be possible?

Riptide isn't designed for sending huge amounts of data, maybe try sending the save over http instead. It will be faster, more secure, and in theory can be any size.

Sorry, I normally make singleplayergames. how would I do that?

So I wanted to ask: is there a possibility to send bigger chunks of data with riptide? and if this isn't possible: is there a reason for it not to be possible?

You could modify the source code to increase the limit. The reason messages are limited to that size is because Riptide is built for speed, and larger messages are more likely to take longer to send. In order for message instances to be reusable, they need a pre-allocated byte array which requires setting some kind of maximum size, and 1250 is less than MTU but bigger than most games will ever need a message to be.

there is a lot of stuff that isn't stored on the server, but on the clients

What kind of stuff are clients storing that the server doesn't know about?

because of this when the game gets saved I need to send a relatively big JSON savefile from every client to the server.

Sending the raw data and making the server create the JSON file locally will be more efficient than creating the JSON file on the client and sending that whole thing over.

Sending the raw data and making the server create the JSON file locally will be more efficient than creating the JSON file on the client and sending that whole thing over.

Yes I realized this. I fixed the problem by making a generic class, that can split a bytearray into several bytearrays with an index, and then put them together in the right order. It works fine, and I can send big chunks of data with many small messages.

What kind of stuff are clients storing that the server doesn't know about?

this is my first ever multiplayer game, and it will only be playable with friends cooperatively. So I don't need to keep track of for example player-abilities, loadouts or just inventorys on the server. Instead I just send it as a savefile when needed.

and larger messages are more likely to take longer to send.

I figued as much. that's why I didn't want to do this.

7f67328 adds the ability to modify the max payload size for messages and will be part of v1.3.0, so you could use that to avoid having to split data. However, the aforementioned considerations still apply, so it may still not be something that you actually want to do.


Vulnerability on dependency CVE-2018-1000544

rubyzip gem rubyzip version 1.2.1 and earlier contains a Directory Traversal vulnerability in Zip::File component that can result in write arbitrary files to the filesystem
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000544

@gauravjantwal have you solved this issue?

Hey @bettysteger , this is an old repository, avoid using this repo

@gauravjantwal can i ask what you use instead? thanks!

I fixed this issue by just updating the dependency to fix this issue:
https://github.com/pennfoster/scorm
Since then I am not working on Ruby :D


Trovi SoR Project Submission

Mentors: Kate Keahey and Mark Powers

@marcwitasee can you also include Mark Powers' bio on website

@slieggi Done!