Librespot crashes when seeking to a position that is not yet downloaded.

When librespot starts downloading and playing a track, when one seeks manually forward to a part that is not yet downloaded, librespot crashes. Here is the last lines of the --verbose log:
[2021-12-09T18:32:39Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
[2021-12-09T18:32:39Z DEBUG librespot_playback::player] command=Seek(98835)
[2021-12-09T18:32:40Z ERROR librespot_playback::player] PlayerInternal handle_command_seek: Lewton Decoder Error: Ogg decode problem
[2021-12-09T18:32:40Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
[2021-12-09T18:32:40Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
[2021-12-09T18:32:40Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
[2021-12-09T18:32:40Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
[2021-12-09T18:32:40Z ERROR librespot_playback::player] PlayerInternal poll: Lewton Decoder Error: Vorbis bitstream audio decode problem

Then the application crashed.
EDIT: This is running librespot 0.3.1 e66cc55 (Built on 2021-12-02, Build ID: b5V8XqQE, Profile: release).

I tried to reproduce this error by:

Making sure not to enable caching.
Skip though A BUNCH of random tracks and seeking to the middle of the track as soon as I could.

I can not reproduce.
The worst I can get is a Player::seek called from invalid state warning. And librespot recovers just fine from those.
Can the tracks in question be played otherwise? If not it could be that they're just not Vorbis? Either that or your connection is unstable and/or slow. I looked up those errors in Lewton and Ogg (the decoder libs) and they're not very helpful. It could be anything from it's not a vorbis to any number of I/O errors.

After:
[2021-12-09T18:32:39Z DEBUG librespot_playback::player] command=Seek(98835)

You should have gotten something that looked like this if you haven't downloaded the file up to that point:
[2021-12-11T02:49:40Z DEBUG librespot_audio::fetch] Stream waiting for download of file position 11891636. Downloaded ranges: ([0, 249855]). Pending ranges: ([249856, 286719])
[2021-12-11T02:49:40Z DEBUG librespot_audio::fetch] Read at postion 11891636 completed. 27 bytes returned, 27 bytes were requested.

You are right, it is not easy to reproduce. It happens rarely it seems. If I figure out how to reproduce it every time, I will update this thread.
This is what happens when librespot does not crash and continues playing:
[2021-12-11T12:06:19Z DEBUG librespot_playback::player] command=Seek(659838)
[2021-12-11T12:06:19Z TRACE librespot_connect::spirc] Sending status to server: [kPlayStatusPlay]
[2021-12-11T12:06:19Z TRACE librespot_connect::spirc] ==> kPlayStatusPlay
[2021-12-11T12:06:19Z WARN  librespot_playback::audio_backend::alsa] Error writing from AlsaSink buffer to PCM, trying to recover, ALSA function 'snd_pcm_writei' failed with error 'EPIPE: Broken pipe'
ALSA lib pcm.c:8545:(snd_pcm_recover) underrun occurred

After this error, librespot does not crash and continues playing the track after it is downloaded properly.

You are right, it is not easy to reproduce. It happens rarely it seems. If I figure out how to reproduce it every time, I will update this thread.

Can the tracks that crash librespot otherwise be played normally?

This is what happens when librespot does not crash and continues playing:
After this error, librespot does not crash and continues playing the track after it is downloaded properly.

The underrun are just the byproduct of trying to induce the error. Continually and rapidly changing tracks is opening and closing the ALSA device over and over again. That's just the device's way of saying "hold on a sec and let me catch my breath." They are otherwise unrelated to the decoder bug.
I'm inclined to say that this is either because the stream is not a vorbis stream or it's some bug in the decoder.
librespot only supports vorbis but Spotify also streams mp3 and aac depending on what type of content. Music is vorbis 99.9% of the time but occasionally it will try to serve up a mp3 or aac in place of a vorbis.

@roderickvd is in the process of figuring out the new API and the plan is to move to a decoder framework that can do mp3 aac and vorbis so I don't really want to do a deep dive into handling decoder errors only to have it all just rewritten in a few weeks anyway. But in the future I would think that in the event of a fatal decoding error we should just skip to the next song instead of crash or exit completely.

Can the tracks that crash librespot otherwise be played normally?

Yes, it can! I tried to make sure.

we should just skip to the next track instead of crashing or exiting completely

I don't know why this isn't the case already. Even spotify client does that (some tracks are unplayable in certain countries, etc.)

@roderickvd is in the process of figuring out the new API and the plan is to move to a decoder framework that can do mp3 aac and vorbis so I don't really want to do a deep dive into handling decoder errors only to have it all just be rewritten in a few weeks anyway. But in the future I would think that in the event of a fatal decoding error we should just skip to the next track instead of crashing or exiting completely.

Yeah, we'll be pushing reporting decoding errors down to Symphonia.

But in the future I would think that in the event of a fatal decoding error we should just skip to the next track instead of crashing or exiting completely.

Please try #905.

Pretty sure librespot handles regular track availability just fine. That's got nothing to do with decoding errors.

Pretty sure librespot handles regular track availability just fine. That's got nothing to do with decoding errors.

What they said.

Yes, it can! I tried and am sure.

Calm down. I was just cover the bases.
Like I said the error messages come from a upstream crate and aren't particularity descriptive or useful. It could be any number of a million and 1 different I/O errors.


add first templates to amba components

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

173 of 177 (97.74%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+1.4%) to 97.307%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/ucdp_amba/types.py
43
45
95.56%

src/ucdp_amba/ucdp_ahb2apb.py
56
58
96.55%

Totals

Change from base Build<PHONE_NUMBER>:
1.4%

Covered Lines:
542

Relevant Lines:
557

💛  - Coveralls


How do I test USB tethering?

I'm trying to test it with USB but I cannot figure out how to enable USB tethering on the Gear VR. What are the steps?
Currently I'm doing this: Connect phone to USB -> settings -> enable USB Tethering. Try to disconnect USB and insert the phone into gear vr, then connect USB into gear vr. USB tethering gone.
Is there another way?

@vrokolos Hi!! You can´t. There is NO WAY to enable usb tethering with gearvr. From the moment that you unplug the usb cable from the phone, the thethering is gone.
Depending on your phone, you can plug some usb to ethernet adapter to the gearvr, and that way you could gain tethering... That implementation was commented in the riftcat reddit and forums...

As Tux0Topo said, Gear VR HMD forces the phone into USB host mode. So you need to use USB ethernet adapter.
It was a mistake that I said support tethering. Tethering is not supported on all devices including Go.
Sorry.

Ah it's ok. Still, I'll try to create a tasker task that enables usb tethering and maybe run it through the phonecast app when I have some free time.

Hi, really interested in trying usb tethering with GearVr,. So far I've tried making my phone a mobile hotspot while turning 4g off and although this works it is very laggy with lots of the unrendered black area being seen. I've also tried using a usb c to ethernet adapter from gear vr port running ethernet cable to laptop, the laptop recognizes the ethernet connection but when I go into phonecast into the settings options, the tethering folder is blocked saying that phonecast is unable to run this. I wonder if there is an app you could use as a workaround to enable usb tethering?

I know this is an old thread but its still open and I figured it out. Just plug usb cord into phone (if you can fit it into headset) and then into computer. From there launch usb tethering and put gearvr into dev mode by going to settings then apps then manage storage then click version number 5 times enable dev mode. From there enable usb tethering. Also in reply to axemation you would require root access to enable usb tethering if blocked. If you have root just use something like https://play.google.com/store/apps/details?id=it.barbaro.aut&hl=en_US

So @polygraphene and @Spyindabox I also managed to get working USB thethering with ALVR inside Oculus app. I created a signed hello world and it worked for me. Finally had fluid stable image (I own an N router and it is not capable of delivering wifi speed needed).
However if I plug USB via Gear VR the option to enable usb tethering is not selectable, did you manage to get around this @Spyindabox? I don't have a good idea on how to fit my phone (s9) with cable connected directly to it into Gear headset.

@ergo hey, i wish to know what u did to get it working
what is "signed hello word"?
Thnaks

@ergo I was talking about just using developer mode to launch apps like alvr and then just plugging the phone directly into computer without using the gear vr. If you cant do this because your phone cant fit, then you might consider starting a 5ghz network from your phone something like "NetShare -no root tethering wifi router" (thats a paid app but there are free ways to do it) and then connecting your computer directly to the hotspot I can confirm that this method works. If you use netshare with (https://forum.xda-developers.com/galaxy-s3/themes-apps/app-wifi-band-switcher-switch-2-4ghz-5-t1891970) a wifi band switcher, (that  requires root) you can broadcast in 5ghz band. You can probably just use something like netshare without the wifi switcher app but you need to make sure its using 5ghz as in my testing it could be inconsistent without the wifi band switcher. If you can get it set up right this would be probably faster than a router as its a direct connection between the computer and phone. Hope this helps

@ergo  I wanted to add that using Gear VR developer mode, and doing what you were talking about by plugging phone into gearvr and then connecting gear vr into computer, I was able to get it to almost connect but kept getting (usb device not recognized with device descriptor errors), It could be something with just my computer but I think the gearvr pollutes the connection somehow. It didn't seem to be charging either.
You also might consider switching to a bobo vr z4 (they're pretty cheap) and have a big side area for the wire to hang out as the phone clamp is vertical rather than horizontal. AThen just launching alvr via dev mode and have the phone plugged directly into the computer for usb tethering. This would help with charging as well, alvr and other gear vr apps drains the battery super fast on my galaxy s6. Although I would note the bobovr z4 just barely lets in light through the top of the screen which can be covered up with tape or something.

I also bought USB C -> ethernet dongle (https://i-tec.cz/en/produkt/c31metalglan-2/ this one) in the end, and everything is working like a charm via Gear VR.


almost 24 hours since transaction.

Hello,
I'm having an issue with my transaction processing.
It's been almost 24 hours and my transaction is still labeled as unspent.
Can someone help me with this?

Hi @boxinabox1, responded via support email.


Change text on locate json

Hello,
Its possible to change text string in locate json inside package?
Thanks

You may want to look elsewhere for answers, unless you have suggestions for improving one or more specific pages in the MS Docs repository.
Disclaimer: I am not affiliated with Microsoft or the Microsoft Docs teams here on GitHub.
The intention of this repository is to improve on the existing documentation by providing the users a way to report factual errors, improvement suggestions and request updates for new versions.
The MS Docs team members might not have time to answer your question, both due to the small size of the team and the big workload.
Try the following resources to get in touch with users who may be able to help you:

TechNet forums: https://social.technet.microsoft.com/Forums/en-US/home
MSDN: https://social.msdn.microsoft.com/Forums/en-US/home
Microsoft Community: https://answers.microsoft.com/

#please-close

I make this change in myself way.
Thanks


The releasefunds API does not update the order.

As a vendor / buyer, after I accept a payout by calling the releasefunds API on an order for which a moderator has given a decision, the order remains in the same state (DECIDED).
The release funds API appears to go through correctly (returns 200 and no errors). Yet, the order is never updated and I could repeatedly keep calling the API.
As an example, I post the following to ob/releasefunds:
orderId: "QmSnkXF3YshXU3preNJPqSv2dJswXwqDj7p9nSMeB4DSMr"

after that call succeeds, a subsequent fetch of the order returns the following data:
{
    "contract": {
        "vendorListings": [
            {
                "slug": "hero-ball",
                "vendorID": {
                    "peerID": "QmahazHBv98h4Tye4qY7V7fueygpcrYoC3qRyUjGxuhJHU",
                    "blockchainID": "",
                    "pubkeys": {
                        "identity": "CAESIA5FcWTQJXhmzxqkEXmJYr+N55Iw/UWKVbObbljVk2Aw",
                        "bitcoin": "A2GzN3yLaYwB76pG6/D+RbO20UD1Hwq39GaMpa4cdb+2"
                    },
                    "bitcoinSig": "MEUCIQCETjWqGvkH4VJYmX7MUB4eY28R2vF9NCUX1gW/ojTPTQIgYdnAbk5H4h5qUHmLvaPFvtPj2UnDgbOP33pYXWBUcIU="
                },
                "metadata": {
                    "version": 1,
                    "contractType": "DIGITAL_GOOD",
                    "format": "FIXED_PRICE",
                    "expiry": "2037-12-31T08:00:00.000Z",
                    "acceptedCurrency": "TBTC",
                    "pricingCurrency": "USD",
                    "language": ""
                },
                "item": {
                    "title": "hero ball",
                    "description": "",
                    "processingTime": "",
                    "price": 100,
                    "nsfw": false,
                    "tags": [
                    ],
                    "images": [
                        {
                            "filename": "River-HD-Wallpapers.jpg",
                            "original": "QmafB8g5uhgsSLg1Q7yW1Fx77MfZX3FquheztX29Fvra6C",
                            "large": "QmdNybLSqBKADf2wsmSMW3QPWFdo1WhGyuAEB5yrPMRM4J",
                            "medium": "QmfSouXT6wh2yhvaoXWtvQsvuxXRX9yUGAbRhuyiyFxjr2",
                            "small": "QmdbKaqV2qEZbzqWnoUS3svEe71XYq7k1X1CqSRyggtVvw",
                            "tiny": "QmdEqHjwWNzoTEjTuRy8ykLM2zpgW8mDbmJDJS9nN89eT1"
                        }
                    ],
                    "categories": [
                    ],
                    "grams": 0,
                    "condition": "NEW",
                    "options": [
                        {
                            "name": "size",
                            "description": "",
                            "variants": [
                                {
                                    "name": "small"
                                },
                                {
                                    "name": "medium"
                                },
                                {
                                    "name": "large"
                                }
                            ]
                        },
                        {
                            "name": "color",
                            "description": "",
                            "variants": [
                                {
                                    "name": "red"
                                },
                                {
                                    "name": "green"
                                },
                                {
                                    "name": "blue"
                                }
                            ]
                        }
                    ],
                    "skus": [
                        {
                            "variantCombo": [
                                0,
                                0
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                0,
                                1
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                0,
                                2
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                1,
                                0
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                1,
                                1
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                1,
                                2
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                2,
                                0
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                2,
                                1
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        },
                        {
                            "variantCombo": [
                                2,
                                2
                            ],
                            "productID": "",
                            "surcharge": 0,
                            "quantity": 0
                        }
                    ]
                },
                "shippingOptions": [
                ],
                "coupons": [
                ],
                "moderators": [
                    "QmQB3VZZa4ZovzFP7mj6MqUjdLxAjoGqrs7N5uQ3j6yqEb"
                ],
                "termsAndConditions": "",
                "refundPolicy": ""
            }
        ],
        "buyerOrder": {
            "refundAddress": "n2VUnhr5DEgVCbgJkKqjSmM4ewkhicKyG1",
            "refundFee": 390,
            "shipping": {
                "shipTo": "",
                "address": "",
                "city": "",
                "state": "",
                "postalCode": "",
                "country": "NA",
                "addressNotes": ""
            },
            "buyerID": {
                "peerID": "QmbG9sv6Veox66CoretT614XGmXqwXPzdUFfitDQLMJWtM",
                "blockchainID": "",
                "pubkeys": {
                    "identity": "CAESICXs+XLVyjnExPGLBmi5VVgiKi2y6t9jp6d7J4ePPniB",
                    "bitcoin": "AiPogFHNiXyr+Gct7D+/wZcJ3N1xyt0YxGXIn43yalM5"
                },
                "bitcoinSig": "MEQCIEuQ7VvUJAVrXY5QFIDRZFHRD33OQ4v7g6T9SK2I/Cd1AiBnGhoSGqmwB/QvXs/pbs7W9qOIcX7f5a6iC51b/iCr7A=="
            },
            "timestamp": "2017-06-16T21:38:26.928397899Z",
            "items": [
                {
                    "listingHash": "QmQNbPe7gwrGFLX9GgzYiv4wncnLbQyCB9sFmqfZnwuG2E",
                    "quantity": 1,
                    "options": [
                        {
                            "name": "size",
                            "value": "small"
                        },
                        {
                            "name": "color",
                            "value": "red"
                        }
                    ],
                    "shippingOption": {
                        "name": "",
                        "service": ""
                    },
                    "memo": ""
                }
            ],
            "payment": {
                "method": "MODERATED",
                "moderator": "QmQB3VZZa4ZovzFP7mj6MqUjdLxAjoGqrs7N5uQ3j6yqEb",
                "amount": 39695,
                "chaincode": "2cd7efaf9e4d0a013d441dd2bb3ab1fc35a6152c701d08ac8594ff3370a73019",
                "address": "2NAWm9f865zyUhYCJf8nZ5iEPD73H6pQBQS",
                "redeemScript": "52210370662b895ff67861a29430553d54b57f61af4f17e49c5fb7aa269d56aa9ca1c221030ebd682db27e7524e96dfaa9069dd09b0cb7706a7a3f794a777e6aab6a62fecd21038a36fbf64c11859db245aaee62d2429fe3a2b166b2608d3f6d1bc0beba26ceb553ae"
            },
            "ratingKeys": [
                "AzoJJvrNfnHX6zxnRCcCwEQV2xxO5l7Qt7u+kREaDxLC"
            ],
            "alternateContactInfo": ""
        },
        "vendorOrderConfirmation": {
            "orderID": "QmSnkXF3YshXU3preNJPqSv2dJswXwqDj7p9nSMeB4DSMr",
            "timestamp": "2017-06-16T21:38:27.452836965Z",
            "paymentAddress": "2NAWm9f865zyUhYCJf8nZ5iEPD73H6pQBQS",
            "requestedAmount": 39695,
            "ratingSignatures": [
                {
                    "metadata": {
                        "listingSlug": "hero-ball",
                        "moderatorKey": "/s0hA4o2+/ZMEYWdskWq7mLSQp/jorFmsmCNP20bwL66"
                    },
                    "signature": "y+WLk5LNNJszor+9TnmC/mkdmvE27ua5Ok6oIW+mU2ysZXB5EJcDzTE17WSYLMCAXPcAdAFBYJ5jOfDt9cXgDA=="
                }
            ]
        },
        "dispute": {
            "timestamp": "2017-06-16T22:29:25.820728981Z",
            "claim": "milly bean beamer",
            "payoutAddress": "n1G9avK44w96fdpY5KyVET7ezgCLekeWVN",
            "outpoints": [
                {
                    "hash": "208d9e09a16f637e0fe9aa323fdf78a9b691eb3e32d654ef25f88cf031f9a4d9",
                    "index": 0,
                    "value": 39695
                }
            ],
            "serializedContract": "CrcFCgloZXJvLWJhbGwSxAEKLlFtYWhhekhCdjk4aDRUeWU0cVk3VjdmdWV5Z3BjcllvQzNxUnlVakd4dWhKSFUaSQokCAESIA5FcWTQJXhmzxqkEXmJYr+N55Iw/UWKVbObbljVk2AwEiEDYbM3fItpjAHvqkbr8P5Fs7bRQPUfCrf0Zoylrhx1v7YiRzBFAiEAhE41qhr5B+FSWJl+zFAeHmNvEdrxfTQlF9YFv6I0z00CIGHZwG5OR+IealB5i72jxb7T49lJw4Gzj996WF1gVHCFGhcIARABIgYIgO2c/wcqBFRCVEMyA1VTRCKZAwoJaGVybyBiYWxsIGQ6iQIKF1JpdmVyLUhELVdhbGxwYXBlcnMuanBnEi5RbWFmQjhnNXVoZ3NTTGcxUTd5VzFGeDc3TWZaWDNGcXVoZXp0WDI5RnZyYTZDGi5RbWROeWJMU3FCS0FEZjJ3c21TTVczUVBXRmRvMVdoR3l1QUVCNXlyUE1STTRKIi5RbWZTb3VYVDZ3aDJ5aHZhb1hXdHZRc3Z1eFhSWDl5VUdBYlJodXlpeUZ4anIyKi5RbWRiS2FxVjJxRVpienFXbm9VUzNzdkVlNzFYWXE3azFYMUNxU1J5Z2d0VnZ3Mi5RbWRFcUhqd1dOem9URWpUdVJ5OHlrTE0yenBnVzhtRGJtSkRKUzluTjg5ZVQxUgNORVdaIgoEc2l6ZRoHCgVzbWFsbBoICgZtZWRpdW0aBwoFbGFyZ2VaHwoFY29sb3IaBQoDcmVkGgcKBWdyZWVuGgYKBGJsdWViBAoCAABiBAoCAAFiBAoCAAJiBAoCAQBiBAoCAQFiBAoCAQJiBAoCAgBiBAoCAgFiBAoCAgJCLlFtUUIzVlpaYTRab3Z6RlA3bWo2TXFVamRMeEFqb0dxcnM3TjV1UTNqNnlxRWIS6AUKIm4yVlVuaHI1REVnVkNiZ0prS3FqU21NNGV3a2hpY0t5RzEQhgMaACLDAQouUW1iRzlzdjZWZW94NjZDb3JldFQ2MTRYR21YcXdYUHpkVUZmaXREUUxNSld0TRpJCiQIARIgJez5ctXKOcTE8YsGaLlVWCIqLbLq32Onp3snh48+eIESIQIj6IBRzYl8q/hnLew/v8GXCdzdccrdGMRlyJ+N8mpTOSJGMEQCIEuQ7VvUJAVrXY5QFIDRZFHRD33OQ4v7g6T9SK2I/Cd1AiBnGhoSGqmwB/QvXs/pbs7W9qOIcX7f5a6iC51b/iCr7CoMCNKfkcoFEMv02LoDMlEKLlFtUU5iUGU3Z3dyR0ZMWDlHZ3pZaXY0d25jbkxiUXlDQjlzRm1xZlpud3VHMkUQARoNCgRzaXplEgVzbWFsbBoMCgVjb2xvchIDcmVkIgA68gIIAhIuUW1RQjNWWlphNFpvdnpGUDdtajZNcVVqZEx4QWpvR3FyczdONXVRM2o2eXFFYhiPtgIiQDJjZDdlZmFmOWU0ZDBhMDEzZDQ0MWRkMmJiM2FiMWZjMzVhNjE1MmM3MDFkMDhhYzg1OTRmZjMzNzBhNzMwMTkqIzJOQVdtOWY4NjV6eVVoWUNKZjhuWjVpRVBENzNINnBRQlFTMtIBNTIyMTAzNzA2NjJiODk1ZmY2Nzg2MWEyOTQzMDU1M2Q1NGI1N2Y2MWFmNGYxN2U0OWM1ZmI3YWEyNjlkNTZhYTljYTFjMjIxMDMwZWJkNjgyZGIyN2U3NTI0ZTk2ZGZhYTkwNjlkZDA5YjBjYjc3MDZhN2EzZjc5NGE3NzdlNmFhYjZhNjJmZWNkMjEwMzhhMzZmYmY2NGMxMTg1OWRiMjQ1YWFlZTYyZDI0MjlmZTNhMmIxNjZiMjYwOGQzZjZkMWJjMGJlYmEyNmNlYjU1M2FlQiEDOgkm+s1+cdfrPGdEJwLARBXbHE7mXtC3u76RERoPEsIa2wEKLlFtU25rWEYzWXNoWFUzcHJlTkpQcVN2MmRKc3dYd3FEajdwOW5TTWVCNERTTXISDAjTn5HKBRDl/PbXARojMk5BV205Zjg2NXp5VWhZQ0pmOG5aNWlFUEQ3M0g2cFFCUVMgj7YCKnIKLgoJaGVyby1iYWxsGiH+zSEDijb79kwRhZ2yRaruYtJCn+OisWayYI0/bRvAvroSQMvli5OSzTSbM6K/vU55gv5pHZrxNu7muTpOqCFvplNsrGVweRCXA80xNe1kmCzAgFz3AHQBQWCeYznw7fXF4AxKQhJAgjSRvdo+bJKkG9DSyHnw6KwDFzlXbhTcFi4/fOiVrOUJzK2Xqh5e5K0BDh7XqoSx9SCsBBLl7Iqw1D0m/e/+D0pECAESQLbTbMkuYpMY83vA1Zn/TMBA2dxHzbNAYfqTe1vQWh8P+jyKEzgowptUmd+cb+HXnJRZpAeGI+W5CznZX5LXxgdKRAgCEkAUe705/LiOOBz0mcAjzI8P2Nm1w/l1oz1bL7Y4rrEOu1fiIh2b2RUiXg7+u0jm97PEGFes5sNEa+7xBq7+oq4F"
        },
        "disputeResolution": {
            "timestamp": "2017-06-21T21:12:17.884383982Z",
            "orderId": "QmSnkXF3YshXU3preNJPqSv2dJswXwqDj7p9nSMeB4DSMr",
            "proposedBy": "QmQB3VZZa4ZovzFP7mj6MqUjdLxAjoGqrs7N5uQ3j6yqEb",
            "resolution": "sadasd",
            "payout": {
                "sigs": [
                    {
                        "inputIndex": 0,
                        "signature": "MEQCIAXPwvqcJiF9LgMPucDAuNwmND2Efw0w/vYmoNHQEq1FAiB66y14Puy63t/DApwCraceHltDnoHX8GBc3wc8iGcYNAE="
                    }
                ],
                "inputs": [
                    {
                        "hash": "208d9e09a16f637e0fe9aa323fdf78a9b691eb3e32d654ef25f88cf031f9a4d9",
                        "index": 0,
                        "value": 39695
                    }
                ],
                "buyerOutput": {
                    "script": "76a914d895b38a33170ebab37a79755f263096d97c2ec788ac",
                    "amount": "18446744073709503269"
                },
                "moderatorOutput": {
                    "script": "76a9148b938d973ec2bba02c074bdcafb6c489debd199b88ac",
                    "amount": "18446744073709551129"
                }
            },
            "moderatorRatingSigs": [
                "WWtiExXC/nJhSWK2ZnQp+A1jcb58KB4g0AuaETspX5NQjv/tMJ2YcxkdxBY3rH4Y1SDlrvZvMN/7CWqr7IilCw=="
            ]
        },
        "signatures": [
            {
                "section": "LISTING",
                "signatureBytes": "gjSRvdo+bJKkG9DSyHnw6KwDFzlXbhTcFi4/fOiVrOUJzK2Xqh5e5K0BDh7XqoSx9SCsBBLl7Iqw1D0m/e/+Dw=="
            },
            {
                "section": "ORDER",
                "signatureBytes": "ttNsyS5ikxjze8DVmf9MwEDZ3EfNs0Bh+pN7W9BaHw/6PIoTOCjCm1SZ35xv4declFmkB4Yj5bkLOdlfktfGBw=="
            },
            {
                "section": "ORDER_CONFIRMATION",
                "signatureBytes": "FHu9Ofy4jjgc9JnAI8yPD9jZtcP5daM9Wy+2OK6xDrtX4iIdm9kVIl4O/rtI5vezxBhXrObDRGvu8Qau/qKuBQ=="
            },
            {
                "section": "DISPUTE",
                "signatureBytes": "J99EJFIUCLPSkem09mBT/gtBYfWoFJpCATwi+AiCAE1Trr9gOdP9AErM8cNbOrPTSLLky9Qmo1SqrAF4YrM3AA=="
            },
            {
                "section": "DISPUTE_RESOLUTION",
                "signatureBytes": "V0mKCZmHPpycHyh8ZvFUakDISHvpejIBt1OtnzPMK8JA5h5C+Z2t+RL/1wVS82GzdW1ntnb69e61vVSS1JjoBw=="
            },
            {
                "section": "DISPUTE_RESOLUTION",
                "signatureBytes": "V0mKCZmHPpycHyh8ZvFUakDISHvpejIBt1OtnzPMK8JA5h5C+Z2t+RL/1wVS82GzdW1ntnb69e61vVSS1JjoBw=="
            }
        ]
    },
    "state": "DECIDED",
    "read": true,
    "funded": true,
    "unreadChatMessages": 0,
    "paymentAddressTransactions": [
        {
            "txid": "208d9e09a16f637e0fe9aa323fdf78a9b691eb3e32d654ef25f88cf031f9a4d9",
            "value": 39695,
            "confirmations": 18728,
            "height": 1128840,
            "timestamp": "2017-06-16T22:29:07.611172258Z"
        }
    ]
}

Fixed. It does not update the other party though because there's a potential attack vector if the one party sends a fake "I closed the dispute" message which then makes the other party think the dispute has been closed and thus cannot close it himself.
I could maybe try setting the state to resolved based on the flow of funds from the multisig though that would be more complexity.

It does not update the other party though because there's a potential attack vector if the one party sends a fake "I closed the dispute" message which then makes the other party think the dispute has been closed and thus cannot close it himself.

I could maybe try setting the state to resolved based on the flow of funds from the multisig though that would be more complexity.

Hmm... are you saying that when one party accepts the payout, for the other party the order will continue to stay in a DECIDED state? Which means that party will continue to see an Accept Payout CTA that will just fail any time they press it.

Also, if the other party in this case is the buyer, the order would never get to a resolved state and therefore the buyer would never be able to complete the order (leave a review).
It also means the transaction will continue to have a state of 'Decided; in the transactions table and only show up on the Dispute Open filter:

Complexity or not... I'm just not seeing how this would work. Re-opening this for now.
We could have a discussion with @morebrownies  and @jjeffryes (when he returns) if need be.

Do we want the buyer leaving reviews on disputes he didn't win? I think that could open the door to malicious actors.

The purchaser should be able to leave a review on any transaction that isn't rejected/refunded.
If a vendor is working with a moderator to purposely steal funds from buyers, the community will benefit for being able to see negative reviews in those scenarios.

I was wrong. There is code to do this already.

Re-opening since I'm not able to confirm this. Apparently there's a testnet issue. Once it's resolved, we can re-test this issue.

FWIW - it's not only that the other party doesn't have the order state updated. For me, even the party that released their funds doesn't get the order state updated. It's still the original issue where the order is perpetually in a DECIDED state.

Now, for the node that releases the funds, the Order state goes from DECIDED back to DISPUTED. It does correctly include a 'disputeAcceptance' event.

I think this is mostly working with the exception of transactions which fall below the dust value and don't get relayed.


Import from Addon has incorrect spirit value

Describe the bug
Stat values for the Elemental Shaman are not correct on the sim when I import from the addon.  The sim page shows 1783 spirit, but in game I show I have 1850 spirit.  Not sure what else is off, but that is one thing I noticed.  Everything gear wise looks correct.
To Reproduce
Steps to reproduce the behavior:
Import the following:
{"talents":"3032023212231101320-2010000000000000000-20302000000000000000","glyphs":{"minor":[{"spellID":58057},{"spellID":58059},{"spellID":62132}],"prime":[{"spellID":55447},{"spellID":55454},{"spellID":101052}],"major":[{"spellID":55448},{"spellID":55456},{"spellID":55449}]},"class":"shaman","unit":"player","race":"Draenei","name":"Elesheymin","gear":{"items":[{"id":59458,"gems":[68780,59479,59480],"enchant":4207},{"id":62434,"gems":[],"reforging":145},{"id":63452,"gems":[52207],"enchant":4200},{"id":56434,"gems":[],"enchant":4115},{"id":56563,"gems":[52207],"reforging":147,"enchant":4063},{"id":56313,"gems":[],"reforging":145,"enchant":2332},{"id":58130,"gems":[52208],"reforging":145,"enchant":4068},{"id":62445,"gems":[52207,52207]},{"id":60316,"gems":[52207,52207],"enchant":4114},{"id":62363,"gems":[52208],"reforging":117,"enchant":4069},{"id":56307,"gems":[]},{"id":56391,"gems":[]},{"id":62047,"gems":[],"reforging":162},{"id":56339,"gems":[],"reforging":162},{"id":57872,"gems":[],"enchant":3834},{"id":55070,"gems":[52207],"enchant":4091},{"id":56350,"gems":[52207],"reforging":145}]},"professions":[{"name":"Engineering","level":525},{"name":"Tailoring","level":525}],"level":85,"spec":"elemental","realm":"Atiesh"}
Expected behavior
For the stats to show the same as in the game to make the best sim outcome and to generate the appropriate stat weights.
Sim Links and Screenshots
If applicable, add links to your sim settings or screenshots to help explain your problem.
Desktop (please complete the following information):
Windows 11, Edge 125.0.2535.67

I think I found the problem.  On my boots I reforged Crit > Haste, but the website shows I reforged Spirit > Haste.  That's where my 67 spirit went.

Duplicate of #530
We are aware of the bug and are working on a fix for the exporter


FIX #4573 : added custom fusion chart config to override default message

Description
When the User drag and drop the Chart widget->and select the custom chart from chart type->the "chart type not supported text" is displayed. Added a default config to resolve it.
Fixes #4573
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

tested locally.

Checklist:

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

Test coverage results :test_tube:
:white_circle: Total coverage has not changed
No changes to code coverage between the base branch and the head branch

Does not work on the old app charts!
@riodeuno does this change work according to you? We are now showing an example config preloaded in the custom chart data field.

Rerunning jobs, Failing for some reason


Fixed issue #303

PR Checklist
Please review the guidelines for contributing to this repository.

[x] I am requesting to pull a topic/feature/bugfix branch (right side). In other words, not master.
[x] I have run grunt against my changes and both linting and tests pass.
[x] I have added tests to prove my fix is affective or my feature works. This can be done in the form of unit tests in test/bdd/test.js or a new demo on demo/index.html.
[x] I have added or edited necessary documentation in the README.md (if appropriate).

Description
Fix for #303 : double touch events.
Fixes: #303

Thanks for solving it, we noticed the issue on android phones while implementing this. Using your fix everything seems to work fine 👍


Support the new github checks interface

It looks like the checks feature is a perfect match for this kind of automated code review. Would probably be a fair bit of work though. :)

Thanks for putting it in my notice! I'll keep this blog here for future reference
https://blog.github.com/2018-05-07-introducing-checks-api/

I am planning to work on it. I have requested existing users for the Checks API event subscription and permission.


Admin controls

Updated "View" page so that Admin can now change status and decision of an application, which should reflect on the user's secret URL. Also changed the way the applications are formatted (rough draft before final design decision is made)

Also did some minor updates to the wording on the landing pages created by Max

TODO:

Design admin portal page (@Huan-Deng and @chrisjobando)
Make a single update application function (@Josh-McFarlin)
Make an application component to render in Applications List (@vinceli1004)

Loosely-related TODO:

Form validation (@vinceli1004)
Make sure it sends an email anytime there is a status/decision change (@karpawich)


Intellij Compatibility - Build #IU-222.2964.55 (2022.2)

Hello,
First off.. great Tool :). Is there a chance of releasing a version compatible with 2022.2 ? I am currently running Build #IU-222.2964.55 and being able to use the GIdea-Browser would make life a little easier.
Thanks and best regards.
Les

With a small adjustment, I managed to get it to install however bookmarks are not stored after restarting IntelliJ as an fyi. I would guess with the proper change implementation that bookmarks will be fine.

@Les-Linux Done I am closing.
About the bookmarks if you want to contribute will be great 🙏
If not all good! I think I will find the time on one of the next releases...
Thanks


add configuration option to use different .env file

Fixed in https://github.com/microsoft/genaiscript/pull/856


unsafe usage of scoped_tls triggers panics

Describe the bug
Swc randomly panics when bundling a project using spack. It seems that the usage is unsafe.
Caused by:
  --- stderr
  thread '<unnamed>' panicked at 'cannot access a scoped thread local variable without calling `set` first', /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:168:9
  stack backtrace:
     0:     0x7fcaaf260af0 - <unknown>
     1:     0x7fcaaf2891ae - <unknown>
     2:     0x7fcaaf25c135 - <unknown>
     3:     0x7fcaaf262483 - <unknown>
     4:     0x7fcaaf26216f - <unknown>
     5:     0x7fcaaf262b29 - <unknown>
     6:     0x7fcaaeea41ba - <unknown>
     7:     0x7fcaaeea418c - <unknown>
     8:     0x7fcaad65858a - <unknown>
     9:     0x7fcaaee8d399 - <unknown>
    10:     0x7fcaaeeb9288 - <unknown>
    11:     0x7fcaaeeb80c3 - <unknown>
    12:     0x7fcaad8f30dc - <unknown>
    13:     0x7fcaad6c470e - <unknown>
    14:     0x7fcaad939287 - <unknown>
    15:     0x7fcaad6be611 - <unknown>
    16:     0x7fcaad8ea39f - <unknown>
    17:          0x1542ec4 - worker
                                 at /home/iojs/build/ws/out/../deps/uv/src/threadpool.c:122:5
    18:     0x7fcac1c47b43 - <unknown>
    19:     0x7fcac1cd9a00 - <unknown>
    20:                0x0 - <unknown>
  node:internal/process/promises:279
              triggerUncaughtException(err, true /* fromPromise */);

Input code
Irrelevant

Config
.swcrc

{
  "env": {
    "targets": {
      "node": "16"
    }
  },
  "minify": true,
  "jsc": {
    "parser": {
      "syntax": "typescript",
      "tsx": false
    },
    "minify": {
      "compress": true
    }
  }
}

spack.config.js
const { config } = require("@swc/core/spack")

module.exports = config({
  entry: {
    web: `${__dirname}/src/main.ts`,
  },
  output: {
    path: `${__dirname}/build/`,
    name: "main.js",
  },
  mode: "production",
})

Playground link
No response
Expected behavior
Do not panic.
Actual behavior
Panics
Version
^0.1.57
Additional context
It was really hard to debug this problem since it only happens inside GitHub Actions, and I had to extract the log from there.
The upstream issue that I closed
https://github.com/alexcrichton/scoped-tls/issues/16

No it's not related to unsafe and this is a duplicate


Outputformatter does not return appropiate header type

Does not use accept-content

It's not a bug.
Cannot use accept-content, must use accept (need source for this information)


Cron Jitter support

Is your feature request related to a problem? Please describe.
wondering if there is a plan to support jittering for cron schedule.
Describe the solution you'd like
not sure about the real implementation. just see it in cadence sdk, looks reasonable to avoid all workflow start at the same time.
Describe alternatives you've considered
currently i handle the jittering on my application level. :)
Additional context
nope

Existing cron functionality will not evolve, the internal implementation and the whole experience are quite finicky. We are working on a brand new fully revisited flexible scheduling API and implementation.


Can't compile on heroku because of mcrypt

Hey guys, i know this snippet is mcrypt .13 but its the same with .7, im just wondering if there is anyway to use a precompiled, or another version?
Hi guys, trying to compile on heroku, seem to keep getting this?
any ideas?
thanks!
-----> Building Meteor App Bundle
npm-container: updating npm dependencies -- jscryptor, mcrypt...
npm WARN package.json<EMAIL_ADDRESS>No
description
npm WARN package.json<EMAIL_ADDRESS>No
repository field.
npm WARN package.json<EMAIL_ADDRESS>No README
data
In file included from ../src/mcrypt.cc:3:0:
../src/mcrypt.h:10:20: fatal error: mcrypt.h: No such file or directory
#include
^
compilation terminated.
make: *** [Release/obj.target/mcrypt/src/mcrypt.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit

Hi @thinkv, looks like the problem is the dependencies in the SO, in Ubuntu you need:
sudo apt-get install libmcrypt4 libmcrypt-dev

but how can I do this on Heroku?

I didn't work on Heroku before, but searching in Google I can see this:
heroku run bash

after that you are in the shell of the heroku system, try to run the previous command after it.

So i found a build package that installs from apt (only way), however heroku-buildpack-apt installs things in a newly created folder /app/.apt/ . How can I make this compile if that's where it's being installed?
Someone had the same problem with python, and they had to set PYTHONPATH=/app/.apt/usr/lib/python2.7/dist-packages/
Thanks mate!

I think is a good idea to give a try to this: http://stackoverflow.com/questions/558803/how-to-add-a-default-include-path-for-gcc-in-linux

@thinkv Latest mcrypt working version is 0.0.7, otherwise you get TypeError: Invalid iv size. You can determine iv size using getIvSize() while encrypting. This is already reported on issue #5, if you want to work with the latest mcrypt version, feel free to fix this and share :smile:

Hey @chesstrian I know this :) problem is, i can't get any version of mcrypt to compile on there. I had a look at that link but I have no idea what i am doing, how can I actually find the path the libs are located in?

so i managed to compile the mcrypt binaries in a directory on the system, but i do not know how to make the mcrypt use them when compiling, any ideas?

This library is useless without mcrypt.


Update README.md

I think it's too dangerous to do this without adding "#SWAG" to the commit message. I'm closing this.


From 10ms batches to 12s batches with Go client

I am testing out the Go sample code here: https://github.com/tigerbeetledb/tigerbeetle-go/pull/17/files.
Both inside Docker and outside I get the same behavior:
info(message_bus): connected to replica 0
Started batch            0               2022-10-26 21:44:06.340125972 +0000 UTC m=+15.662152284
Done batch               0               2022-10-26 21:44:08.453414819 +0000 UTC m=+17.775441135                 2.113288975s
Started batch            8191            2022-10-26 21:44:08.456587344 +0000 UTC m=+17.778613656
Done batch               8191            2022-10-26 21:44:10.539311391 +0000 UTC m=+19.861337710                 2.082724166s
Started batch            16382           2022-10-26 21:44:10.542538624 +0000 UTC m=+19.864564942
Done batch               16382           2022-10-26 21:44:12.645896921 +0000 UTC m=+21.967923240                 2.10335843s
Started batch            24573           2022-10-26 21:44:12.649172381 +0000 UTC m=+21.971198694
Done batch               24573           2022-10-26 21:44:14.762033368 +0000 UTC m=+24.084059683                 2.112861058s
Started batch            32764           2022-10-26 21:44:14.765275593 +0000 UTC m=+24.087301906
Done batch               32764           2022-10-26 21:44:16.856221753 +0000 UTC m=+26.178248067                 2.090946233s
Started batch            40955           2022-10-26 21:44:16.859746031 +0000 UTC m=+26.181772343
Done batch               40955           2022-10-26 21:44:30.909707893 +0000 UTC m=+40.231734212                 14.049961935s
Started batch            49146           2022-10-26 21:44:30.912962798 +0000 UTC m=+40.234989121

Where batches start out performing reasonably and then get an orders of magnitude slower after around 40,000 transfers. These ones show up as 2s and 14s but that's because TigerBeetle debug mode is on. Without them they are more like 10ms and then jump to 10s per batch.
Here's how I run the server (commit 3fb0b76199efbbb7acc7b14c8532ab7bbb738100):
rm -rf 0_0.tigerbeetle && ~/tb/tigerbeetle/tigerbeetle format --cluster=0 --replica=0 0_0.tigerbeetle && ~/tb/tigerbeetle/tigerbeetle start --addresses=3000 0_0.tigerbeetle > log 2>&1

The log is attached.
slow_tb_log.txt

The slow op encountered is create_transfers.

The step that is taking too long is the commit's prefetch.
(The value cache isn't helping because we are checking for ids that exist — we have to read from the levels.)

The reads are all hitting the grid cache, so it isn't IO.
The groove's prefetch concurrency is determined by Grid.read_iops_max.
Grid.read_iops_max is currently 15.
Because we (correctly!) defer grid cache lookups to the next tick (rather than handling them synchronously) we can only perform 15 lookups per tick.
config.tick_ms is 10, so we tick 100 times per second.
That comes out to 8191 / (100 * 15) = 5.46 seconds. Multiply by 2 because we need an index block and a filter block each time.

To fix this, Grid.tick() should return a bool: "whether any work was accomplished by this tick call".
Then in Replica.tick() we keep calling Grid.tick() until it stops returning true. That way we can "synchronously" handle as many cache hits as possible within a single IO tick — without risking the stack overflowing by actually handling them synchronously.

I am not entirely sure whether this is fixed or not, but, if it is not, we should come up with a fresh benchmark here anyway.


Integration of C++ Algorithms (SVFit and FastMtt) into ColumnFlow

Dear ColumnFlow experts,
Following your recent clarification on the framework, we have now reached the stage where we aim to incorporate more complex methods into our analysis. Specifically, we are interested in implementing SVFit and FastMtt, algorithms used to reconstruct the ditau mass using kinematic information from tau lepton decays and MET. This algorithm was previously implemented in C++ with ROOT usage in our last analysis (IPHCProductionTools ClassicSVfit). Our goal now is to integrate it into ColumnFlow. There are two potential approaches: rewriting it entirely in Python with Awkward Array format to adapt it to the formalism of ColumnFlow, or using a wrapper to interface with the existing C++ classes developed for traditional event loop based method. We have several questions regarding this process:

What would you recommend as the better approach: using a wrapper or rewriting the method in ColumnFlow? It's worth noting that the SVFit() function takes only measured Taus, measuredMETx, measuredMETy, and covMET variables as input and does not operate on arrays.
If a wrapper is the preferred choice (for this case or another), which one do you recommend for ColumnFlow?
If we decide to implement SVfit (or any other general method creating variables and associated columns), where would you suggest including it in the ColumnFlow structure? We are considering creating a utils/ folder in the analysis/ directory or in the production/ folder. Are there any best practices you recommend for this situation?

Thank you for your guidance.
Océane
@gsaha009 @cardinia

Hi Océane,
thanks for opening this discussion! I think this is very important to have as it will apply to many other algorithms for which a C(++) implementation already exists.
We haven't run into this case ourselves so far (in fact, we replaced SVFit in our analysis with a regression NN), but as you already mentioned there are two paths that one could follow and the following is just my personal view on the topic:

If possible, I would rewrite the algorithm with scipy / numpy / awkward arrays (or even TensorFlow *). This also depends on whether the algorithm itself has other dependencies besides ROOT, but after a quick glimpse at the code you linked, this does not seem to be the case. However, I believe SVFit requires doing an actual fit / minimization which is not easy to model, but I know from other groups that it is definitely possible, even over multiple events at a time. For the latter, I know a group that did this with TensorFlow in the past (for the example for a single neutrino pt_Z reconstruction using a W mass constraint). I will ask them if they can share their code.

If you succeed with porting SVFit, this should perhaps live in a dedicated repository, so that other groups that use different frameworks could also profit from it. A dedicated lightweight producer that simply invokes your algorithm could live in your analysis, or pushed upstream to cf if it's general enough.

If it's not possible to port it, there is indeed the option to use a library such as pybind11 (which is anyway available in most envs / sandboxes) to wrap it and call it within python. And it also seems like it should be able to vectorize the wrapped function call (I'm not entirely sure though if this method simply provides function signature that allows array inputs, or if it actually "vectorizes" through parallel invocation, but I would suspect the former).

Sounds reasonable. I guess I would have also started with the pybind11 approach.
On the integration of the software, unlike the SVFit code base, pybind11 should be provided through a sandbox. For that, have a look at how we do this in our analysis: https://github.com/uhh-cms/hh2bbtautau/tree/master/sandboxes
In your <ANALYSIS_DIR>/sandboxes directory, you only have to create a txt and a sh file that define the sandbox, with the txt file listing all packages you need (with pybind11 being one of them).
You will likely create a producer to invoke wrapped SVFit algorithm, and this producer then just needs to declare that it needs your newly created sandbox to run. Here is an example for that: https://github.com/uhh-cms/hh2bbtautau/blob/master/hbt/production/hhbtag.py#L31
Hope this helps :)

Thank you for the response. I also needed to create a ROOT object, so I followed the instructions to include ROOT:
I added root~=6.00 to the file sandboxes/root_sand.txt.
I created a new .sh file sandboxes/env_test.sh which specifies the above-mentioned text file.
I added the line sandbox=dev_sandbox("bash::$HCP_BASE/sandboxes/env_test.sh") in my producer script.
Then, I attempted to import ROOT with root = maybe_import("root").
However, it seems that it's not working. The ROOT module is mocked, and I suspect that ROOT is not found. I'm unsure if this is a sandbox issue or another problem. Bring to import pybind11 with the same procedure, I had a similar issue.
I also attempted to use root = ROOT_import() without success.
Additionally, I have a question regarding the compilation of the SVFit (C++) code. I'm wondering if I need to run CMake in my SVFit folder or if this is also something that I should link to the columnflow environment in some way.
Thank you

Hi @oponcet ,
to get ROOT to work properly in a sandbox, I would recommend using a CMSSW-based sandbox as it is not so straight forward to compile ROOT from scratch based on a python version of a virtual env. You can find an example of a CMSSW sandbox (with the option to install custom python packages on top) here: https://github.com/columnflow/columnflow/blob/master/sandboxes/cmssw_columnar.sh
This would also solve the problem of compiling SVFit which can be done in the same step. I know a couple instances where SVFit is compiled in a default CMSSW env, and you can do the same here (and I'm sure you already have experience with that :) ).
For the use within python / cf, I can only refer you to the pybind11 documentation, as there is no mechanism (needed) in cf link anything. Our intention was to fully rely on tools like pybind11 to interface to C++ dependencies.
Hope this helps!

Hi @riga ,
Thank you for your response. Your solution for importing CMSSW with the necessary package is indeed what we need. However, I am encountering several issues and I try several things.

I attempted to utilize sandbox=dev_sandbox("bash::$HCP_BASE/sandboxes/venv_columnar_tf.sh") in my producer and import tensorflow as in your example. However, when printing tf, I received a mock module. When executing law run cf.SelectEvents, which calls the producer, I am unsure if I should receive the message entering sandbox: venv_columnar_tf.sh, but this message does not appear. It seems like the sandbox is not being used. Did I overlook something? I tried CF_REINSTALL_SOFTWARE=1 source setup.sh, but it did not resolve the issue.

Regarding the CMSSW environment, should I utilize the sandbox in the same manner? Should I use sandbox=dev_sandbox("bash::$HCP_BASE/sandboxes/venv_cmssw_sand.sh"), or is there another approach?

To avoid dealing with that, I attempted to change the default sandbox to default_columnar_sandbox: bash::$CF_BASE/sandboxes/venv_cmssw_sand.sh in law.cfg, but encountered the following error message: /analysis/data/software/cmssw/venv_cmssw_sand_9f1ee8f3/CMSSW_12_6_2/venvs/columnar/bin/activate: No such file or directory. It appears I am missing an installation step here. Could you please clarify how to properly use CMSSW environment ?

Thank you very much.

Hi @oponcet , just a quick comment from the side lines: As of last Friday, we updated various sections of the official docs (available for the latest version, stable to follow soon), which now also contains a dedicated section for sandboxes. This might help you to figure this out.
If you want to check if a given sandbox is installed properly, you could try the following command (e.g. if you want to check your venv venv_columnar_tf in the dev version)
cf_sandbox venv_columnar_tf_dev

This should give a bash terminal in this sandbox, in which you should also have e.g. tensorflow. This might help you debug a little more.
Finally: To reproduce your problem, it might be helpful if you could share your software version with us (e.g. commit hash of cf).
Cheers,
Philip

Hi @pkausw,
Thank you for your response. I've gone through the documentation, and it's really helpful! I appreciate your effort in pushing it forward.
I've been trying to follow the procedure outlined in the README, but it seems like it's not working out of the box as I expected. I believe I might be missing a step in the installation of the development sandbox. Let me walk you through my process, and perhaps you can identify what I'm missing.

For each new session, I execute:
source setup.sh enveos

My default sandbox is defined here: link to the sandbox configuration, and it is indeed the one being used when I run the code.

To build my development environment, I've created:

a .sh file in /hcp/sandbox: link to the shell script which refers to
a .txt file in /hcp/sandbox: link to the text file

I specify the sandbox in one of my selectors: link to the selector

In the same file, I import TensorFlow using maybe_import(): link to the import statement. I also print tf.

Then, I run law run cf.SelectEvents --version v1 --branch 1, but:

I don't see the message entering sandbox: venv_columnar_tf; it's still running on my default sandbox.
The output of the print(tf) shows a mock module, indicating that the development environment is not being used.

I suspect I'm missing a step where the new environment should be installed. However, based on my understanding of the code and the README, it should happen because of step 4.
I did try cf_sandbox venv_columnar_tf_dev, and it installed the sandbox without any issue. I guess this is only for debuting and I should not add this line to the code.
I hope this clarifies my issue. Thank you very much for your patience!

Hi @oponcet ,
thanks for the links and your walk-through. I went through it and didn't find any obvious mistake in your configuration. In my opinion, this is also shown by the cf_sandbox test that you did - btw, this is a tool meant for debugging and should not be used in code since it returns an interactive shell to you.
I also saw that you use the latest version of cf, so it shouldn't be some legacy issue. Just to make sure: Are you sure that also the other submodules in your local setup are up to date? Git doesn't do so automatically, but you can make sure that everything is in the correct version by running git submodule update --recursive in your analysis repository.
If this doesn't help, I'll try to set up your analysis and try to reproduce this behavior locally. Sorry for the problems you have to experience!

Hi @pkausw,
Thanks for the quick answer. I run git submodule update --recursiveand it's seems up to date. Here are the versions that I'm using:
git submodule status --recursive
 d364181b08a61eecc27898226ab5d7aaeb6dd81a modules/cmsdb (heads/master)
 de11ccfe104a2e6b233153a568d8e4c1bf7b38be modules/columnflow (v0.2.2-403-gde11ccf)
 3f8b5c8954bfb1db7ba1c3bcf0265bc0f12eaa04 modules/columnflow/modules/law (v0.1.17-12-g3f8b5c8)
 12eedf2d5d72afc85c780e638275e81036df4efe modules/columnflow/modules/order (v0.1.10-197-g12eedf2)
 8b03ffa7c06cd9c8a38297b1c8923695d1ff1b07 modules/extern/pybind11 (v2.11.1-62-g8b03ffa7)

Hi again,
Since I couldn't manage to run with the dev sandbox, I'm trying to use the CMSSW sandbox as the default sandbox in law.cfg.
The sandbox is installing CMSSW_12_6_2, but I encountered the following error message:
Exception: trying to access 'gfal2.creat_context', but gfal2 is not installed
It seems that I'm missing this package but I don't know exactly how to fix this. So I have the following questions:

Is this possible to set the sandboxes/venv_cmssw_sand.sh as the default sandbox?

Do you have a similar file that include the same environment as 'sandboxes/venv_columnar.sh' plus the CMSSW environment?  Or how can I had the list of package needed for columnflow?

If I need to add ROOT or SVFit package, where should I configure this in the file?

Thanks for helping me with these basic questions.

Hi @oponcet ,
I finally had chance to look at this a little closer, sorry for the delay. I think the communication regarding sandboxes this far has been a little misleading.
The sandbox that is used/required by a given task (e.g. SelectEvents) is provided by the TaskArrayFunction instance that is executed at command line level. In you setup, this would mean that the sandbox for the SelectEvents task is defined by the Selector main, which in turn uses the venv_columnar.sh. So even though your lepton Selector defines its own sandbox, this information is not used since it's not the TaskArrayFunction instance that is actually called within the SelectEvents task. This has multiple reasons, mainly to facilitate a modular treatment of the sandboxes for e.g. remote jobs. Consequently, the top-level TaskArrayFunction instance (in your case your main Selector) needs to define a software environment that provides all packages that are required by the modules that are called during the call of this instance.
Regarding the follow up questions you've had:

In order to use a dev environment, you also need to create a corresponding .sh script. You can use the example.sh and example_dev.sh scripts that are located in your sandbox directory (from the example analysis).
In principle, the sandbox files for bash are "just" shell scripts. So whenever you need to do specific steps or load packages, you can write out exactly what needs to be done (note that you should perform some check whether the packages you'd like to load are already available, otherwise you potentionally do redundant steps). So in reference to a question you've had before, you could e.g. call the make command for SVFit directly within your shell script (if that is necessary).

Regarding the cmssw sand box issue: It's possible that CMSSW overwrite the default gfal version to be used. I've seen the issue you mention above on lxplus < 9 - is it possible that you have a similar problem?

Hi,
Thank you for your response!
Regarding the CMSSW sandbox, I'm currently running it on lxplus8. I attempted to reinstall the environment on lxplus9 using CF_REINSTALL_SOFTWARE=1 source setup.sh enveos, and then proceeded to run the sandboxes/venv_cmssw_sand.sh as the default sandbox. However, I encountered the following error message: output.log

Hi again,
I solved one issue with the CMSSW sandbox. CMSSW 12 was not compatible with lxplus9. Switching to CMSSW 13 solved this problem. However, I still encounter the
error message: Exception: trying to access 'gfal2.creat_context', but gfal2 is not installed.

I noticed that one of the files in law mentions this problem; maybe it can help. It seems that the gfal and CMSSW incompatibility is already a known issue. If the problem persists, perhaps I could raise an issue on CMS Talk.

Yes I can run on the default columnflow sandbox after installing CMSSW sandbox. But the problem is that if I want to use ROOT with my selector for instance, @riga advice me to run with CMSSW sandbox. Or maybe I didn't get your question?

I think that heavily depends. I'm not an expert in what law provides you with exactly, but depending on what exactly you need from root, you might

want to use python alternatives like uproot or something similar
You can use code snippets like this

foo = law.contrib.load("root")
ROOT = foo.import_ROOT()

Though I guess your requirement for ROOT originally comes from SVFit rather than anything else right? Sorry, I'm also not overly familiar with using anything ROOT-based within a law setup. I just thought that if you can install ROOT directly via pip, you might get around having to use the cmssw sandbox in the first place.

Yes, that's what I'm thinking as well. And it seems that SVFit can be used without CMSSW as well. So we can avoid this problem. If you could provide an example of the dev_dandbox.sh file that I can use to install ROOT, it would be nice because I couldn't manage when I tried...

Hi @oponcet ,
Please find examples for the files you'll need to write below. Some thoughts from my side:

note that in principle, you don't have to use a dev sandbox. It's just meant to provide you with additional debugging tools you won't need for a large-scale processing of your data
You will probably need to try out how to properly intergrate root into your python environment. The suggestion here is based on this thread, but if that doesn't work you might want to try the import via law I mentioned in a post further above (or something else entirely)
also, note that we are currently working on the procedure for the software setup, so while this answer should work right now, it might change a little in the future.

Let me know how it goes!
Cheers,
Philip
First, write a requirement file that can be parsed by pip. In this example, I directly included pybind11 - I had a brief look at their docs, and don't think you actually need to add it as a submodule to your repo. Nevertheless, I'm not an expert, so if you do need it as a submodule, just remove that line. Note that the first line in this file must be a version tag.
${HCP_BASE}/sandboxes/requirements_svfit.txt
# version 1
pybind11  # would be better to actually pin this to a version
pyroot      # same here

Now you can create a shell script for each environment you want to create. In your case, you want to create to environments:

one for production, i.e. without additional debugging tools
one for local development, which also includes debugging tools

${HCP_BASE}/sandboxes/venv_svfit_integration.sh
#!/usr/bin/env bash

# Script that sets up a virtual env in $CF_VENV_BASE.
# For more info on functionality and parameters, see the generic setup script _setup_venv.sh.

action() {
    local shell_is_zsh="$( [ -z "${ZSH_VERSION}" ] && echo "false" || echo "true" )"
    local this_file="$( ${shell_is_zsh} && echo "${(%):-%x}" || echo "${BASH_SOURCE[0]}" )"
    local this_dir="$( cd "$( dirname "${this_file}" )" && pwd )"

    # set variables and source the generic venv setup
    export CF_SANDBOX_FILE="${CF_SANDBOX_FILE:-${this_file}}"
    export CF_VENV_NAME="$( basename "${this_file%.sh}" )"
    # put our new requirements here
    export CF_VENV_REQUIREMENTS="${HCP_BASE}/requirements_svfit.txt"

    source "${CF_BASE}/_setup_venv.sh" "$@"
}
action "$@"

For the dev version, you simply add more requirements, e.g. the ones that we use throughout columnflow
${HCP_BASE}/sandboxes/venv_svfit_integration_dev.sh
#!/usr/bin/env bash

# Script that sets up a virtual env in $CF_VENV_BASE.
# For more info on functionality and parameters, see the generic setup script _setup_venv.sh.

action() {
    local shell_is_zsh="$( [ -z "${ZSH_VERSION}" ] && echo "false" || echo "true" )"
    local this_file="$( ${shell_is_zsh} && echo "${(%):-%x}" || echo "${BASH_SOURCE[0]}" )"
    local this_dir="$( cd "$( dirname "${this_file}" )" && pwd )"

    # set variables and source the generic venv setup
    export CF_SANDBOX_FILE="${CF_SANDBOX_FILE:-${this_file}}"
    export CF_VENV_NAME="$( basename "${this_file%.sh}" )"
    # put our new requirements here, this time also with the dev requirements
    export CF_VENV_REQUIREMENTS="${HCP_BASE}/requirements_svfit.txt,${CF_BASE}/dev.txt"

    source "${CF_BASE}/_setup_venv.sh" "$@"
}
action "$@"

Hi,
Thank you for your response. I may have misunderstood, but to my knowledge, PyROOT cannot be installed via pip. I've only seen instructions for installing it with conda, and it's why I'm struggling with it and why I cannot use requirement.txt file.
Cheers,
Océane

Ah, OK! In principle you should have access to your micromamba setup though, right? We don't manage the venvs with micromamba, so the structure is

the micromamba base as, well, the base
the difference python venvs, which all have the micromamba base as part of their path.

So in principle, after you have sourced your analysis-level setup.sh setup, you should be able to run a micromamba installation command. Of course, if you change your setup and would have to reinstall micromamba again, you'd have to do it again. At the moment the micromamba packages are hidden deeply within the setup.sh file in columnflow, but this might change in the future.
So long story short, if you install something in micromamba, all your venvs (both existing and new) should have access to it I think. Doing this in a more automated way would be nice, but right now installing additional micromamba packages once should be a solution to this problem.

Hi @oponcet ,
are there any updates on this issue? Were you able to resolve it?
If yes, we would appreciate it if you could close this issue :)

Hi @pkausw, @riga
I've successfully resolved all my issues and implemented SVFit with the pybind11 wrapper. Here's a summary of what I tried, what didn't work, and how I resolved it:

Regarding the problem with importing ROOT, I attempted to add it to the micromamba installation here, but encountered issues with Python 3.6 compatibility with ROOT and missing dependencies, particularly libcppyy_backend3_9.so, which I found to be a known issue here.

To bypass this issue, I opted to use a local version of ROOT (in my case, it was already installed in lxplus). Before each session and configuring my ColumnFlow setup, I imported the necessary libraries and sourced ROOT with:
LD_LIBRARY_PATH=/usr/local/lib
CPPYY_BACKEND_LIBRARY=/cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.30.04/x86_64-centosstream9-gcc113-opt/lib/libcppyy_backend3_9.so
source /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.30.04/x86_64-centosstream9-gcc113-opt/bin/thisroot.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.30.04/x86_64-centosstream9-gcc113-opt/lib/

Then, it was possible to import ROOT like: root = maybe_import("ROOT")

For pybind11, I simply had to import the correct module produced by the pybind11 wrapper. At the beginning of my file, I imported my module as shown in my svfit.py. Similarly to ROOT, I ensured that I imported the correct library in $LD_LIBRARY_PATH.

Another issue, not related to ColumnFlow but worth mentioning since it's related to the wrapper, was that ROOT is wrapped in Python with cppyy. I encountered some trouble using Python ROOT objects as arguments for wrapped C++ functions that required C++ ROOT objects. I had to adapt my wrapper to handle this situation. Hence, it might be easier to use the cppyy wrapper in these kinds of situations instead of pybind11.
You can find the SVFit code in ColumnFlow here and the wrapper here.

Now everything is running smoothly, and in the end, I'm not using a custom sandbox or cmssw.
Thanks again for all the answers you provided, for your time and your help ! :)

Thanks for the final summary of your solution @oponcet , happy all is working for you now :)


Charm++ integrate and integrate2 examples

Original issue: https://charm.cs.illinois.edu/redmine/issues/568

Cleanup integrate integrate2 and integrate array examples, merge if needed

Original date: 2016-02-15 18:10:43

~~https://charm.cs.illinois.edu/gerrit/#/c/1051/~~ https://github.com/UIUC-PPL/charm/commit/53f75b46ac14b8291d87314fc8582d913312fbd3
integrate2 (now integratePUPable) is just the integrate example extended to also demonstrate a use of PUP::able that improves overall flexibility in a way that could be useful in a variety of solvers like this.
Revised defaults and makefiles so that all the integrate examples produce the same results.
Renamed integrate2 to integratePUPable as that is a more useful moniker.
Added README for integratePUPable.


Re-selects cell and calculates number of bars after rotation

Fixes #367
Rotation now forces re-selection of the cell and recalculation of the number of cells to show.
To Test:

Run iPhone 6s Plus or iPad simulator.
Rotate the days/weeks/months/years view and make sure the bars animate properly and select the current period.

Needs Review: @bummytime

@astralbodies I tested this pretty well and the chart is working great with rotation now. I have just a quick question: when in landscape, if you select a column that is on the far left hand side and then rotate the device to portrait, the selected column is hidden but it's data appears below the chart. Rotating it back to landscape shows the same column still selected. Is this by design? Just curious. :-)
^ If that answer is "yep." then :shipit:

@bummytime It's probably not the most ideal scenario to have data showing for a bar that can't be selected. I'll open another issue to review that UX and see what we can do to be the least jarring.
Thanks for the review!


Module not found: Can't resolve '@tiptap/pm/model'

Issue
Getting the following runtime error when trying to display the text editor:
../../.yarn/__virtual__/tiptap-markdown-virtual-6916e9661c/0/cache/tiptap-markdown-npm-0.8.2-404b65508f-339475c9c3.zip/node_modules/tiptap-markdown/dist/tiptap-markdown.esm.js:4:0
Module not found: Can't resolve '@tiptap/pm/model'

https://nextjs.org/docs/messages/module-not-found

Import trace for requested module:
../../.yarn/__virtual__/novel-virtual-f39a532f4d/0/cache/novel-npm-0.1.19-930d72ab54-1372dcaa2c.zip/node_modules/novel/dist/index.mjs
./src/components/editor/MyEditor.tsx
...

Background
My project has the following deps:
"novel": "^0.1.19",
"next": "^13.2.4",
"@tiptap/pm": "^2.1.8",

Things I've tried:

Installing @tiptap/pm manually, as you can see above.
Adding resolutions in my .yarnrc for:

"@tiptap/pm@*":
    dependencies:
      prosemirror-changeset: 2.2.1
      prosemirror-collab: 1.3.1
      prosemirror-commands: 1.5.2
      prosemirror-dropcursor: 1.8.1
      prosemirror-gapcursor: 1.3.2
      prosemirror-history: 1.3.2
      prosemirror-inputrules: 1.2.1
      prosemirror-keymap: 1.2.2
      prosemirror-markdown: 1.11.2
      prosemirror-menu: 1.2.2
      prosemirror-model: 1.19.3
      prosemirror-schema-basic: 1.2.2
      prosemirror-schema-list: 1.3.0
      prosemirror-state: 1.4.3
      prosemirror-tables: 1.3.4
      prosemirror-trailing-node: 2.0.7
      prosemirror-transform: 1.7.4
      prosemirror-view: 1.31.7

Simple stuff like rm -rf node_modules && yarn cache clean && yarn install

Thanks in advance.

Hey could you try the latest version. Also it has breaking changes.
0.2.0


How to Hide products from WP REST API while Live on Website

I am Using  Woocommerce 'Product Visibility' option to Hide woocommerce Products from Website, but while they're still visible in WP REST API Results which i am using to show Products on my Woocommerce ionic App.
Please help me with this

You’ll need to bring this up with the product visibility plugin, I’m afraid. It’s possible they expose some meta value you can use to filter but it’s out of the scope of this library.

Thank You @kadamwhite for your Response but, as i searched for Product Visibility Plugin I didn't found any that tricks WP REST API to hide.
Sir Any suggestions for Plugin..?

I cannot provide support for that plugin. I’m sorry but you have to contact the people who make the plugin.


TMOP with FD-based Gradient & Hessian

PR
Author
Editor
Reviewers
Assignment
Approval
Merge

https://github.com/mfem/mfem/pull/1232
@kmittal2
@tzanio
@vladotomov + @jakubcerveny
02/16/20
⌛due 03/08/20
⌛due 03/15/20

Can you provide some description about what are the new algorithms and capabilities in this branch? In particular is the finite approach applicable to any nonlinear operator, or is it TMOP-specific?

@kmittal2 - I just sent a pull request for native AD in MFEM. It is not the most efficient approach, however, it is exact compare to FD and should be faster the your FD implementation. Isn't is better to replace the FD with AD?

@kmittal2 - I just sent a pull request for native AD in MFEM. It is not the most efficient approach, however, it is exact compared to FD and should be faster than your FD implementation. Isn't it better to replace the FD with AD?

@bslazarov I am not familiar with AD and I will check out your PR. Nonetheless, if it works for TMOP and it is faster than FD-based implementation, we should replace it.

@tzanio there have been some changes recently, can we extend the review dates by a week?

@tzanio there have been some changes recently, can we extend the review dates by a week?

Done

Well done Ketan, FD and gslib interpolation are very important capabilities.

Merged in next for testing...

The sample run:
mesh-optimizer -m square01.mesh -o 2 -rs 2 -mid 7 -tid 5 -ni 200 -ls 2 -li 100 -bnd -qt 1 -qo 8 -no-vis

reports different initial and different final energies, compared to master. The final energy difference may be due to the changed --newton-rel-tolerance but why is the initial different?

The sample run:
mesh-optimizer -m square01.mesh -o 2 -rs 2 -mid 7 -tid 5 -ni 200 -ls 2 -li 100 -bnd -qt 1 -qo 8 -no-vis

reports different initial and different final energies, compared to master. The final energy difference may be due to the changed --newton-rel-tolerance but why is the initial different?

This difference is due to the change here.

The sample run:
mesh-optimizer -m square01.mesh -o 2 -rs 2 -mid 7 -tid 5 -ni 200 -ls 2 -li 100 -bnd -qt 1 -qo 8 -no-vis

reports different initial and different final energies, compared to master. The final energy difference may be due to the changed --newton-rel-tolerance but why is the initial different?

This difference is due to the change here.

I see. 👍

LGTM

Sounds good Veselin, I will take care of it in the next TMOP PR.
Ketan
On Wed, Mar 25, 2020 at 5:22 PM Veselin Dobrev<EMAIL_ADDRESS>wrote:

@v-dobrev commented on this pull request.
In miniapps/meshing/mesh-optimizer.cpp
https://github.com/mfem/mfem/pull/1232#discussion_r398206408:

+#ifdef MFEM_USE_GSLIB

    tc->SetAdaptivityEvaluator(new InterpolatorFP);

+#else

    tc->SetAdaptivityEvaluator(new AdvectorCG);

+#endif
It looks like this can be turned into a run-time option in the future.
That way one can test both options when building with gslib.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mfem/mfem/pull/1232#discussion_r398206408, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AC32PHZEKNPS5NB3SQZVPK3RJJ73RANCNFSM4KGK2VFQ
.

--
Thanks,
Ketan Mittal


Chore: Remove dev branch

This PR prepares for the removal of the dev branch as it serves no purpose. Changesets are already kept on a seperate branch until release and we're only fighting against it by having a seperate branch.
What this PR does:

Change baseBranch from "dev" to "main" in .changeset/config.json
Remove Merge main into dev after publish step from .github/workflows/release.yml
Remove "PR targets the dev branch (NEVER main branch)" from .github/pull_request_template.md

Thanks @AdrianGonz97
@Hugos68 let's coordinate on this tomorrow afternoon my time.


Peer to peer code reviews

https://github.com/cindykandie/capstone-1/blob/5dace73e92e5782ffdad61cef0853f1bc19365b0/index.html#L68
In order to code clearly and better, I think you can simply remove the class attribute or add the property for the class attribute.

Hey Cindy, great work! Hard to find issues, the only thing I would recommend to use reusable classes in your CSS to avoid repeating properties
https://github.com/cindykandie/capstone-1/pull/1#discussion_r1069021484


Bug with quick chapter change

If you switch between the previous and the next chapters quick enough, you can see an "undefined" label on the Next Chapter button. And if you continue this process, it will show an error like on the screen.
Tested on Martial World (LightNovelHeaven)

@rajarsheechatterjee  I think this should be solved with current dev version. I've tested on real devices (android 8 and 11)


Finally add kdevelop to the gitignore

Ruby's been telling me to do this for a while, maybe I should actually get around to doing it :)
Please check if the PR fulfills these requirements

[x] The commit message follows our guidelines
[x] Tests for the changes have been added (for bug fixes / features)
[x] Documentation has been added / updated (for bug fixes / features)

What kind of change does this PR introduce?

Is there an open issue that this resolves? If so, please link it here.
Nope.
What is the current behavior?
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1039 commits.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .kdev4/
        NovelRT.kdev4

nothing added to commit but untracked files present (use "git add" to track)

What is the new behavior (if this is a feature change)?
$ git status
On branch feature/kdevelop-gitignore
Your branch is up to date with 'origin/feature/kdevelop-gitignore'.

nothing to commit, working tree clean

Does this PR introduce a breaking change?
If you were expecting to commit editor files that you shouldn't be committing anyway, yes :stuck_out_tongue:
Other information:
N/A

In retrospect I should've told CI to skip.


Add Dropdown to Hide Environment Variables in Stacks UI for Enhanced Privacy

Is your feature request related to a problem? Please describe.
Yes, the issue is related to privacy concerns when displaying environment variables in the Stacks UI. When opening the stack page in a public place or sharing the screen, environment variables are visible, potentially exposing sensitive information.
Describe the solution you'd like
I would like to have a dropdown implemented in the Stacks UI to hide the environment variables by default. This dropdown should work similarly to the "Advanced configuration" section, allowing users to expand and collapse the environment variables section to control their visibility.
Describe alternatives you've considered
An alternative solution could be to provide a settings option that allows users to toggle the visibility of environment variables in the Stacks UI. However, a dropdown seems more user-friendly and convenient, as it would allow for quick access to the variables when needed.
Additional context
This feature would greatly improve the privacy of users when managing their stacks and would prevent accidental exposure of sensitive information when using Portainer in public spaces or during screen-sharing sessions.

please!


Adding ability to signMessage with Ledger adapter

For this patch to work, we would need a new Solana App released with supporting off-chain message signing. The code is done here: https://github.com/LedgerHQ/app-solana/pull/37 not yet been released.

@elbywan any possibility of getting the new Solana app released with the off-chain signing?Thank you.

Hey @martincik, sorry but I am not working in the Ledger firmware team and my work is not related to the nano apps at all.

@jordansexton Thanks for the review and feedback. I've applied all the input and reverted all the new derivative path codes. Feel free to let me know if there's anything else I can do to move it forward.

This looks good. I think we need to wait to merge until the Ledger app actually supports the full message preamble: https://edge.docs.solana.com/proposals/off-chain-message-signing#message-preamble
The current (1.3.1) release does support INS_SIGN_MESSAGE_OFFCHAIN and Phantom has done some testing, which (I'm told) works: https://github.com/phantom-labs/sandbox/pull/33/files#diff-ef62378fde56dd1b353bf1263bff96352f72df5be1d8c676855450bdf42cd61f
But the addition to the Ledger app was done before the spec was finalized, and some of the message headers have changed.

hey @jordansexton , are there any plans to merge this anytime soon?

so ledger is still working on this I assume?

This is still in development for the Ledger app. While the app was updated to include message signing support, it doesn't implement the final version of the Solana offline signing spec yet. Apps shouldn't start to use until it's implemented correctly (the message preamble has changed, so the input and signatures won't match). I'll merge this when it's released.

hey jordan was there any update on this?

Hey any update on this?

Hey, I know it was mentioned that the ledger app still needs updating before this can be merged. But it is my understanding that each of the apps on the ledger are not developed by ledger itself but by each of the blockchain providers? If that's the case, any chance you can find who is working there and see if that is even been worked on? This is a request that has been around since 2021... I wonder if there's pushback for some reason and just will never be done... Thanks!

Hm, is that release of the app not done yet? Their versioning is a bit of a weird to me but it seems like the pr in question has been merged and released? https://github.com/LedgerHQ/app-solana/pull/37
Unless I'm getting something wrong lol

Hm, is that release of the app not done yet? Their versioning is a bit of a weird to me but it seems like the pr in question has been merged and released? LedgerHQ/app-solana#37
Unless I'm getting something wrong lol

Looks like not everything is done yet. Check this previous answer by @jordaaash https://github.com/anza-xyz/wallet-adapter/pull/712#issuecomment-1476958314
It baffles my mind how this is still an issue after 3 years. I totally understand some people not even wanting this because it's not decentralizes to use web2 auth system with a web3 sign. Or because it's not good to have people using their ledgers all the time to sign auth messages. (i've heard both of those in the past). But the reality is that people still do it resorting to all sorts of workarounds which are even worse from a security stand point (disabling blind signing and signing random transactions that don't end up being sent on chain). That's an awful habit to put users into, and probably how they end up being drained. I hope the different teams needed to get this through can get together and try to push this forward "soonish" 🙏


Getting a response on the existence of a given connection

Hi, I'm currently looking at using Azure SignalR as a centralized way for different services in a system to talk to connected clients. 😄
My current setup
Using this structure leads to the  services pushing messages to the clients do not know about my web app that sets up the actual hub. This seems to be working very well using the onConnect and onDisconnect hooks in the web app while the services send messages through the managment sdk. The exception is that I would want a simpler way to know if the connection is disconnected. I don't trust the onDisconnected hook as I'm worried that it will over time fail to notify the services about disconnects, especially when scaling to several instances for the web app and the services. I would also prefer that the web app doesn't have to store what clients listen to. I only want to send(and listen) to the events on the services if there are a client that wants this info, there will be a lot of not interesting events and I want to avoid listening to these if I dont have to.
Feature requested
What I think would be beneficial would be one way to check if a connection is still alive through the managment sdk or the rest-api. I see that getting this kind of response on every send message call might not be beneficial, but a way to check if a connection is alive without having to create a "ping loop" or having to ask the web-app would be great.
I'm assuming that this issue will be classified as a feature-request as it seems that the managment-api does a fire and forget when sending messages to non existing clients, and the rest-api always returns 202 according to the swagger doc(and does not contain a specific client/connection endpoint).
If i have missed some functionality or my problem could be solved on my end, please let me know 😛
Thank you for the help! 😄

Could you help me to understand your scenario a little bit more? Do you currently have clients stored? How you "send(and listen) to the events on the services if there are a client that wants this info"? Why "check if a connection is still alive" can help? As the check and the decision are not atomic, there will always be some cases that when check the connection is alive however when do the real stuff the connection dies.

Thank you for the response, sorry about my late reply:

Do you currently have clients stored?

Yes, currently the application stores the connections in memory and also tells services that the clients want to listen to specific messages through message routing and parameters. The services also store this information about the connections. On disconnect this information will be updated both in the client and in the services

How you "send(and listen) to the events on the services if there are a client that wants this info"?

E.g a new object is created in a list service:Then the service will  send a message to all the clients that subscribes to this type of info.

Why "check if a connection is still alive" can help?

I have cases where I don't want the service to listen to anything if there are no clients that need this information. If the onDisconnect hook is not triggered for some reason the service will never stop listening to these events.
Currently my solution for this is a ping that the service needs to do, but this requires implementation in the client and it would be much easier if I could use the Managment sdk to get info about the connection status.
I see that checking if a connection is alive and getting an atomic answer would demand a lot of syncing, in my case there is no need for a very accurate response (as long as i never get "connection is not alive" when it is). The issue I'm trying to solve is to save resources over time by being able to clean up the connections that are disconnected.

it would be much easier if I could use the Managment sdk to get info about the connection status

Yes makes sense, we are adding the feature request to our plan. It might take one to two months to roll out the support as it includes Azure SignalR service side change and deployment as well as the management SDK updates.

It is now supported, with both GET and HEAD methods
https://github.com/Azure/azure-signalr/blob/04faa1e8c358910dcd5e7b9dfc192ce0e83bbaf3/docs/swagger/v1.json#L189-L270


.github/workflows: Fix dist path in release.yml

During the release process, the distribution files are currently built in the sdk/dist/ directory, however the PyPI action expects them in the top-level dist directory.
Therefore we adapt the build path in the workflow.

LGTM


Add Haziel Sánchez to contributors list

My first pull request :D

@HazielS, I'm quite elated about your PR. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a PR and learned that I merged it?

@Roshanjossey Hi! It was great knowing that the PR had been merged; even though I just added my name to a list, it's the feel that I began my journey in the open source community that really got me excited. I had been meaning to start contributing, and a friend suggested the tutorial. This is a great initiative, thanks!

I’d urge you to continue contributing to other open source projects.
We also have a slack team to help/mentor people trying to contribute to open source projects.
You can join the team by going to https://firstcontributions.herokuapp.com


feat(detector-aws): add DetectorSync implementation for EKS detector

Context
Another PR moving away from the deprecated Detector interface in favour to the DetectorSync interface. This time is for AWS EKS detector and it might help a bit in https://github.com/open-telemetry/opentelemetry-js/issues/3582
Not doing all detectors at once:

detectors are independent from each other
smaller PRs for faster reviews

Short description of the changes

add AwsEksDetectorSync class and instance
make AwsEksDetector reuse the new sync instance
update tests

Note: since this package is marked as stable (major version is 1) we are doing a non breaking change by adding the new class and mark the current as deprecated. The async detector changes behavior, it does not throw anymore, and it was discussed in last SIG meeting (2024-07-31). The outcome was we're okay with that.
A couple of PRs will follow:

one to suppress internal tracing.
one to add the sync detector to auto-instrumentations package.

closed in favour of #2376 following this suggestion


Initial attempt at some rules

Based on some conversations with other Maker/Hackspace organisers, we should probably come up with some rules!

@owenniblock - we probably need to flesh these out a bit more though! :)


add jacoco log coverage report

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 69.69%.  Consider uploading reports for the commit 4c448dd to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##               main      #29   +/-   ##
=========================================
  Coverage     69.69%   69.69%
  Complexity       54       54
=========================================
  Files            21       21
  Lines           198      198
  Branches          5        5
=========================================
  Hits            138      138
  Misses           57       57
  Partials          3        3

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


WITH keyword wrongly identified as "data modification" command in mySql read-only connections

dBeaver 6.0.5, mySql driver 8.0.11, read-only connection.
Query
with test as (select 1 from dual) select * from test;
not executed,
error returned is
SQL Error [S1009]: Connection is read-only. Queries leading to data modification are not allowed.
Obviously, this is not a query that changes anything in data... :-)

mySql version 5.7.26-0ubuntu<IP_ADDRESS>

Starting a new script and typing
select 1 from dual
Will trigger this before even trying to run the script.  Some of the background lookup processes seem to be flagged as queries leading to data modification.  This is a change which was implemented after 6.3.0.

Cannot reproduce it for now.
If issue is still actual for you - feel free to reopen the ticket


[Feature Request] Addition to Cron Job

Thanks to @samapraku for the Paystack Extension but it required adding a line to the cron job which will be overridden when there is an update.
Kindly help add this cron to the Service Cron.

@samapraku Please explain why it needed...
invoice_transaction_process_all() is so far I can see only used in a test script and not in any other payment provider before...

The existing payment gateways use account balance as intermediate step to handle invoices. It adds unnecessary overhead.
If you want to avoid the account balance step, and mark invoices as paid directly, this is the flow:
Receive webhook request (IPN)
⬇
Store the transaction with status 'received' and return 200 response to the webhook
⬇
Process received transactions via cron using invoice_transaction_process_all()

I think there should be a more generalized way for payment processors to run cronjobs, just as with the onBeforeAdminCronRun hook in modules.

The existing payment gateways use account balance as intermediate step to handle invoices. It adds unnecessary overhead.
If you want to avoid the account balance step, and mark invoices as paid directly, this is the flow:
Receive webhook request (IPN) ⬇ Store the transaction with status 'received' and return 200 response to the webhook ⬇ Process received transactions via cron using invoice_transaction_process_all()

Late reply here, but I am unconvinced this method of processing payments is actually a good idea.

The admin/invoice/transaction_process_all endpoint doesn't mark an invoice as paid. It finds all translations that are marked as received and then passes each one to the payment gateway's processTransaction. If you've received a payment that is 100% completed and should be then used to mark an invoice as paid, this method introduces an unneeded delay before the client will see their invoice marked as paid.
Logically (to me), received only makes sense as a middle-point status if we need FOSSBilling to periodically re-check the status of the transaction since that's exactly what the API endpoint does. For example: if the payment gateway notifies us of the transaction, but it hasn't yet been validated we probably don't want to mark the invoice as paid yet. In that case, it may make sense for the transaction to be marked as paid and to use cron to periodically re-check it's status upstream so we can then mark it as paid once the transaction is fully processed.
BoxBilling (and as such FOSSBilling) treats the client balance somewhat as a viewable transaction history for the client and if you eliminate that step, the client then doesn't seen the transactions. Additionally, if you've eliminated the client balance entirely in your payment gateway then it sounds like a client couldn't deposit funds into their account if they desired.
The overhead of processing a transaction & marking it as paid is very little. There needs to be a validation step which will depend on the given payment gateway, but typically the most it would be doing is making an external request and checking result. After that it's just a few read/writes to the DB and updating the status. It really doesn't seem like something that needs to be delayed till the next cron execution and typically it's preferable to avoid doing that unless needed as the client will expect the payment to go through instantly.