Update readme to reflect new model

Hi. Is there any way to connect a single 16mega flash since there's no A22? And what is EXT_CART?

@gorgyrip you definitely can. For this you will have to change the design slightly.
ROM0_1 and ROM_CSB2 are used by the V-Smile to switch between ROM banks on cartridges with more than one mask rom. If you wire ROM_CSB2 to A22 then the v-smile can "switch banks" and access the higher memory from the cartridge. ROM_CSB2 is wired to IOB1 on the CPU.
One thing to be aware of though, ROM0_1 and ROM_CSB2 can be both in the "off" position when a retail cartridge or your own software is accessing the internal BIOS rom. So you would want this 16MiB flash to have it's CE# pin tied to both ROM0_1 and ROM_CSB2.
You will probably also want to scope out how long it takes for ROM0_1 to go off and ROM_CSB2 to turn on when doing this bank switch to ensure the switching speed is acceptable on CE#. If it isn't you may need to design a RC filter or similar to filter out that switching error.

EXT_CART is used in the v-smile cartridge detection, there are two pins that drive this that are also switchable with the DIP switches.
SENSE is tied to circuit attached to the RESET pin on the CPU. When a cartridge is inserted (SENSE HIGH), the reset pin is toggled on briefly and the CPU resets so it can properly load the cartridge. Similarly the same circuit is activated when SENSE transitions back to floating (pulled down internally), the CPU is again reset.
It seems like this design was required because the power button does not in fact turn the v-smile off, it simply disables the screen and the CPU goes into some sort of lower power state. Unplugging from the wall, re-seating the batteries, or inserting a cartridge is the only way to reset the CPU.
EXT_CART is attached to the IOB0 pin on the CPU.  IOA, IOB and IOC are 3 bit general purpose GPIO controllable through registers (not sure which yet). What I do know though, is IOB0 being on when the CPU starts up causes the console to boot with ROM0_1 on. I.E. IOB0 determines if the console boots into BIOS or cartridge.
Both are toggled by DIP so that you can have the cartridge inserted and sniffing the bus as a breakout board while the console thinks that there is no cartridge inserted into the system. I have tested doing this to dump the bios on the handhelds by driving the address lines from the teensy and sampling the data lines. It does work as I can see string values and I managed to get one of my dumps booting in mame, but there was corrupted audio and graphics so it's obviously not perfect. There are less brutal ways to get that data that have yet to be explored but it makes for an interesting alternative approach.

Also thank you for the reminder to merge this branch in!

Thank you for the nice explanation!


The start at time in statistics is from 4 or 5 pm?

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
See the screenshot, my starting at time is always from 4 or 5 pm. Is this a bug? I find it is not intuitive to split a day or a month at this hour. Is there a way to change it to at least midnight?
Expected Behavior
No response
Steps To Reproduce
Go to Statistics tab
Relevant log output
n/a

Screenshots
No response
Additional data

Type of installation
Docker
Version
1.27.2

Try to set your timezone in docker-compose.yml for
teslamate, database, grafana:
     - TZ=${TM_TZ}
I have also for database and grafana (probably only grafana is necessary):
     - PGTZ=${TM_TZ}
And for grafana also (not sure, whether that makes a difference):
     - LOCALE=${LOCALE}

have also for database and grafana (probably only grafana is necessary):
- PGTZ=${TM_TZ}

This works. Thanks!
A few more questions tho.
The timezone seems to be at utc to make it split the day at the midnight of my ${TM_TZ}. Instead of selecting the timezone, it seems to be the relative timezone to my current one. For example, my TM_TZ is Los Angeles, it only splits a day at my midnight if the timezone is selected to utc.
Additionally, although changing the timezone in grafana also changes the day split time, it does not have any impact on the epoch time in date_to and date_from. As a result, although changing the timezone makes my day split at different time if I chose a non-utc timezone, clicking on the date itself leads me to the trip panel from the midnight to next midnight of los Angeles time.

have also for database and grafana (probably only grafana is necessary):

PGTZ=${TM_TZ}

This works. Thanks!
The timezone seems to be at utc to make it split the day at the midnight of my ${TM_TZ}. Instead of selecting the timezone, it seems to be the relative timezone to my current one. For example, my TM_TZ is Los Angeles, it only splits a day at my midnight if the timezone is selected to utc.

About which timezone are you talking? The setting in Grafana? I have set there my current timezone and TZ and PGTZ set as above. And the splits are at my midnight...

Additionally, although changing the timezone in grafana also changes the day split time, it does not have any impact on the epoch time in date_to and date_from. As a result, although changing the timezone makes my day split at different time if I chose a non-utc timezone, clicking on the date itself leads me to the trip panel from the midnight to next midnight of los Angeles time.

Right. What is wrong about that? it might be, that events around midnight are not counted correctly, hard to test on my side (only one houur difference to UTC). All times in the database are in UTC.


Separate out configgy stuff from data-y stuff in lists.json

Two separate files, so that lists.json can be generated without knowing desired config?

yeah I agree. I almost renamed the whole file in a branch once, but good point that the lists are dependent on the pipeline 👍🏽

I would also suggest to remove the config from the tiles file and add it to the new config file, with the result that standard geojson can always be loaded from anywhere.

Yeah that sounds good - we just need accessors for the id and name


Redirected host needs to be in ALLOWED_HOSTS

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 71.171%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
395

Relevant Lines:
555

💛  - Coveralls


Possible deadlock when receiving nack?

Hi! First let me say thank you for this fantastic project. It's been immensely helpful for me learning how Paxos works.
I'm also still far from an expert here, and I haven't actually tried reproducing this bug. It's purely theoretical and I might be wrong.
In receive_nack, the proposer waits until it receives a quorum of nacks before retrying with prepare(). In a scenario where at least one peer is partitioned, it's possible for the responses to be split between successful promises and nacks such that a quorum of neither ever happens. In that case, the algorithm can get stuck, even though an overall quorum of peers is responding.
Concrete example: 5 nodes total (ABCDE). 3 are up (ABC) and 2 are offline (DE). A sends a prepare message to BC. B accepts the prepare and responds with a promise. C has already seen a higher prepare (perhaps from D before it went offline) and nacks. Now A has agreement from B and disagreement from C, and is stuck waiting for another vote from D or E in order to reach a three node (including itself) quorum.
There are a couple of potential ways this could be resolved. The simplest would be to send a new prepare as soon as we receive the first nack, although that could be inefficient.
Am I missing something or is this a real problem?
Thanks,
Ben

Thanks Ben. You definitely spotted a potential problem with that
implementation and the deadlock scenario you describe can certainly happen.
This area is one of the trouble spots for practical Paxos implementations
and it gets harder and harder to effectively deal with as you ramp up your
performance requirements. For example, a simple mechanism you could use to
resolve the deadlock would be to simply retransmit the original proposal
every now and again or to abandon the current proposal after a while,
increment the proposal counter, and try again from the beginning. Those all
involve delays and timeouts though so they drive up latency. This is one of
the areas the core algorithm leaves unspecified and you're on your own to
come up with a solution that matches the requirements of your application.
Tom
On Fri, Feb 3, 2017 at 5:18 AM, Ben Trask<EMAIL_ADDRESS>wrote:

Hi! First let me say thank you for this fantastic project. It's been
immensely helpful for me learning how Paxos works.
I'm also still far from an expert here, and I haven't actually tried
reproducing this bug. It's purely theoretical and I might be wrong.
In receive_nack
https://github.com/cocagne/multi-paxos-example/blob/1f23daaa5e096b7e3c1402125ef7ff98bd1aee18/composable_paxos.py#L192,
the proposer waits until it receives a quorum of nacks before retrying with
prepare(). In a scenario where at least one peer is partitioned, it's
possible for the responses to be split between successful promises and
nacks such that a quorum of neither ever happens. In that case, the
algorithm can get stuck, even though an overall quorum of peers is
responding.
Concrete example: 5 nodes total (ABCDE). 3 are up (ABC) and 2 are offline
(DE). A sends a prepare message to BC. B accepts the prepare and responds
with a promise. C has already seen a higher prepare (perhaps from D before
it went offline) and nacks. Now A has agreement from B and disagreement
from C, and is stuck waiting for another vote from D or E in order to reach
a three node (including itself) quorum.
There are a couple of potential ways this could be resolved. The simplest
would be to send a new prepare as soon as we receive the first nack,
although that could be inefficient.
Am I missing something or is this a real problem?
Thanks,
Ben
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/cocagne/multi-paxos-example/issues/4, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ABrLfM6dihSHXy8maXPK0TBMFl2jdb_rks5rYwzqgaJpZM4L2Nvd
.

I see.
Thanks for the info and great work!


[Unity][Fix] Annotate TIR op pattern could have no stores.

Fix a bug where a block could have no stores, the pass crashes in such a case. We should mark the PrimFunc as opaque in such a case.
This happens if instead of using buffer load/stores we use tir.call_packed for computation.
cc @jwfromm @sunggg

Thanks for the fix! It would be nice to add more context about when we face such cases in the comment.

added a test and some context.


Add selected subject map to Global page container

I am requesting assignment to add a similar map of selections and links to the bottom of the global page container just like the one in the US page container.

See Pull Request (PR) https://github.com/VirusTrack/COVIDvu/pull/460

Timing and code refactor will preclude reusable needed snippet.


Blog post with draft true not working

When blog post set draft: true, build not working.
Show this error: TypeError: Cannot read properties of undefined (reading 'date')
To Reproduce
Steps to reproduce the behavior:

Set blog post drat: true
Run build
See log error

Expected behavior
Build not work, see log: TypeError: Cannot read properties of undefined (reading 'date')
System Info (if dev / build issue):

OS: Mac OS 12.1
Node version: 16.13.0
Npm version: 8.1.0

I am unable to replicate the bug. Are you on an older version? Maybe the fix over here will help - https://github.com/timlrx/tailwind-nextjs-starter-blog/issues/288

I am using  version 1.1.2. Forked from https://github.com/GautierArcin/i18n-tailwind-nextjs-starter-blog/tree/demo/next-translate

Yes, the branch has not been updated for some time and this bug has since been patched. You can copy the fix over here and apply them to your site

I update and worked very well, thanks Timothy.


Issue: gradle2.3.0 + MacOs = no generated entities

We have a large project that uses this library.
SO far it worked fine on both Windows and MacOS, while using the gradle plugin:
classpath 'com.android.tools.build:gradle:2.2.3'
But, today, when we updated to the new version :
classpath 'com.android.tools.build:gradle:2.3.0'
for some reason, only on MacOS, it failed to find even one generated entity.
Re-building the project didn't help.
All this, while on Windows OS it works fine.
How come?

No idea, when I updated to 2.3.0 on macOS a couple days ago it worked fine. What is the full error output? Does it fail if you build from the command line instead of in Android Studio? Did you also upgrade to Android Studio 2.3.0 and gradle 3.3 when you updated the gradle plugin?

Update: we had a user report in our gitter chat a similar issue that they resolved by upgrading from using the android-apt plugin to using annotationProcessor. If you're still using android-apt, you might try upgrading to see if that fixes your problem. Instructions can be found here: https://bitbucket.org/hvisser/android-apt/wiki/Migration

Looks like that migration page for android-apt has been updated since I last read it. It now notes: "Android Gradle 2.3 is actively blocking android-apt now in anticipation of upcoming changes to the Android Gradle plugin. This means that android-apt is officially obsolete." So if you are still using android-apt, the upgrade will definitely be necessary.

I've searched the entire project for "android-apt" and there is none of it. Instead, we have this:
        //used for squidb: https://github.com/yahoo/squidb/issues/263 https://github.com/yahoo/squidb/wiki/Taking-control-of-code-generation
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [
                        squidbOptions: 'androidModels'
                ]
            }
        }

About the upgrade, at first we upgraded the IDE in the normal way, but since it caused the OS to crash and restart when opening the IDE, we fixed it by re-downloading the IDE and installing it on top of what we have. Now the IDE works fine, but the building works only when using the older gradle version.

In that case, that sounds more like an IDE bug than a squidb issue. Have you tried doing a clean build from the command line?

I don't know, because the files of the entities really don't exist, and it worked fine on Windows OS...
What should I write in the terminal for this?

From your project's root directory, or wherever your gradle wrapper is located:
./gradlew clean assembleDebug.
Also, what gradle version are you using?

How do you check the gradle version on MacOS (I use Windows) ?
Doesn't it already have the latest version when installing the IDE ?

The IDE doesn't necessarily control the gradle version, it all depends on how you've configured your project. Most people use the gradle wrapper, which defines the gradle version on a per-project basis in gradle/wrapper/gradle-wrapper.properties (you can see where squidb defines it here). I don't know whether or not your project is configured to use the gradle wrapper, so I can't tell you how to get the gradle version or update it, but this stack overflow answer might help. I believe that the latest android gradle plugin requires gradle version 3.3 or higher, so make sure you've updated to at least that version.
Did you try building from the command line like I suggested?

We checked in "gradle/wrapper/gradle-wrapper.properties" , and it's 3.3 .
About running from command line, we needed to write "bash" before. It said "build successful", but when we tried to run, it still got the same issue. But even if it works, this is not the way we intend to work with. Using the IDE is the most comfortable way.

Understood, but if it works when building from the command line, the issue is almost certainly with Android Studio, not with SquiDB. The SquiDB code generator is just an annotation processor; it's the responsibility of the build tools to make sure that any code generated by annotation processors are picked up and compiled correctly. Since it works from the command line, this suggests that the SquiDB annotation processor is fine.
It may be that something is misconfigured in your Android Studio settings, or it may be a bug in Android Studio 2.3 itself. I'd recommend clearing out Android Studio's caches, or even uninstalling and reinstalling it completely (you can find instructions for how to do these things on google). If the problem persists, I'd recommend that you a small sample project that duplicates the issue and filing a bug with the Android Studio team. Unless there is anything specific that makes you think this IS a SquiDB bug?

Does "./gradlew clean assembleDebug" actually prepares an APK ?
What exactly in the IDE should be changed? It has a lot of settings that were set.

assembleDebug prepares a debug APK, which is generally the same as what happens when you hit the "Run" button in the IDE (unless you've configured the IDE otherwise).
As for whether or not some setting in your IDE needs to be changed I'm afraid can't help you there, since as I mentioned we were unable to reproduce the problem ourselves -- the squidb tests and sample project go through code generation and build without errors when using studio + gradle plugin 2.3 on mac. You'll have to do some debugging to try and figure out what's different between your Mac and Windows setups. If you become confident that the mac version of studio is just misbehaving, you can try to get support from the android studio team, or if you get more information suggesting that it IS a squidb problem (or if we or any other community member manage to reproduce the issue), you can report that back here.


Support multi-byte characters (Unicode)

RAW JSON Data (errorData.json):
{"DAMAGE":"圓圓圓圓圓圓圓"

Test Code:
$parser = new \Seld\JsonLint\JsonParser();
$exception = $parser->lint(file_get_contents('errorData.json'));
echo $exception->getMessage();

【Before fix】：
Result:
Parse error on line 1:
...�圓圓圓圓圓圓"
----------------------^
Expected one of: '}', ','

Contains incorrect characters, and fails to json_encode($message):
var_export(json_encode($exception->getMessage()) === false);
var_export(json_last_error_msg() === 'Malformed UTF-8 characters, possibly incorrectly encoded');

【After fix】：
Result (after fix):
Parse error on line 1:
{"DAMAGE":"圓圓圓圓圓圓圓"
------------------^
Expected one of: '}', ','

Not contains incorrect characters, and succeed in json_encode($message):
var_export(json_encode($exception->getMessage()) === '"Parse error on line 1:\\n{\\"DAMAGE\\":\\"\\u5713\\u5713\\u5713\\u5713\\u5713\\u5713\\u5713\\"\\n------------------^\\nExpected one of: \'}\', \',\'"');
var_export(json_last_error_msg() === 'No error');

Thanks but this changes way too much code for what is  needed IMO.
I think it should be enough to fix this in getPastInput, getUpcomingInput and getFullUpcomingInput as those are used to generate exceptions. The rest works fine as is and does not need changing.
And for those 3 functions, it is ok to use mb_* functions if they are present, but we need to check with function_exists first, otherwise call the regular str* functions. mbstring cannot be a requirement of this package.


Add pylint plugins to requirements.txt

Description
Update requirements.txt and documentation to reflect pylintrc plugins; fix #1590
Rationale
To install all dependencies
Use case(s) / visualization(s)

Thanks for your contribution 🎉


zomato

Internal workings: findByViewId, coroutines, dispatchers, before satartup
Retrofit, interceptors
flow vs livedata

reverse linked list


Dependency Error while publishing Extension.

Hello Experts,
I am getting a dependency error while publishing the extension on Sandbox environment.
I created an Ext1 and then published it on a BC Sandbox instance. It published well without any error.
After this I required to do some field level changes , so I used Designer in Sandbox to achieve these changes, so it created an another extension Ext2. That went also ok without any error.
Now I am doing some change in my first Ext1 , but when I am publishing it , then getting below error.
** The request for path /v1.0/sandbox/dev/apps?SchemaUpdateMode=synchronize failed with code 422. Reason: The extension was unable to be deployed due to a dependency between extensions.
**
For solving this error I mentioned the *Dependency parameter in app.json with proper values.
But still I am getting another error, like below.
**c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\Codeunits\Cod50100.SalesPersonFlow.al(1,16): error AL0197: An application object of type 'Codeunit' with name 'CAE_SalesPersonFlow' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\Codeunits\Cod50100.SalesPersonFlow.al(1,10): error AL0264: An application object of type 'Codeunit' with ID '50100' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag40-Ext50105.CAE_ItemJnlLineExt.al(1,21): error AL0197: An application object of type 'PageExtension' with name 'CAE_ItemJnlLineExt' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag459-Ext50104.CAE_Sales&RecSetupExt.al(1,21): error AL0197: An application object of type 'PageExtension' with name 'CAE_Sales&RecSetupExt' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag40-Ext50105.CAE_ItemJnlLineExt.al(1,15): error AL0264: An application object of type 'PageExtension' with ID '50105' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag459-Ext50104.CAE_Sales&RecSetupExt.al(1,15): error AL0264: An application object of type 'PageExtension' with ID '50104' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\TableExtensions\Tab311-Ext50103.CAE_Sales&RecSetupExt.al(1,22): error AL0197: An application object of type 'TableExtension' with name 'CAE_Sales&RecSetupExt' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\TableExtensions\Tab83-Ext50104.CAE_ItemJnlLineExt.al(1,22): error AL0197: An application object of type 'TableExtension' with name 'CAE_ItemJnlLineExt' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\TableExtensions\Tab311-Ext50103.CAE_Sales&RecSetupExt.al(1,16): error AL0264: An application object of type 'TableExtension' with ID '50103' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\TableExtensions\Tab83-Ext50104.CAE_ItemJnlLineExt.al(1,16): error AL0264: An application object of type 'TableExtension' with ID '50104' is already declared
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\TableExtensions\Tab311-Ext50103.CAE_Sales&RecSetupExt.al(6,22): error AL0205: A field with name 'CAE_Responsibility Center' is already defined
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\TableExtensions\Tab311-Ext50103.CAE_Sales&RecSetupExt.al(11,22): error AL0205: A field with name 'CAE_SalesPersonCode' is already defined
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\TableExtensions\Tab83-Ext50104.CAE_ItemJnlLineExt.al(6,22): error AL0205: A field with name 'CAE_Responsibility Center' is already defined
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag40-Ext50105.CAE_ItemJnlLineExt.al(8,19): error AL0155: A member with name 'CAE_Responsibility Center' is already defined
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag459-Ext50104.CAE_Sales&RecSetupExt.al(9,19): error AL0155: A member with name 'CAE_Mandatory Fields' is already defined
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag459-Ext50104.CAE_Sales&RecSetupExt.al(12,23): error AL0155: A member with name 'CAE_Responsibility Center' is already defined
c:\Users\sudarshan.khandal\Documents\AL\CAE Customization\CAE_SalesPersonCustomization_ST-01-09 - 2\PageExtension\Pag459-Ext50104.CAE_Sales&RecSetupExt.al(18,23): error AL0155: A member with name 'CAE_SalesPersonCode' is already defined
**
Can anyone please get me out of it?
Regards
Sudarshan

If Ext2 is depending on Ext1 you must uninstall Ext2 first. This is the only logical way to do so.


Memory Leaks

A serious leak was introduced recently (I'm using 123438d9bc5d97deb12d9f007bc351290073c774)
Initial indications point toward a modification in NineOldAndroids (or an internal portion of abs that uses it) that is causing the view hierarchy to leak. I'm looking into it and creating a demo app.

Its worth noting that there isn't an issue on ICS but I see it on Gingerbread. (Because you don't create a proxy on Honeycomb/ICS)
com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy is leaking with it's static PROXIES variable. While the key is getting cleaned up because it is a weak reference, the value is not (which is a AnimatorProxy in this case). The proxy keeps a reference to the view which is in turn, leaking the entire hierarchy. You should either avoid using WeakHashMap here or keep a weak reference to the view.

Awesome find. I probably would have totally missed this. Updated to use a weak reference in the proxy. Thanks!


Open source service delivery reports

Critical Changes
Changes
Customers will now be able to run a report to see all the service deliveries they have delivered last month and also see all the service deliveries by client delivered  last month. We have added "My Service Deliveries Last Month" and "My Service Delivery by Client Last Month" reports to the Program Management Reports (Unpackaged) folder.  These 2 reports were contributed to our repo by the partner BiggerBoat.
Issues Closed
New Metadata
Deleted Metadata
Definition of Done
Refer to Asteroids DoD document to see any additional details for the items below
- [ ] Place holder data is incorporated (Refer to Case Management Sample Data document)
- [ ] Base axe-core JEST test included for any new LWC (No critical violations)
- [ ] CRUD/FLS is enforced in Apex
- [ ] Permission sets are updated to account for CRUD/FLS for new object metadata
- [ ] All modified classes are unit tested (Apex) at 100% coverage
- [ ] UX approval or UX not necessary
- [ ] PR contains draft release notes

[x] Attach work item to the pull request with Lurch **Lurch:attach W-000000 or **Lurch:add
[ ] All acceptance criteria have been met

[x] Developer
[ ] Code Reviewer
[ ] QA

[ ] QE story level testing completed

W-7844167

Please hold merge for just a bit - I'm going to add a new installer plan to help existing customers get these reports in a child PR.


[2.0]: Styles / Variables Modal / Sets missing save button

There's no confimation / 'save' button on this screen when managing selected sets to export.
Ideal scenario:

The changed state is not saved automatically but only after pressing a Save button here.
There's a Cancel button that would close the dialog and not save the changes made.

Added to Featurebase Roadmap as a known issue in progress of being fixed -	🚧 ❖❇ Export styles and variables using sets (free plan)

⚠ WIP

Branch: fix/2575-add-save-button-to-export-sets-modal
TODOs: reset selected sets to previous state when user: clicks Cancel OR presses the <--- back arrow


⚠ Jenkins Plugins Artifactory has degraded performance

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

HTTP code: 200
Response time: 1324 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 75633b5 after 20 minutes.


Build error with build id #8920567

Details:

Project URL: https://readthedocs.org/projects/GooseEYE/
Build URL(if applicable): https://readthedocs.org/projects/gooseeye/builds/8920567/
Read the Docs username(if applicable): tdegeus

Expected Result
Perfect build (the docs compile without warnings or errors locally).
Actual Result
The build fails after git clean -d -f -f without any error message.
I have already tried resetting the build environment, and deleting and reinitialising the project.

I think this is because you don't have a submodule in your repo as it is declared in https://github.com/tdegeus/GooseEYE/blob/master/.gitmodules
Ref: #4371

Thanks @dojutsu-user !


chore(ci): api docs build update

Issue number: #187
Summary
Resolving issue that is causing the API documentation to be built incorrectly.
Changes
Using dotnet tools to install docfx to build api documentation
User experience
Currently the build process breaks the formatting of the API documentation. This change resolves that problem.
Checklist
Please leave checklist items unchecked if they do not apply to your change.

[x] Meets tenets criteria
[x] I have performed a self-review of this change
[x] Changes have been tested
[ ] Changes are documented
[x] PR title follows conventional commit semantics

Is this a breaking change?
RFC issue number:
Checklist:

[ ] Migration process documented
[ ] Implement warnings (if it can live side by side)

Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

Codecov Report
Base: 56.35% // Head: 56.29% // Decreases project coverage by -0.06% :warning:

Coverage data is based on head (99a2ac0) compared to base (f06ba2c).
Patch has no changes to coverable lines.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #188      +/-   ##
===========================================
- Coverage    56.35%   56.29%   -0.06%
===========================================
  Files           41       41
  Lines         1778     1778
===========================================
- Hits          1002     1001       -1
- Misses         776      777       +1

Flag
Coverage Δ

unittests
56.29% <ø> (-0.06%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...da.Powertools.Logging/Internal/PowertoolsLogger.cs
90.36% <0.00%> (-0.61%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Set value of People Picker to stored REST values

I am able to successfully get and store the values from the people picker using this directive, but I also have an update form where I need to display/resolve which people have been chosen. How would I set the people picker values on load? I have tried the following, but it doesn't resolve (where vm.cc is the name of my $scope tied to the directive).
 $scope.vm.cc = {
                Email<EMAIL_ADDRESS>                Login<EMAIL_ADDRESS>                Name: "Lastname, firstname"
            }

Thanks in advance for any assistance!
K.

I just found a hook that should resolve this issue. Using the directive mentioned in my original post (https://github.com/jasonvenema/sharepoint-angular-peoplepicker) I was able to update the field values by calling this method:
<EMAIL_ADDRESS>"Smith, Bob M", "bsmith@email.org");
You can also remove selected users in the field via:
peoplePicker.DeleteProcessedUser('i:0#.f|membership|myname@email.org);
With this in play, you can easily envision using a service to retrieve users by ID, get their LoginName, Title, Email) and pass these in a loop to populate the field on load. I am using the REST endpoint of /_api/web/siteusers?$top=1000" to compare that against the IDs stored in my list.


add Hyperlink to DOI Value

Make the DOI value a hyperlink to the PO.DAAC landing page for the dataset.

Codecov Report

Merging #205 into mudrod-117 will decrease coverage by 1.68%.
The diff coverage is n/a.

@@              Coverage Diff               @@
##             mudrod-117   #205      +/-   ##
==============================================
- Coverage          1.68%     0%   -1.69%
==============================================
  Files                79     79
  Lines              5163   5039     -124
  Branches            688    647      -41
==============================================
- Hits                 87      0      -87
+ Misses             5064   5039      -25
+ Partials             12      0      -12


Please add WhereIf for IQueryable

Description
    /// <summary>
    /// Filters a sequence of values based on a predicate if the judgement is matched.
    /// </summary>
    /// <typeparam name="TSource">The type of the elements of source.</typeparam>
    /// <param name="source">An <see cref="IQueryable{T}"/> to filter.</param>
    /// <param name="judgement">The judgement to decide whether the filter should take affect.</param>
    /// <param name="predicate">A function to test each element for a condition.</param>
    /// <returns>
    /// An <see cref="IQueryable{T}"/> that contains elements from the input sequence that satisfy the condition
    /// specified by predicate.
    /// </returns>
    public static IQueryable<TSource> WhereIf<TSource>(this IQueryable<TSource> source, bool judgement, Expression<Func<TSource, bool>> predicate)
    {
        if (!judgement)
        {
            return source;
        }

        return source.Where(predicate);
    }

Hello @yunfandev ,
Thank you for reporting, we will look at it the next time we release this project (we are currently overloaded at this moment)
Best Regards,
Jonathan

Performance Libraries
context.BulkInsert(list, options => options.BatchSize = 1000);
Entity Framework Extensions • Entity Framework Classic • Bulk Operations •  Dapper Plus
Runtime Evaluation
Eval.Execute("x + y", new {x = 1, y = 2}); // return 3
C# Eval Function • SQL Eval Function

Thanks!

This would meet the same goal, but the code may be preferable.
https://khalidabuhakmeh.com/conditionally-apply-linq-clauses


@xjamundx what can we do to help to get this merged?

@xjamundx what can we do to help to get this merged?

I think we could break apart the needed changes into individual issues and PR:s which can more easily be reviewed and discussed rather than this large one which changes 18 files and has discussions all over the place.
Generally: The smaller change, the easier the merge and the more focused discussions and reviews.

I generally agree on this, but 90% of the changed files only include schema: [],, so it should be pretty easy to review...
Originally posted by @marcoreni in https://github.com/xjamundx/eslint-plugin-promise/issues/219#issuecomment-979916423

I don't understand this post, so closing


⚠ Bofrost.lu has degraded performance

In 7bad9a7, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1039 ms

Resolved: Bofrost.lu performance has improved in ff8bdd5 after 16 minutes.


Pygments syntax highlighting

Hey, was this ever added?

Yep, suplemon uses pygments for syntax highighting. However it is implemented on a per line basis so some multiline syntaxes aren't highlighted correctly.


cdc changefeed stucks when injecting all tikv network partition

What did you do?

create mysql sink changefeed
run tpcc prepare

go-tpc tpcc --db workload --warehouses 80 -T 50 --host upstream-tidb.cdc-testbed
-tps-7597190-1-758 --port 4000 --parts 1 prepare --ignore-error '2013,1213,1105,1205,8022,8028,9004,9007,1062

run tpcc workload

/go-tpc tpcc --db workload --warehouses 80 -T 50 --host upstream-tidb.cdc-testbed
-tps-7597190-1-758 --port 4000 --parts 1 --time 1h0m0s run --ignore-error '2013,1213,1105,1205,8022,8028,9004,9007,1062'

Inject all tikv network loss periodically (inject for 10s every 5 minutes), tikv network loss injected during:
2024-07-02T10:26:36 - 10:26:46
2024-07-02T10:31:36 - 10:31:46
2024-07-02T10:36:36 - 10:36:46
2024-07-02T10:41:36 - 10:41:46
2024-07-02T10:46:36 - 10:46:46
check cdc changefeed status

What did you expect to see?
changefeed checkpoint should be normal
What did you see instead?
checkpoint and resolved ts stucks.

Versions of the cluster
[root@upstream-ticdc-0 log]# /cdc version
Release Version: v8.2.0-alpha
Git Commit Hash: 2db092244d18c043f7f8ecc85a598680b33cc324
Git Branch: heads/refs/tags/v8.2.0-alpha
UTC Build Time: 2024-06-27 11:38:15
Go Version: go version go1.21.10 linux/amd64
Failpoint Build: false
[root@upstream-tikv-0 /]# /tikv-server -V
TiKV
Release Version:   8.2.0-alpha
Edition:           Community
Git Commit Hash:   e278928817ed4007279f90c7bf8e42c9b02213f2
Git Commit Branch: heads/refs/tags/v8.2.0-alpha
UTC Build Time:    2024-07-01 11:38:18
Rust Version:      rustc 1.77.0-nightly (89e2160c4 2023-12-27)
Enable Features:   memory-engine pprof-fp jemalloc mem-profiling portable sse test-engine-kv-rocksdb test-engine-raft-raft-engine trace-async-tasks openssl-vendored
Profile:           dist_release

/severity major

Will further investigate the issue on the new arch ticdc https://github.com/pingcap/ticdc. Won't fix on the current repo.


Getting errors on each drag and drop using react-trello/smooth-dnd

Describe the bug
I'm having an issue with dragging/dropping cards, so when you do you get numerous errors that look like this:
[Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for example because scrolling is in progress and cannot be interrupted.
To Reproduce
Steps to reproduce the behavior:
Drag and drop trello cards on mobile and see your console.. https://visbo.now.sh
Expected behavior
Error free
Screenshots

@rcdexta

Should be addressed in https://github.com/rcdexta/react-trello/pull/357

This should be addressed now in v2.2.4. Can you check pls

v2.2.4 Failed to compile @rcdexta
node_modules\react-trello\src\components\AddCardLink.js: Unexpected token (4:35)
2 | import AddCardLink from 'rt/styles/Base'
3 |

4 | export default ({ onClick, t }) => {t('Click to add card')}
|                                    ^
5 |

v2.2.4 Failed to compile @rcdexta
node_modules\react-trello\src\components\AddCardLink.js: Unexpected token (4:35)
2 | import AddCardLink from 'rt/styles/Base'
3 |

4 | export default ({ onClick, t }) => {t('Click to add card')}
|                                    ^
5 |

any updates?

downgrade the version @oplengs001

Same issue here than @alexandrakollarova

This issue comes while just rendering, and should be marked as bug

Thanks for your patience. Fixed in V2.2.5


Atom changes open files when file simultaneously edited and saved in external applications that renames and replaces on save

Edit by @rsese

Open some file in Atom atom --safe file
Open the same file in Vim
Edit and save the file in Vim

Expect the file to be updated in Atom with the changes from (3), actual is that the tab in Atom now shows file~ and has the content of the file before (3).
Reproduces on Windows 10 with Atom 1.26.1.
From https://github.com/atom/atom/issues/17186#issuecomment-385753516:
Simple way to recreate with a git-for-windows bash shell:
touch banana.txt
atom banana.txt
sleep 5  # Give atom time to open the file
# Simulate an external file save
mv banana.txt banana.txt.backup
touch banana.txt

Atom will end up with "banana.txt.backup" opened up, when the expected behavior is to have the new "banana.txt" either automatically loaded or for atom to warn that the file was modified.

Prerequisites

[X ] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
When a file (say test.tex) is simultaneously open in Atom and Scientific Workplace 5.5 (SW), and the file is edited and saved in SW, the window in Atom changes from test.tex to test.bak, instead of refreshing the content of test.tex.
Notice that the simultaneous editing and refreshing works correctly when using SW and WinEdt simultaneously, or when using WinEdt and Atom simultaneously. But not when using SW and Atom.
Steps to Reproduce
To reproduce, make sure that the "Create backup (.bak) Files" option is switched on in SW under Tools -> User Setup -> Files (this is the default choice).

Create a file test.tex in an empty directory, e.g., containing
\documentclass{article}
\begin{document}
Some text.
\end{document}

Open the file using Atom. Left pane contains the content of the directory (only test.tex), right pane the content of the file.

Open the file using SW. Now the file is opened in both editors. SW created a temporary file test.aaa in the directory but we can ignore that one.

Edit the file in Atom and save. When moving focus back to SW, a dialog window in SW announces that the file has been overwritten and request reload. Click Yes. This is expected. The file on the hard drive is correctly modified.

Now edit the file in SW and save. SW correctly saves the file and creates a backup (.bak) file with the previous content. This is expected. HOWEVER, at the same time, the file test.tex opened in Atom automatically changes to test.bak (the caption in the header of the window changes), and its contents indeed correspond to the test.bak file created by SW, This is incorrect behavior.

Expected behavior: When the file test.tex is edited and saved in SW, Atom should refresh the opened file.
Actual behavior: The opened file in Atom changes from test.tex to test.bak.
Reproduces how often: Always.
Versions
Same behavior in Atom 1.24.0 and Atom 1.26.0, both clean installations, with no extra packages and including in safe mode.
Windows 10, Scientific Workplace 5.5
Atom : 1.24.0
Electron: 1.6.16
Chrome : 56.0.2924.87
Node : 7.4.0
Atom : 1.26.0
Electron: 1.7.11
Chrome : 58.0.3029.110
Node : 7.9.0
Additional Information
N/A

Here is an animated GIF showing how to replicate the issue.

I can understand why this is frustrating for certain workflows. On the other hand, this isn't exactly a common problem. This isn't something that the Atom maintainer team is going to work on in the near- or medium-term, so I'm going to go ahead and close this issue. I've flagged it as help-wanted so that people who are interested in helping out can find it though and we would be open to a well-written pull request for this change. It would probably need to be an option though because some people (especially on macOS where this is definitely expected behavior) depend on this behavior.
Thank you very much for the detailed explanation. I know that I didn't quite understand what was being described or requested when I saw this before :bow:

@lee-dohm Is it possible that this problem seems rare because the majority of developers in this situation quickly give up and switch to other editors? That's certainly the case for at least 5 people in my office. There's quite a few software engineers in the world that are stuck working with proprietary windows based toolchains and the only thing that makes it bearable is a good text editor. In that sense, atom in its present state is unbearable. Not to complain about you guys prioritizing other issues first, it's perfectly understandable. I might spend a few hours this week reading through the code base to see if there's an easy fix. Can you clarify what you mean about expected behavior on macOS? Why is it definitely expected for Atom to follow files through a rename on macOS? Sorry if it's something obvious to a mac user, I mainly work on linux and windows.

Sorry if it's something obvious to a mac user, I mainly work on linux and windows.

No need to apologize, I switched from Windows to Mac a number of years ago and this is just one of those things that is different between the two world-views :grinning: The best way that I can describe it is that macOS is "document-focused" whereas Windows and Linux tend to take a "filesystem-focused" point-of-view.
When I open a document in an application on macOS, I'm intending to work on that document. If I use some other tool, such as the Finder (macOS' equivalent of Windows Explorer), to move that document somewhere else in the filesystem, the application still has that document open pointing to the new location on the filesystem. So when I then save the document, the latest changes are written in that new location.
Conversely, when I open a file in an application on Windows, I'm intending to work on that specific version of the file saved in that location. If I use some other tool, such as Windows Explorer, to move that file somewhere else in the filesystem, the application still has that file open pointing to the original location on the filesystem. So when I save the file, the latest changes are written in the original location.
These are the expected behaviors on the two platforms (I assume that Linux is similar to Windows because of its hacker-friendly history). If you use something like Notepad on Windows and TextEdit on macOS, you should be able to duplicate the described behavior exactly.

@lee-dohm I see. I recall a coworker a few years ago select-all'ing the files in his Finder window and dragging them to a new directory. What he hadn't noticed, though, is that he had inadvertently clicked away from his project directory to the "All My Files" view. That took him about two weeks to recover from!
When you're working on a source file on a mac, doesn't that source file still need to exist in a predictable location within a directory structure in order for it to be version controlled and integrated with a build system? Or are you talking about dragging around whole project directories? I don't need to move project directories around very often, but I could imagine other workflows where that happens frequently.
Atom's ability to follow a file through an explicit rename seems like a generally useful feature regardless of the operating system it's running on. From what I've seen in the source code, my guess is that the issue described on this ticket still occurs on a mac if you were to use an editor that does the same rename-then-recreate pattern.
I can think of two potential approaches to fixing the issue on this ticket:
Option 1: Within src/path-watcher.js, modify NSFWBackend's event handler to internally timestamp and queue events in a FIFO. Asynchronously pop events from that FIFO. Whenever a "renamed" event is popped, block until the event is older than some duration (say 100ms). After that duration, check to see if there's something at the old path. If there is, drop the "renamed" event and instead emit a "modified" event for the old path and a "created" event for the new path. Otherwise, non-"renamed" events are emitted immediately without modification.
The end result should be that events go out basically how they do now. When a file is genuinely moved, things will be notified about it just the same only with a barely perceivable delay. The existing code already specifies a "100ms" debounce passed in to NSFW, so another 100ms doesn't seem too bad. When a file is renamed and quickly re-created by another editor, the events will correctly indicate that the file was modified. In a worst case scenario of a whole directory getting moved and many files generating a "renamed" event (is that even what happens?), the additional delay will still be barely perceivable since the asynchronous emitter blocks based on each event's time spent in the FIFO instead of blocking a fixed amount of time for each event.
Option 2: Basically do the same thing as Option 1, but implement it in the NSFW package.
This seems like a less elegant approach since the NSFW package is just faithfully doing its job. This whole intention around renaming text files seems above its pay grade.  Maybe it's an easier place to implement the logic though, and it could be made optional and default to turned off. There's already a "debounce" parameter whose name to me implies that it would be involved in resolving some sort of ambiguity. As far as I can tell, though, the debounce parameter just controls how often the NSFW main loop polls its various native filesystem watching APIs.

I agree with heftyfunseeker. I've been testing Atom and Sublime and love Atom much more, except for this problem. Because of this problem, I can't use Atom. Sublime and all other editors I've tried don't have this issue.
The issue is, for me: When I have a file open in Atom and in Visual Studio (2017), make a change in VS2017 and save it, Atom changes the name of my file in it's buffer to one with an extension of *.TMP and doesn't ask me if I want to reload the newer version from disk. Atom seems to lose the relationship with the previous filename that it was editing.
For instance, I created a new file named test.txt. Created it in Atom and opened it in VS2017. Now when I edit the file in VS2017 and save it, the file name in Atom changes to test.txt~RF6a73f2e6.TMP.
I can NOT use Atom acting like this and I see no way to change this action. Sad. I like everything else, but this is a killer for me.

I have exactly the same problem as jtthewoodworker. It would be great if there was a setting (whether to follow renamed files).

I have exactly the same problem as jtthewoodworker. It would be great if there was a setting (whether to follow renamed files).


Update connectivity information

These changes

Properly separate terminals on mim caps
Fix a typo li
Subtract short variants (*/15), res (*/13) and cut (*/14)

@mole99 cursory check looks good.

Thanks, @d-m-bailey!


mesh2points questions

Hello, I'm having some trouble running mesh2points.exe
Here is the command:
mesh2points --filenames filenames.txt
filenames.txt contains absolute path to mesh.stl
it only log:
Processing: mesh
I checked the output file mesh.points and it was empty
Do I need to preprocess the mesh the mesh somehow?
Sorry for my bad english.

It seems that mesh2points doesn't work with stl files. When I run it on ply files, it works!


Windows version of wai_getExecutablePath() returns length one past end of string

Hi, @kaffeewolf found a bug in the Windows implementation of wai_getExecutablePath(). It's also caught by the unit test I wrote in Oryol, but embarassingly I never ran this on Windows :)
Here it goes: the length returned by wai_getExecutablePath() is different between Windows and non-Windows platforms. On non-Windows-platforms, the length of the path string is returned (in number of bytes), which I think is the intended behaviour. On Windows however, the returned length is one bigger.
The reason is that the length on Windows is taken from the return value of WideCharToMultiByte() (https://github.com/gpakosz/whereami/blob/master/src/whereami.c#L99), and WideCharToMultiByte() returns the number of bytes written to the output buffer (https://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx), and this includes the terminating zero, and this means, wai_getExecutablePath() (or rather already wai_getModulePath()) returns the length including the terminating 0, which is different from the other platforms.
Link to Oryol ticket: https://github.com/floooh/oryol/issues/220

Thanks for the report!

Confirmed working, tanks for the quick fix :)


Put timeouts on TestAdapter await calls?

Awaiting indefinitely (current state) can cause things like: #4054. Putting a timeout on await calls will at least fail instead of hang.
Timeouts would probably need to be structured in:

Timeouts depending on test execution (long).
Timeouts not depending on test execution (short).

Personally, I think there is little value to this. Reasons:

Although there is a failure, it is not really more meaningful.
In interactive execution, humans are better at "choosing" an appropriate timeout: It times out when "it hangs".
In CI execution, a higher, overall timeout is needed anyways and probably more appropriate.

@sjrd WDYT?

Yeah ... I agree that human/CI timeouts are better at handling these kinds of issues. Shorter timeouts built in the system tend to be flaky/inappropriate.


Drop POSIX wrapper and switch to java.nio

Java 7 has a lot of POSIX-related stuff in the java.nio package. We could try to replace the jnr-posix layer with plain java.nio by using classes like PosixFileAttributes. Using java.nio avoids any native calls via the JNI / jaffl interface.
This issue depends on #268
Update: candiates for the nio switch are the fs and file utils.

Initial work started in the 293 branch.

Windows doesn't support POSIX file permissions. I see two approaches to this problem:

ignore the mode if defaultFS.supportedFileAttributeViews() doesn't contain posix; just create the file / directory without any mode
throw an exception / throw back the Java exception

If I look on other POSIX-based Windows code, I see a general preference for the first way.

+1 for the first way
Philipp Naderer<EMAIL_ADDRESS>schrieb am Mo., 20. Juli 2015
19:15:

Windows doesn't support POSIX file permissions. I see two approaches to
this problem:

ignore the mode if defaultFS.supportedFileAttributeViews() doesn't
contain posix; just create the file / directory without any mode
throw an exception / throw back the Java exception

If I look on other POSIX-based Windows code, I see a general preference
for the first way.
—
Reply to this email directly or view it on GitHub
https://github.com/ringo/ringojs/issues/293#issuecomment-122956654.

:+1: for option 1: throwing an exception would be way too harsh.

I think https://github.com/ringo/ringojs/commit/c99bce63e7bc32f4431aaec5ce140a079ac24f06 shows how the new fs methods will look like. imho this is a better approach since we drop the custom POSIX stuff and rely on the JRE to do the right things for us like applying the current umask.
In the first run I dropped the fs.Permissions class. The implementation relied on POSIX and was not filesystem agnostic. Instead, I moved the POSIX stuff into a utility class PosixPermissions which knows all the details and converts between octal, symbolic and Java enum notation. See https://github.com/ringo/ringojs/commit/7a8ab5ed149215e4dc417e37be506cf4b1fc43e7 for utility class.

one nitpick: you're throwing strings as errors in various methods in the utility class, which means there is no stack trace available, and thus makes debugging much harder. you could/should use
 throw new Error("message")

instead. other than that your changes look really good! :+1:

Argggghhhh, too much client side stuff in the last months. Will fix it.

I created a pull request: #307, so any discussion should happen in the PR.


Can't restart if server is down

Hey again :)
While tinkering around I noticed that you can get the server status into an invalid state. I loaded up the manager together with a completly empty factorio. No saves. If you start the server, you get the success message and the server starts. The server will quickly go down because it won't be able to find a save file.
The manager UI will show the server as online though. You can't stop the server (process already finished, this is correct) as well. What is a lot worse is that you can't restart the server "Factorio server already running".
I guess that should be fixed :)

@drahti
Could you send me the launch command the server used when launching from the logs? Should be an easy fix, I likely just have to check if the savefile exists before starting the server.

copy pasted directly from server managers log:
`0.421 Error Main.cpp:340: Couldn't load the game for MP: Opening zip /opt/factorio/saves/.zip failed
0.421 Info MultiplayerManager.cpp:913: networkTick(0) mapTick(-1) changing state from(CreatingGame) to(InitializationFailed)
0.421 Error MultiplayerManager.cpp:110: MultiplayerManager failed: "Opening zip /opt/factorio/saves/.zip failed"
0.401 Loading map /opt/factorio/saves/.zip
0.400 Info MultiplayerManager.cpp:913: networkTick(0) mapTick(-1) changing state from(PreparedToHostGame) to(CreatingGame)
0.400 Info MultiplayerManager.cpp:913: networkTick(0) mapTick(-1) changing state from(Ready) to(PreparedToHostGame)
0.400 Info Router.cpp:536: Router state -> Disconnected
0.400 Info Router.cpp:509: Router peerID(65535) shutting down.
0.400 Factorio initialised
0.110 Checksum for mod base:<PHONE_NUMBER>
0.109 Checksum for core:<PHONE_NUMBER>
0.022 Loading mod base 0.12.31 (data.lua)
0.019 Loading mod core 0.0.0 (data.lua)
0.017 Running in headless mode
0.001 Binaries path: /opt/factorio/bin
0.001 Write data path: /opt/factorio
0.001 Read data path: /opt/factorio/data
0.001 Program arguments: "/opt/factorio/bin/x64/factorio" "--start-server" "" "--latency-ms" "100" "--autosave-interval" "5" "--autosave-slots" "10" "--port" "34197"
0.000 Operating system: Linux
0.000 2016-04-29 18:47:25; Factorio 0.12.31 (Build 18065, linux64, headless)`

Thanks I'll fix this when I get home from work this evening.

No hurry at all. just wanted to let you know. Have a nice day!

This is fixed, server will check for a savefile value in the POST request.

Reference to fix?

Fixed in ed49b11


win 11 pro 4.14 loads but gives no device code

Describe the bug
Logging in to GitHub to authenticate does not work because the button opens the File Explorer on Windows 11 instead.
Expected behavior
i should be given a code to 'enter the device code', but none is ever given.
To Reproduce
try to use 'https://github.com/BloopAI/bloop/releases/download/v0.4.14/bloop_0.4.14_x64_en-US.msi' normally
Screenshots or output
no device code is ever received

Closing in favour of https://github.com/BloopAI/bloop/issues/673


Always lock chunks first to avoid deadlock

This PR resolves https://github.com/fluent/fluentd/issues/1549.
For example, deadlock occurs by the following steps before this commit:

input plugin thread receives multiple events
(metadata_and_data.size > 1)
input plugin thread processes the first metadata_and_data element
and aquires the lock of chunk1 (chunk.mon_exit in Buffer#write)
enqueue thread aquires the lock of buffer
(synchronize in Buffer#enqueue_chunk)
enqueue thread tries to aquire the lock of buffer
(chunk.synchronize in Buffer#enqueue_chunk)
input plugin thread processes the second metadata_and_data element
and tries to aquire the lock of buffer (synchronize in Buffer#write_once)

cf. https://github.com/fluent/fluentd/issues/1549#issuecomment-335736547

@repeatedly Could you review the change? I want to try the latest version (v0.14.22.rc2?) which includes this change in our production environment if it looks good to you.

Thanks! I will review it!

I found there were errors like unexpected error while checking flushed chunks. ignored. error_class=RuntimeError error="can't enqueue buffer file: path = /fluentd/log/..., error = 'closed stream'" and I'll investigate the cause 🙇

I fixed "closed stream" error in  https://github.com/fluent/fluentd/pull/1721/commits/1a6f16b4c2c06060c65837c1167d055ec93bded5.
@repeatedly Please review. I've checked the behavior in our development environment and it works fine. I want your review before I try it in our production environment.
Some tests failed in Travis CI, but these tests seem to sometimes fails also in master branch, aren't they?


Return concrete structs instead of json::Value

@joeirimpan I'd like to work on this

@Suyash458 Its yours then :)

@joeirimpan what are your thoughts on having the Order modification/cancellation APIs as methods on the structs themselves instead of the KiteConnect client?

I had similar thoughts. Instead of client.place_order, we could write something like client.order.place? But this will make it inconsistent with other libs that we have in place.

@joeirimpan I was thinking the APIs to fetch/place orders could be offered by the client but, the APIs to modify/cancel the orders themselves could be methods on the Order struct. So we could write something like below
let order = client.place_order();
order.cancel();

Although, as you said this doesn't make much sense if it's inconsistent with the other libraries


Add read compacted option to consumer options.

retest this please

@mkaufmaner
Could you add readCompacted option to the ReaderConfig class as well?
You can use pulsar_reader_configuration_set_read_compacted().
https://github.com/apache/pulsar/blob/v2.4.2/pulsar-client-cpp/lib/c/c_ReaderConfiguration.cc#L81
https://github.com/apache/pulsar/blob/v2.4.2/pulsar-client-go/pulsar/c_reader.go#L106

@mkaufmaner
Could you add readCompacted option to the ReaderConfig class as well?
You can use pulsar_reader_configuration_set_read_compacted().
https://github.com/apache/pulsar/blob/v2.4.2/pulsar-client-cpp/lib/c/c_ReaderConfiguration.cc#L81
https://github.com/apache/pulsar/blob/v2.4.2/pulsar-client-go/pulsar/c_reader.go#L106

Will do!
Also, could you elaborate on what you mean by "retest this please"?

could you elaborate on what you mean by "retest this please"?

"retest this please" is the trigger for Jenkins precommit job.
After commenting "retest this please", jenkins will start the precommit job.
The precommit job did not run for some reason, so I commented "retest this please".

retest this please

@mkaufmaner
Thank you for your contribution!

@mkaufmaner
Thank you for your contribution!

Anytime!  Thank you for your review as well!


UI - allow doc request open via redirect

Issue #: /bcgov/entity#21340
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the PPR license (Apache 2.0).

/gcbrun

/gcbrun

Temporary Url for review: https://registry-search-dev--pr-276-hwryhrzp.web.app


Speedup retrieve all

Speed up AssetFinder.retrieve_all by doing one query instead of N.

Removes the separate caches for equities and futures in favor of a single asset cache.
We now cache the results of failed lookups.  This required unfortunate hacks in the TradingAlgorithm code that resolves assets from DataFrames.
Reimplements single-asset lookups as a special case of multiple-asset lookups.

Timings for ~30000 assets on my machine:
Before:
# Empty Cache
In [3]: %timeit -r1 -n1 f.retrieve_all(sids)
1 loops, best of 1: 29.4 s per loop

# Full Cache
In [5]: %timeit f.retrieve_all(sids)
100 loops, best of 3: 9.13 ms per loop

# Single Asset
In [3]: %timeit f.retrieve_asset(24)
The slowest run took 49.35 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 546 ns per loop

After:
# Empty Cache
In [5]: %timeit -n5 f.retrieve_all(sids); f._reset_caches()
5 loops, best of 3: 1.34 s per loop

# Full Cache
In [7]: %timeit f.retrieve_all(sids)
100 loops, best of 3: 5.96 ms per loop

# Single Asset
In [4]: %timeit f.retrieve_asset(24)
The slowest run took 42.91 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 278 ns per loop

Conclusions:

This is roughly 30x faster for batch lookups on a large number of assets when caches are empty.
This is roughly 2x faster for batch lookups when caches are full.
This is roughly 2x slower for single-asset lookups.  Those lookups go from 270 ns to 540 ns on my machine.  I think this is okay because that performance should only matter appreciably if we're looking up lots of assets in a loop, in which case we should just use the faster batch mode anyway.  We can add more special-case handling for single-asset cache hits if we need to though.

cc @jbredeche on perf notes.

Nice conclusions!  Is the single-asset lookup case for cache-miss or cache-hit?

@richafrank the single-asset case is about the same 2x slowdown for both hits and misses.

@mtydykov can you take a look at the commits from a436426a5a018605895d6d073ba709a5ee82cdef to 9881c303413534e8859a85d40c27aa5bffaf4a1a?  The rest of this PR has already been reviewed by @richafrank, but I made a couple changes after rebasing against your latest changes.

LGTM


soapyrtlsdr: init at 0.2.5

Motivation for this change
Add the Soapy RTL-SDR module which provides support for RTL-SDR dongles within the SoapySDR API and software that supports SoapySDR.
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

@GrahamcOfBorg build soapysdr-with-plugins

Did you try with it an RTL-SDR stick? I tried to get it to work ~half a year ago but I could not get it to stream data (that's why I did not include the plugin in the initial sopysdr PR).

Hi @markuskowa, thanks for taking a look at this PR.
I have a RTL2832U stick (RTL-SDR v3) and I've tried it successfully with that.
SoapySDRUtil gives the following output:
$ ./bin/SoapySDRUtil --find
######################################################
##     Soapy SDR -- the SDR abstraction library     ##
######################################################

[INFO] [UHD] linux; GNU C++ version 7.3.0; Boost_106700; UHD_<IP_ADDRESS>-0-unknown
Found Rafael Micro R820T tuner
Found device 0
  available = Yes
  driver = rtlsdr
  label = Generic RTL2832U OEM :: 00000001
  manufacturer = Realtek
  product = RTL2838UHIDIR
  rtl = 0
  serial = 00000001
  tuner = Rafael Micro R820T

I also have a working nix build for CubicSDR (which is why I need soapyrtlsdr) and that works fine with my stick through SoapySDR.


Can you prefer some vscode extensions?

Recently I've noticed that I have a bit of an overabundance of VSCode plugins, and I'm trying to get serious about organising them, but I'm doubly overwhelmed.
I'd like to make a suggestion, I'd like to give users greater personalisation here, for example allowing them to tag vscode and group it by tags.
Well, I also have a suggestion, I hope the plugin market can have containerised customisation, for example, if I develop React I would like the VSCode plugin market to only keep plugins that are relevant or useful to React, if I develop rust I would feel that having too many plugins on that have nothing to do with rust would make the mac a bit laggy.
Finally, thank you for your patient responses. I hope you have a great weekend.

Do you know about Profiles?
https://code.visualstudio.com/docs/editor/profiles


Unable to upload new events after the edit functionality was added

Describe the bug
Communications reported that the Excel uploader was not working after the database editing feature was added.
To Reproduce
I will look into this on my local machine and using the testing database to determine further details.
Expected behavior
The Excel upload page should not have been affected by the database editing feature.

I found the issue: the Excel-to-Firestore pipeline was calling a DateTime parsing function to try parsing an ISO 8601 String, but the function it was calling was one from the Firestore-to-Dart pipeline (on the other side of the app!) which only parsed Timestamps. This was definitely my fault!

The date issue persists. Is there a way to add five hours to the dates that are processed? Or maybe 5 hours were subtracted accidentally? Or the Flutter update changed how the DateTime conversion functions work?

I think it's a time zone issue. The dates in the submission form have no time information, so when they are stored in Excel they are given "00:00:00.000Z", midnight UTC, as their time component. This is preserved when reading into a Dart DateTime object, but when uploaded to Firestore this is translated to the equivalent time in CDT (our current time zone, or perhaps the time zone of nam5, our Firebase database location?)
I wonder if something changed in the app for these dates to not be read as UTC DateTimes before having the time information truncated and displayed. That would cause all the days to read as one day earlier.

I'm fairly certain I've figured it out now. The uploader just needs to truncate the time information from the dates and ensure the dates are in local time before uploading them.


fix(cli): add k8s auth package

Short description of what this resolves:
Trying to point the ike tool to our k8s cluster running in gcp gave this error:
failed to create default client	{"error": "no Auth Provider found for name \"gcp\""}

Changes proposed in this pull request:
I've found that the ike command does not import the k8s.io/client-go/plugin/pkg/client/auth package which claims to fix this issue (https://github.com/kubernetes/client-go/issues/242).
I am unsure if where I have added it makes sense for this project so happy to move to a more sensible place! This allows the tool to connect to our cluster successfully.

Hi @Humpheh. Thanks for your PR.
I'm waiting for a maistra member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/test openshift

Thanks for another contribution @Humpheh! FYI we have a small issue with running tests against microk8s but that should be fixed very soon. If the build passes on Openshift we will merge it though.

No problem @bartoszmajsak! I'm hoping to get this working for us as it looks like a really useful tool!


Docker runtime broken on main

make install && eval-dev-quality evaluate --model symflower/symbolic-execution --repository golang/plain --runtime docker

2024/07/31 15:55:49 Writing results to evaluation-2024-07-31-15:55:49
2024/07/31 15:55:49 Spawning new log file at evaluation-2024-07-31-15:55:49/evaluation.log
2024/07/31 15:55:49 $ docker volume create evaluation-volume
2024/07/31 15:55:49 evaluation-volume
2024/07/31 15:55:49 $ docker run -e PROVIDER_TOKEN -v evaluation-volume:/app/evaluation --rm ghcr.io/symflower/eval-dev-quality:main eval-dev-quality evaluate --model symflower/symbolic-execution --result-path /app/evaluation/symflower_symbolic-execution --repository golang/plain
2024/07/31 15:55:49 2024/07/31 13:55:49 Writing results to /app/evaluation/symflower_symbolic-execution
2024/07/31 13:55:49 ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied
2024/07/31 15:55:49 panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied [recovered]
	panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied

goroutine 1 [running]:
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Initialize.func1()
	/app/cmd/eval-dev-quality/cmd/evaluate.go:117 +0x45
panic({0x8d6e40?, 0xc00028a7d0?})
	/usr/local/go/src/runtime/panic.go:770 +0x132
log.(*Logger).Panicf(0xc000286690, {0x9731a2?, 0x3b?}, {0xc00021fc10?, 0xc0002900c0?, 0x13?})
	/usr/local/go/src/log/log.go:310 +0x6e
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Initialize(0xc0002b6000, {0x0?, 0x2?, 0x0?})
	/app/cmd/eval-dev-quality/cmd/evaluate.go:215 +0xa6c
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Execute(0xc0002b6000, {0xc0002a7110, 0x0, 0x7})
	/app/cmd/eval-dev-quality/cmd/evaluate.go:402 +0x9c
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute.func1({0x7f601f95e0f8, 0xc0002b6000}, {0xc0002a7110, 0x0, 0x7})
	/app/cmd/eval-dev-quality/cmd/command.go:38 +0x12d
github.com/jessevdk/go-flags.(*Parser).ParseArgs(0xc0002a62a0, {0xc000022090, 0x7, 0x7})
	/go/pkg/mod/github.com/jessevdk/go-flags@v1.5.1-0.20210607101731-3927b71304df/parser.go:333 +0xaf9
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute(0xc000286690, {0xc000022090, 0x7, 0x7})
	/app/cmd/eval-dev-quality/cmd/command.go:41 +0x25c
main.main()
	/app/cmd/eval-dev-quality/main.go:11 +0x65
2024/07/31 15:55:50 ERROR: 2024/07/31 13:55:49 Writing results to /app/evaluation/symflower_symbolic-execution
2024/07/31 13:55:49 ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied
panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied [recovered]
	panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied

goroutine 1 [running]:
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Initialize.func1()
	/app/cmd/eval-dev-quality/cmd/evaluate.go:117 +0x45
panic({0x8d6e40?, 0xc00028a7d0?})
	/usr/local/go/src/runtime/panic.go:770 +0x132
log.(*Logger).Panicf(0xc000286690, {0x9731a2?, 0x3b?}, {0xc00021fc10?, 0xc0002900c0?, 0x13?})
	/usr/local/go/src/log/log.go:310 +0x6e
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Initialize(0xc0002b6000, {0x0?, 0x2?, 0x0?})
	/app/cmd/eval-dev-quality/cmd/evaluate.go:215 +0xa6c
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Execute(0xc0002b6000, {0xc0002a7110, 0x0, 0x7})
	/app/cmd/eval-dev-quality/cmd/evaluate.go:402 +0x9c
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute.func1({0x7f601f95e0f8, 0xc0002b6000}, {0xc0002a7110, 0x0, 0x7})
	/app/cmd/eval-dev-quality/cmd/command.go:38 +0x12d
github.com/jessevdk/go-flags.(*Parser).ParseArgs(0xc0002a62a0, {0xc000022090, 0x7, 0x7})
	/go/pkg/mod/github.com/jessevdk/go-flags@v1.5.1-0.20210607101731-3927b71304df/parser.go:333 +0xaf9
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute(0xc000286690, {0xc000022090, 0x7, 0x7})
	/app/cmd/eval-dev-quality/cmd/command.go:41 +0x25c
main.main()
	/app/cmd/eval-dev-quality/main.go:11 +0x65
: 2024/07/31 13:55:49 Writing results to /app/evaluation/symflower_symbolic-execution
2024/07/31 13:55:49 ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied
panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied [recovered]
	panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied

goroutine 1 [running]:
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Initialize.func1()
	/app/cmd/eval-dev-quality/cmd/evaluate.go:117 +0x45
panic({0x8d6e40?, 0xc00028a7d0?})
	/usr/local/go/src/runtime/panic.go:770 +0x132
log.(*Logger).Panicf(0xc000286690, {0x9731a2?, 0x3b?}, {0xc00021fc10?, 0xc0002900c0?, 0x13?})
	/usr/local/go/src/log/log.go:310 +0x6e
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Initialize(0xc0002b6000, {0x0?, 0x2?, 0x0?})
	/app/cmd/eval-dev-quality/cmd/evaluate.go:215 +0xa6c
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Execute(0xc0002b6000, {0xc0002a7110, 0x0, 0x7})
	/app/cmd/eval-dev-quality/cmd/evaluate.go:402 +0x9c
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute.func1({0x7f601f95e0f8, 0xc0002b6000}, {0xc0002a7110, 0x0, 0x7})
	/app/cmd/eval-dev-quality/cmd/command.go:38 +0x12d
github.com/jessevdk/go-flags.(*Parser).ParseArgs(0xc0002a62a0, {0xc000022090, 0x7, 0x7})
	/go/pkg/mod/github.com/jessevdk/go-flags@v1.5.1-0.20210607101731-3927b71304df/parser.go:333 +0xaf9
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute(0xc000286690, {0xc000022090, 0x7, 0x7})
	/app/cmd/eval-dev-quality/cmd/command.go:41 +0x25c
main.main()
	/app/cmd/eval-dev-quality/main.go:11 +0x65
: exit status 2
2024/07/31 15:55:50 $ docker run -d --name volume-fetch -v evaluation-volume:/data busybox true
2024/07/31 15:55:50 6da845a3d21cf6e5f8560e2f65275129e9745f8e5cf8b9eac7dd1254c484a588
2024/07/31 15:55:50 $ docker cp volume-fetch:/data/. evaluation-2024-07-31-15:55:49
2024/07/31 15:55:50 copying between containers is not supported
2024/07/31 15:55:50 $ docker rm volume-fetch
2024/07/31 15:55:50 volume-fetch
2024/07/31 15:55:50 $ docker volume rm evaluation-volume
2024/07/31 15:55:50 evaluation-volume
copying between containers is not supported
: copying between containers is not supported
: exit status 1
2024/07/31 15:55:50 Could not parse arguments: exit status 1
copying between containers is not supported

github.com/symflower/eval-dev-quality/util.CommandWithResult
	/home/simon/repos/eval-dev-quality/util/exec.go:60
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).evaluateDocker
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:653
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:483
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute.func1
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:40
github.com/jessevdk/go-flags.(*Parser).ParseArgs
	/home/simon/symflower/pkg/mod/github.com/jessevdk/go-flags@v1.5.1-0.20210607101731-3927b71304df/parser.go:333
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:43
main.main
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/main.go:11
runtime.main
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/proc.go:267
runtime.goexit
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/asm_amd64.s:1650
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).evaluateDocker
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:662
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:483
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute.func1
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:40
github.com/jessevdk/go-flags.(*Parser).ParseArgs
	/home/simon/symflower/pkg/mod/github.com/jessevdk/go-flags@v1.5.1-0.20210607101731-3927b71304df/parser.go:333
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:43
main.main
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/main.go:11
runtime.main
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/proc.go:267
runtime.goexit
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/asm_amd64.s:1650
copying between containers is not supported

panic: Could not parse arguments: exit status 1
copying between containers is not supported

github.com/symflower/eval-dev-quality/util.CommandWithResult
	/home/simon/repos/eval-dev-quality/util/exec.go:60
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).evaluateDocker
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:653
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:483
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute.func1
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:40
github.com/jessevdk/go-flags.(*Parser).ParseArgs
	/home/simon/symflower/pkg/mod/github.com/jessevdk/go-flags@v1.5.1-0.20210607101731-3927b71304df/parser.go:333
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:43
main.main
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/main.go:11
runtime.main
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/proc.go:267
runtime.goexit
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/asm_amd64.s:1650
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).evaluateDocker
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:662
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.(*Evaluate).Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/evaluate.go:483
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute.func1
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:40
github.com/jessevdk/go-flags.(*Parser).ParseArgs
	/home/simon/symflower/pkg/mod/github.com/jessevdk/go-flags@v1.5.1-0.20210607101731-3927b71304df/parser.go:333
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:43
main.main
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/main.go:11
runtime.main
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/proc.go:267
runtime.goexit
	/home/simon/symflower/.devenv/go@1.21.5/go/src/runtime/asm_amd64.s:1650
copying between containers is not supported

goroutine 1 [running]:
github.com/symflower/eval-dev-quality/log.(*Logger).Panicf(0xc000130050, {0x9c5745?, 0x7?}, {0xc00021fed8?, 0x0?, 0x960400?})
	/home/simon/repos/eval-dev-quality/log/logger.go:124 +0x94
github.com/symflower/eval-dev-quality/cmd/eval-dev-quality/cmd.Execute(0xc000130050, {0xc000024090?, 0x7, 0x7})
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/cmd/command.go:48 +0x2f2
main.main()
	/home/simon/repos/eval-dev-quality/cmd/eval-dev-quality/main.go:11 +0x17c

Not sure what I did wrong. I had one semi-working run but then it encountered the copying between containers is not supported error that is below in the logs...
docker volume list and docker ps is empty though.

And now every time I run it won't even create the log directory...

It has to be something different because of:
ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied
2024/07/31 15:55:49 panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied [recovered]
	panic: ERROR: mkdir /app/evaluation/symflower_symbolic-execution: permission denied

@bauersimon could you run docker pull ghcr.io/symflower/eval-dev-quality:main and try again pls.

Working again :confetti_ball:


Publish dockers to acr

Move all docker image storage to Azure Container Registry (ACR).
Created second set of Git Action .yml scripts to build and publish docker images when doing push/PR to main repo.
Relocate docker image names/tags macro definitions from dash-pipeline/Makefile to individual dockerfile/DOCKER_XXX_IMG.env files which are imported into the Makefile, allowing you to change image versions without editing the Makefile.
Document detailed docker workflows

Hi @chrispsommers, I have started looking at the changes from this PR in this branch publish-dockers-to-acr.  Before going through some workflows, I was reading the dash-docker README and have some feedback on it:

In the volume mount section:  Instead of saying "local", shouldn't we say "host" directory/sub-directory/development environment etc.?  It reads a lot better.  Especially when your figure refers to it as "Host Filesystem"
In the section Building Docker Images, Isn't it true that  either creates or pulls the docker image?  Currently it says that it creates it.  We should clarify.
For this line Either you split the command in tow line or add semi-colon (before make p4) to split these two commands
In the diagram in workflow III, Shouldn't the "docker registry" after step 7 be "ACR" instead of "Dockerhub"?

Finally, what would you like me to try and help test these changes?

Hi @chrispsommers, I have started looking at the changes from this PR in this branch publish-dockers-to-acr. Before going through some workflows, I was reading the dash-docker README and have some feedback on it:

In the volume mount section:  Instead of saying "local", shouldn't we say "host" directory/sub-directory/development environment etc.?  It reads a lot better.  Especially when your figure refers to it as "Host Filesystem"
In the section Building Docker Images, Isn't it true that  either creates or pulls the docker image?  Currently it says that it creates it.  We should clarify.
For this line Either you split the command in tow line or add semi-colon (before make p4) to split these two commands
In the diagram in workflow III, Shouldn't the "docker registry" after step 7 be "ACR" instead of "Dockerhub"?

Finally, what would you like me to try and help test these changes?

@mhanif, thanks for the very detailed review, I will try to address the documentation items soon. As far as what to try:

Try the normal build & test process to see if it goes well for you. It will pull all new docker images because they're from a different docker repo. This is kind of a sanity check.
If you want to spend more time and try some of the publishing workflows, it will require some coordination between us. The goal would be to make a new (possibly throwaway) docker image, try the publishing workflows and see if it works. For example, just change the tag (even with unchanged contents) and go through the whole process of one or more of the documented workflows. It would help prove it out and also "train" someone else on this process. Let me know what your appetite is and we can work together.

Hi @chrispsommers, using your branch, I went on to try the dash-pipeline work.   Did the "make all" which went successfully.  Also, was able to do "make run-switch" and "make run-saithrift-server" successfully.  However "make run-all-tests" fails.   TestSaiThriftSession OK
ok

----------------------------------------------------------------------
Ran 1 test in 0.005s

OK
test_thrift_session.TestSaiThriftSaiHelper ... TestSaiThriftSaiHelper OK
ok

----------------------------------------------------------------------
Ran 1 test in 0.003s

OK
test_saithrift_vnet.TestSaiThrift_outbound_udp_pkt ...

Sending packet with wrong vip...

 <Ether  dst=00:00:02:03:04:05 src=00:00:05:06:06:06 type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=11638 dport=4789 chksum=0x0 |<VXLAN  flags=Instance reserved1=0 vni=0x64 reserved2=0x0 |<Ether  dst=02:02:02:02:02:02 src=00:cc:cc:cc:cc:cc type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=1234 dport=80 |<Raw  load='\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789' |>>>>>>>>

Verifying drop...

Sending packet with wrong dst CA IP to verify routing drop...

 <Ether  dst=00:00:02:03:04:05 src=00:00:05:06:06:06 type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=11638 dport=4789 chksum=0x0 |<VXLAN  flags=Instance reserved1=0 vni=0x64 reserved2=0x0 |<Ether  dst=02:02:02:02:02:02 src=00:cc:cc:cc:cc:cc type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=1234 dport=80 |<Raw  load='\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789' |>>>>>>>>

Verifying drop...

Sending packet with wrong dst CA IP to verify mapping drop...

 <Ether  dst=00:00:02:03:04:05 src=00:00:05:06:06:06 type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=11638 dport=4789 chksum=0x0 |<VXLAN  flags=Instance reserved1=0 vni=0x64 reserved2=0x0 |<Ether  dst=02:02:02:02:02:02 src=00:cc:cc:cc:cc:cc type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=1234 dport=80 |<Raw  load='\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789' |>>>>>>>>

Verifying drop...

Sending outbound packet...

 <Ether  dst=00:00:02:03:04:05 src=00:00:05:06:06:06 type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=11638 dport=4789 chksum=0x0 |<VXLAN  flags=Instance reserved1=0 vni=0x64 reserved2=0x0 |<Ether  dst=02:02:02:02:02:02 src=00:cc:cc:cc:cc:cc type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=1234 dport=80 |<Raw  load='\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789' |>>>>>>>>

Verifying packet...
 <Ether  dst=00:00:00:00:00:00 src=00:00:00:00:00:00 type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp chksum=0x0 src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=0 dport=4789 chksum=0x0 |<VXLAN  flags= reserved1=0 vni=0x64 reserved2=0x0 |<Ether  dst=00:dd:dd:dd:dd:dd src=00:cc:cc:cc:cc:cc type=IPv4 |<IP  ihl=None tos=0x0 id=1 flags= frag=0 ttl=64 proto=udp src=<IP_ADDRESS> dst=<IP_ADDRESS> |<UDP  sport=1234 dport=80 |<Raw  load='\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789' |>>>>>>>>
test_sai_thrift_outbound_udp_pkt_test OK
ok

----------------------------------------------------------------------
Ran 1 test in 0.519s

OK
cd ../test/third-party/traffic_gen && ./deploy_ixiac.sh
.
WARNING: The DOCKER_REGISTRY variable is not set. Defaulting to a blank string.
WARNING: The IFC1 variable is not set. Defaulting to a blank string.
WARNING: The IFC2 variable is not set. Defaulting to a blank string.
Pulling controller (/ixia-c-controller:latest)...
ERROR: invalid reference format
make: *** [Makefile:506: deploy-ixiac] Error 1

docker ps and docker images have the following output:
$ docker ps
CONTAINER ID   IMAGE                                             COMMAND                  CREATED         STATUS         PORTS     NAMES
f789e5371199   sonicdash.azurecr.io/dash-saithrift-bldr:220819   "./saiserver"            9 minutes ago   Up 9 minutes             dash-saithrift-server-mhanif
3ca5717876cc   sonicdash.azurecr.io/dash-bmv2-bldr:220819        "env LD_LIBRARY_PATH…"   9 minutes ago   Up 9 minutes             simple_switch-mhanif

$ docker images
REPOSITORY                                        TAG       IMAGE ID       CREATED             SIZE
local/dash-saithrift-client                       latest    940694a2a346   15 minutes ago      520MB
sonicdash.azurecr.io/dash-saithrift-client-bldr   220819    0589d81cc9f8   About an hour ago   493MB
sonicdash.azurecr.io/dash-saithrift-bldr          220819    1b68871f29ba   About an hour ago   1.71GB
sonicdash.azurecr.io/dash-p4c-bmv2                220825    44671aa5a15e   About an hour ago   603MB
sonicdash.azurecr.io/dash-bmv2-bldr               220819    7bb37d7d476c   About an hour ago   992MB
<none>                                            <none>    7493ed3513e8   2 days ago          519MB
<none>                                            <none>    59d7b56cc7ec   2 days ago          519MB
<none>                                            <none>    804b5ce74492   2 days ago          519MB
<none>                                            <none>    e7bfd71f7f7a   3 days ago          519MB
<none>                                            <none>    d36c2fdba14d   5 days ago          519MB
<none>                                            <none>    4af948131dde   10 days ago         519MB
chrissommers/dash-p4c-bmv2                        220825    44e448102b8a   3 weeks ago         645MB
chrissommers/dash-saithrift-bldr                  220819    9e236a7d31e4   4 weeks ago         1.71GB
chrissommers/dash-bmv2-bldr                       220819    61e0fd3e4227   4 weeks ago         991MB
chrissommers/dash-saithrift-client-bldr           220723    f711a148d80d   2 months ago        492MB
nf                                                latest    f8df59d2a6d3   10 months ago       221MB
endpoint                                          latest    92f871c3fc13   10 months ago       223MB
hello-world                                       latest    feb5d9fea6a5   12 months ago       13.3kB
ubuntu                                            16.04     b6f507652425   12 months ago       135MB
ubuntu                                            trusty    13b66b487594   18 months ago       197MB

Shouldn't the new code clean-up older (chrissommers) docker images?  Also, not sure what these  images are?

Hi @mhanif, thanks for the reporting. I see three things:

This error GRPC ERROR[7]: Not primary, GRPC call Write::INSERT ERROR:  is our old friend https://github.com/Azure/DASH/issues/218 which is still open. It remains to be solved and it seems to occur in your environment more than anywhere else. I saw it once, finally, in a CI pipeline run. I suspect it's a timing issue and suggested an experiment you could try in this comment: https://github.com/Azure/DASH/issues/218#issuecomment-1250155169

This output seems to indicate missing or bad DASH/test/third-party/traffic_gen/deployment/.env which is weird. Could you check the file on your machine? I've never seen this before.

cd ../test/third-party/traffic_gen && ./deploy_ixiac.sh
.
WARNING: The DOCKER_REGISTRY variable is not set. Defaulting to a blank string.
WARNING: The IFC1 variable is not set. Defaulting to a blank string.
WARNING: The IFC2 variable is not set. Defaulting to a blank string.
Pulling controller (/ixia-c-controller:latest)...
ERROR: invalid reference format

The contents should be:
DOCKER_REGISTRY=ghcr.io/open-traffic-generator
CONTROLLER_VERSION=0.0.1-3383
TRAFFIC_ENGINE_VERSION=<IP_ADDRESS>
IFC1=veth1
IFC2=veth3
TCP_PORT_IFC1=5555
TCP_PORT_IFC2=5556
CPU_CORES_IFC1="0"
CPU_CORES_IFC2="1"
OPT_ENABLE_IPv6="No"

Shouldn't the new code clean-up older (chrissommers) docker images? Also, not sure what these images are?

These are simply the older versions of docker images used prior to this PR which used my docker account. The make scripts do not clean anything up, this is the responsibility of the developer to manage their local hosts' Docker registries. The scripts don't delete on their own, nor should they; that might actually cause lots of hardships for people who are switching back and forth or developing in multiple branches. In fact, if you were to go back to testing with main branch you'd need them again.
Deleting a few old images is easy, for example docker rmi 44e448102b8a or docker  rmi chrissommers/dash-p4c-bmv2:220825 to delete one of the ones in your list. I'd hold off until this PR is merged though.

@mhanif Hi, here are point-by-point responses to https://github.com/Azure/DASH/pull/225#issuecomment-1255519264

In the volume mount section: Instead of saying "local", shouldn't we say "host" directory/sub-directory/development environment etc.? It reads a lot better. Especially when your figure refers to it as "Host Filesystem"
[cs] Agreed. Fixed - "local" replaced with "host" in many places. Thanks!

In the section Building Docker Images, Isn't it true that either creates or pulls the docker image? Currently it says that it creates it. We should clarify.
[cs] No, the language is correct. All the make docker-XXX only build images. The docker-pull-xxx targets pull images on demand, only used in CI pipelines to provide granular testing. (Docker pulls are also done implicitly via any make targets invoking docker run but only if the image isn't already stored in the host's registry.)

For this line Either you split the command in tow line or add semi-colon (before make p4) to split these two commands
[cs] No, the command is correct; the intent is to temporarily set an environment variable in the context of the make command in the same line, that was the point.

In the diagram in workflow III, Shouldn't the "docker registry" after step 7 be "ACR" instead of "Dockerhub"?
[cs] Agreed, good catch! Fixed.

2. This output seems to indicate missing or bad DASH/test/third-party/traffic_gen/deployment/.env which is weird. Could you check the file on your machine? I've never seen this before.

Hi @chrispsommers, here is the requested output:
$ more .env
DOCKER_REGISTRY=ghcr.io/open-traffic-generator
CONTROLLER_VERSION=0.0.1-2934
TRAFFIC_ENGINE_VERSION=<IP_ADDRESS>
IFC1=veth1
IFC2=veth3
TCP_PORT_IFC1=5555
TCP_PORT_IFC2=5556
CPU_CORES_IFC1="0"
CPU_CORES_IFC2="1"

This output seems to indicate missing or bad DASH/test/third-party/traffic_gen/deployment/.env which is weird. Could you check the file on your machine? I've never seen this before.

Hi @chrispsommers, here is the requested output:
$ more .env
DOCKER_REGISTRY=ghcr.io/open-traffic-generator
CONTROLLER_VERSION=0.0.1-2934
TRAFFIC_ENGINE_VERSION=<IP_ADDRESS>
IFC1=veth1
IFC2=veth3
TCP_PORT_IFC1=5555
TCP_PORT_IFC2=5556
CPU_CORES_IFC1="0"
CPU_CORES_IFC2="1"

Thanks, I've no explanation for this behavior on your machine. Does it happen repeatably?

Thanks, I've no explanation for this behavior on your machine. Does it happen repeatably?

I was not able to recreate this error.  However, I frequently see GRPC ERROR[7]: Not primary, GRPC call Write::INSERT ERROR: Upon rerunning, I occasionally get the make run-all-tests to pass now.  If you want me to try the publishing workflow, let me know how we can coordinate the work.  Thanks!

I was not able to recreate this error. However, I frequently see GRPC ERROR[7]: Not primary, GRPC call Write::INSERT ERROR: Upon rerunning, I occasionally get the make run-all-tests to pass now. If you want me to try the publishing workflow, let me know how we can coordinate the work. Thanks!

I'll try to explore this error soon, it puzzles me and impedes your efforts.
As far as an ACR workflow, which one would you like to try? I was thinking #2 or #3. I made a scratch branch acr-publish-test-branch in the main repo and you can use it to make PRs against. You can work at your own pace and ping me as much as needed.

Merging per WG meeting on 10-5-2022