Quest - reduce time it takes to sync resources on load

Name of feature to enhance
Sync optimization for the Quest application
Usecase/scenario
How can we optimize the sync process to be able to make it work more efficiently and leverage publisher fields on resources and configs on the quest app to reduce the amount of time needed to sync resources from HAPI or sync on-demand only resources that match the config parameters?
Description of feature
implement a mechanism that allows the current sync operation to be as optimized as possible for optimal peek performance
Describe the enhancement

[ ] Research and development  on a sync optimization strategy
[ ] Document findings with their pros and cons
[ ] Have a discussion to decide on the best approach  that best addresses the sync issues
[ ] Add issues addressing how to go about the enhancements on the Sync feature

@FikriMilano Kindly take note that the initial ticket has been reassigned due to duplication .
Also note, If new enhancements on FHIR Engine is required document them here https://github.com/google/android-fhir/issues/1099**

@f-odhiambo so there are 2 possible ways that could be possible to optimize this:

Based on this Room DB benchmark, it shouldn't take too long to insert the resources into the database. So it doesn't make sense for the sync to take around 7 minutes (on my case). Therefore, perhaps we can improve the FHIR Engine, but haven't found a way to do it.
Benchmark test reference: https://medium.com/swlh/android-dbms-performance-comparison-using-the-jetpack-benchmark-library-19581bf67443
Have a priority initial sync, that basically only sync the necessary resource for the app to be up and running. And then do another sync in the background to fully sync the rest of the resource. But before doing a full sync, some of the features may won't work properly because of missing resources e.g. patient searching will be limited to the patients that have been sync.

1 - During sync fhir-engine saves resources, and then foreach indexed/searcheable field adds an index entry based on index type into other tables. see ResourceIndexer class. This might be leading to increased time as one resource in database can lead upto 3-7 entries into other tables.
2 - For now we do not allow app be ready or usable unless data is setup properly. @f-odhiambo can give a final verdict on this, but it depends on field usage. Shall we allow HW to roam around app without sync complete. This can lead to duplicate entries as well incase of sync in progress and app in  use by HW.
3 - In past with opensrp we faced this issue where we were dealing 50K+ records which was not possible to sync via regular sync method. We actually ended up with a solution where we prepare sqlite DB on server side, and then imported all data via simple inserts into our DB which made it super fast. The prep of sqlite on server posed its own challenges but it solved our main problem. @f-odhiambo @FikriMilano I guess we should discuss this issue over call and then add relevant members for further discussions

1 - During sync fhir-engine saves resources, and then foreach indexed/searcheable field adds an index entry based on index type into other tables. see ResourceIndexer class. This might be leading to increased time as one resource in database can lead upto 3-7 entries into other tables. 2 - For now we do not allow app be ready or usable unless data is setup properly. @f-odhiambo can give a final verdict on this, but it depends on field usage. Shall we allow HW to roam around app without sync complete. This can lead to duplicate entries as well incase of sync in progress and app in use by HW. 3 - In past with opensrp we faced this issue where we were dealing 50K+ records which was not possible to sync via regular sync method. We actually ended up with a solution where we prepare sqlite DB on server side, and then imported all data via simple inserts into our DB which made it super fast. The prep of sqlite on server posed its own challenges but it solved our main problem. @f-odhiambo @FikriMilano I guess we should discuss this issue over call and then add relevant members for further discussions

@maimoonak Option 3 is interesting I would like to understand more about it. Option 2 might be hard since for the app to be used in a fully offline mode we need to sync everything

Thanks for the input @maimoonak
Option 3 is really awesome, personally I like the idea to use this since it fixes the problem, but I don't think I have the final say on whether to use this or the Sync API.
What do you think @ekigamba?
@dubdabasoduba if that's the case, we can forgo option 2

I also agree that option 3 sounds interesting given that it will solve the potential problem of resource indexing causing sync to be slow.
I think we initially need to understand which part of sync is slow and then we can optimize that. I understand that we currently sync all the resources, this will not mirror our initial production case since we expect location mapping and other filters to reduce the number or resources per initial/sequential sync. Additionally, we do not expect to share servers across multiple apps.
I agree that using the publisher filters will significantly reduce the sync time for questionnaires(and other relevant resources) on our multi-tenant setup. For WFP-CODA, we solved this by tagging each resource with the app-id and providing this filter for sync because the filter it is natively supported by server, client and can be used across all resources. See more here
From our previous investigations on the WFP-CODA project, the parsing of string to a FHIR resource and/or encoding FHIR resource to string consumes a lot of resources(memory and CPU time). This took 8 seconds on the slow device.

Let's start by filtering, I'd think we want that for reasons other than performance so the user only downloads data they should have access to

@pld @ekigamba
I think FHIRCore already has a sync based on publisher and organization filters to reduce the resource, but it still takes too long.
So, I will add more filters such as:

Patients based on 'address-country'
Encounter based on 'location'
etc.

And see how much improvement that would bring.

I'm not sure those are the correct filters based on our use cases. Please don't work on that until you've discussed with Ben M

Okay
cc @dubdabasoduba

3 - In past with opensrp we faced this issue where we were dealing 50K+ records which was not possible to sync via regular sync method. We actually ended up with a solution where we prepare sqlite DB on server side, and then imported all data via simple inserts into our DB which made it super fast. The prep of sqlite on server posed its own challenges but it solved our main problem.
@maimoonak

@pld what do you think about option 3?

@pld @ekigamba I think FHIRCore already has a sync based on publisher and organization filters to reduce the resource, but it still takes too long.
So, I will add more filters such as:

Patients based on 'address-country'
Encounter based on 'location.address-country'
etc.

And see how much improvement that would bring.

Which resources can these filters be added to?

I think 3 could makes sense longer term but is too heavy a lift until we've taken out some lower hanging fruit. Can we turn that into a separate issue and leave in the "icebox" for the time being?

Sure

@dubdabasoduba yeah, those 2 are enabled
https://github.com/opensrp/fhircore/blob/main/android/anc/src/main/assets/configurations/app/sync_config.json

@dubdabasoduba yeah, those 2 are enabled https://github.com/opensrp/fhircore/blob/main/android/anc/src/main/assets/configurations/app/sync_config.json

@FikriMilano @maimoonak do we need any other configuration for these to work?

@dubdabasoduba not really, that's the only config that we need

@FikriMilano @dubdabasoduba If we are looking into loading data faster for now, ee can change the organization of demo user to remove the data association from current app (would need some sample data entry to ensure app has some data and looks good). This way the time of sync would be reduced. But this is not a solution of sync problem. We can also remove Binary resources sync from app to make it a little more faster.

I just had a call this morning w @maimoonak
The conclusion is to increase the _count parameter which will increase the total records retrieved per API call.
I updated the QuestConfigService and test it.
Here's the result (Quest app - emulator):

Total Sync Duration
Count limit per API call
Size per API call

7 min 30 sec
20 (Now/default)
~30 KB

4 min 13 sec
40
~60 KB

2 min 21 sec
60
~90 KB

Great, good catch, what happens if we increase it even further?

I just had a call this morning w @maimoonak The conclusion is to increase the _count parameter which will increase the total records retrieved per API call. I updated the QuestConfigService and test it.
Here's the result (Quest app - emulator):
Total Sync Duration	Count limit per API call	Size per API call
7 min 30 sec	20 (Now/default)	~30 KB
4 min 13 sec	40	~60 KB
2 min 21 sec	60	~90 KB

What's the max acceptable size per API call. I think that can guide us on the count limit to use.

@pld @dubdabasoduba
So the previous test result is not fully correct, because there's a timeout exception which I missed.
I increased the timeout limit then ran some test again and the result is:
Here's the result (Quest app - emulator):

Total Sync Duration
Count limit per API call
Size per API call

7 min 30 sec
20 (Now/default)
~30 KB

4 min 16 sec
40
~60 KB

4 min 06 sec
60
~90 KB

3 min 55 sec
100
~150 KB

3 min 53 sec
200
~300 KB (In theory, some resource doesn't have this much record)

Great, good catch, what happens if we increase it even further?

@pld we can, but the result is capped at ~3 min 55 sec

What's the max acceptable size per API call. I think that can guide us on the count limit to use.

@dubdabasoduba based on the latest test result, 100 should be the right balance

What's the max acceptable size per API call. I think that can guide us on the count limit to use.

@dubdabasoduba based on the latest test result, 100 should be the right balance

I think I am okay with the 100 _count.

@f-odhiambo  @dubdabasoduba
We need to refactor the QuestConfigService so that it can process multiple parameters.
Also to increase the timeout limit to 2 minutes as well, because of the bulky sync.
Files to be changed:

sync_config
QuestConfigService
NetworkModule
ConfigurationRegistry

Closed via PR #1128

@FikriMilano Please post the new sync times on this issue after the count fix.


Is the HttpHelper class's condition check inverted?

Currently the HttpHelper class's method to check whether to enforce strict SSL reads as follows:
if ("true".equalsIgnoreCase(System.getProperty("strict.ssl")))
{
    noStrictSSL();
}

By my reading (and testing), setting -Dstrict.ssl=true disables the SSL verification, while using -Dstrict.ssl=false enables verification.  Shouldn't it be the other way around?

Good spot! This is only used in our client/samples. The clients will work with certs correctly passed, this was added as a
bypass.
Indeed the correct setting is to compare with false !!
Feel free to fix or assign to me.

I will do this fix now -- I am about to test the clients as part of the release so it's good timing

I note that we used to have this call in OpenMetadataConformanceTestReport.java - but the recent cts changes have removed this.
Does it need to be readded?
Did you check the client with cert/keystore specs (a bit cumbersome but secure and should work -- though work in progress in this area to correct our certs which are currently wrong)?
Or with a ssl bypass to connect to the server via REST?


Add ISBN, when available, to playback time reports. (PP-572)

Description

Adds an ISBN column to the audiobook playbook time reports.
Attempts to find the best equivalent ISBN identifier, if the book identifier is not an ISBN.

Motivation and Context
[Jira PP-572]
How Has This Been Tested?

New tests for report output and ISBN identifier matching.
Manual testing in local development environment, including verify report delivery.
CI tests for the associated branch passed.

Checklist

[X] I have updated the documentation accordingly.
[X] All new and existing tests passed.

This is ready for another look, @RishiDiwanTT.

@RishiDiwanTT Third time's a charm? 🤷🏽♂

Last comments, I promise 🤞

Hmmm. Crossing your fingers doesn't inspire confidence. 🤣


Update SwinjectStoryboard.podspec

Add support on Podspec level for static_framework in Swift

After some research we decided not to use static_framework in Swinject podspecs (see Swinject 329).
AFAIK it is intended for the libraries which have some difficulty to be integrated as a dynamic frameworks, as it is not optional - once you declare it, users wont be able to use Swinject as dynamic framework, which may break the integration for some projets.

I understand that you might not want to change your Podfile but please consider testing your SDK in this mode because it can improve app starting time by a lot.
In our company in order to improve our startup time, we are trying to move every dependency into a lot of static libraries and then build around one dynamic library.
This is the explanation of our journey if you are interested if not we research how to do it without a lot of success until Cocoapods propose this feature.
We started by watching this WWDC video session and read this article.
We want to achieve something like Automatic or Artsy/Eigen did.
In order to passe all of our dependency into static dependency, we tried Amimono, Accelerator and Swift-Staticlibs but it wasn't a great success.
When Cocoapod announce that they will support swift static framework it's was a great news for us.
The first part of this support came back in 1.4.0 and a second part will come into 1.5.0.
Thanks for your time and work


Gmail account selection keeps triggering 'cancelled'

Which platform(s) does your issue occur on?
Android
Info
I'm getting the popup where an account can be selected to show up, but when I tap on my account the loginprocedure gets 'cancelled'. Am I missing something?
###code-snippets
//init
GoogleLogin.init({
google: {
initialize: true,
serverClientId: xxxxx,
clientId: xxxx,
isRequestAuthCode: false
},
activity: application.android.foregroundActivity
});
//login button
GoogleLogin.login(result=>{
console.dir(result);
});
###logs
JS: 'Starting activity for result...'
JS: 'Cancelled'
JS: 'result. provider = google' 'onActivityResult()'
JS: 'result. code = 1' 'onActivityResult()'
JS: 'Calling Callback function with Results'
JS: ==== object dump start ====
JS: provider: "google"
JS: code: "1"
JS: ==== object dump end ====

@BHuys
got similar problem... this part of similar plugin preparation helped me:
https://github.com/mkloubert/nativescript-social-login#setup-android-google-sign-in-for-debug-builds

I'm having the same issue. @RustamAkimov are you using a serverClientId with your request also?
I can get it to work when just passing only the clientId, but once I pass it the serverClientId the login attempts return {"provider":"google","code":1}.
It works on iOS fine, but I can't get it to work with Android.

I got it resolved.
Turns out the OAuth 2.0 Client IDs I was using had a type of Other instead of Web Application. For whatever reason, the Android implementation of the Google Login will immediately reject using that server id, while the iOS version will not.
On Android you only need to use serverClientId and don't have to pass a clientId if you're using it to get an authCode.
It doesn't seem like specifying a certificate fingerprint is even necessary if you're doing server-side verification. @BHuys double check that the client ID you're using is the same one that is for your server, and also that it has the type Web Application.

I got it resolved.
Turns out the OAuth 2.0 Client IDs I was using had a type of Other instead of Web Application. For whatever reason, the Android implementation of the Google Login will immediately reject using that server id, while the iOS version will not.
On Android you only need to use serverClientId and don't have to pass a clientId if you're using it to get an authCode.
It doesn't seem like specifying a certificate fingerprint is even necessary if you're doing server-side verification. @BHuys double check that the client ID you're using is the same one that is for your server, and also that it has the type Web Application.

Can you PLEASE(X10) show me an example? i still can't make it work. i am trying this way:
GoogleLogin.init({
            google: {
                clientId: "",
                serverClientId: "my_client_id_from_OAuth_android_credentials_i_created.apps.googleusercontent.com",
                isRequestAuthCode: true
            },
            onActivityResult: undefined,
            activity: application.android.foregroundActivity
        })

i keep getting this result:
 {
   "provider": "google",
   "code": 1
 }

Which platform(s) does your issue occur on?
Android
Info
I'm getting the popup where an account can be selected to show up, but when I tap on my account the loginprocedure gets 'cancelled'. Am I missing something?
###code-snippets
//init
GoogleLogin.init({
google: {
initialize: true,
serverClientId: xxxxx,
clientId: xxxx,
isRequestAuthCode: false
},
activity: application.android.foregroundActivity
});
//login button
GoogleLogin.login(result=>{
console.dir(result);
});
###logs
JS: 'Starting activity for result...'
JS: 'Cancelled'
JS: 'result. provider = google' 'onActivityResult()'
JS: 'result. code = 1' 'onActivityResult()'
JS: 'Calling Callback function with Results'
JS: ==== object dump start ====
JS: provider: "google"
JS: code: "1"
JS: ==== object dump end ====

hi, i am having the exact same problem. Did you find any solution?

Which platform(s) does your issue occur on?
Android
Info
I'm getting the popup where an account can be selected to show up, but when I tap on my account the loginprocedure gets 'cancelled'. Am I missing something?
###code-snippets
//init
GoogleLogin.init({
google: {
initialize: true,
serverClientId: xxxxx,
clientId: xxxx,
isRequestAuthCode: false
},
activity: application.android.foregroundActivity
});
//login button
GoogleLogin.login(result=>{
console.dir(result);
});
###logs
JS: 'Starting activity for result...'
JS: 'Cancelled'
JS: 'result. provider = google' 'onActivityResult()'
JS: 'result. code = 1' 'onActivityResult()'
JS: 'Calling Callback function with Results'
JS: ==== object dump start ====
JS: provider: "google"
JS: code: "1"
JS: ==== object dump end ====

hi, i am having the exact same problem. Did you find any solution?

@odedBartov Are testing in production build?

@odedBartov Are testing in production build?

@odedBartov Are testing in production build?

No, why?

@odedBartov Are testing in production build?

No, why?

In the Google Console you have to insert your keystore Sha-1 string, if you test your app in a production build using the keystore the google login will work

In the Google Console you have to insert your keystore Sha-1 string, if you test your app in a production build using the keystore the google login will work

In the Google Console you have to insert your keystore Sha-1 string, if you test your app in a production build using the keystore the google login will work

I am not sure i understand you. What is the actuall difference between release build and debug build? I did insert the Sha-1 string in the google console

In the Google Console you have to insert your keystore Sha-1 string, if you test your app in a production build using the keystore the google login will work

I am not sure i understand you. What is the actuall difference between release build and debug build?

GoogleLogin.init({
    google: {
        initialize: true,
        isRequestAuthCode: true,
        clientId: google_login.android,
        serverClientId: google_login.server_client_id
    },
    viewController: Application.android.foregroundActivity
});

Yes, exept the clientId which i left empty

Try including the clientID from the Google Console, Android OAuth Key

Try including the clientID from the Google Console, Android OAuth Key

I already did, same result

I already did, same result

Hello, we have the same issue even with a production app.
Any news?
Thanks

I had the same issue
Here's the solution

Open Google Developer Console
Create Credentials for Web Application - Do not create for Android
Copy client id
in the init function use the following code

That's it

Thanks @shahen94, I tried your config without any luck.
In the Google Developer Console I had both Android ID and Server ID so I deleted the Android ID
I also generated a new Web Application ID but it didn't work
Any idea?
Thanks

@mrzanirato can you please try to remove app and install again?

I tried but nothing ... here is my console log
JS: Will request ID token
JS: Google Login
JS: Starting activity for result...
JS: Cancelled
JS: result. provider = google onActivityResult()
JS: result. code = 1 onActivityResult()
JS: Calling Callback function with Results
JS: Error: Unexpected HTTP status code (404)

Just to be sure I also tried building a release apk ... same problem

@shahen94 do you have a working example app to test? Thanks

Hello @shahen94 can you confirm that the code is actually working in Android? Thanks

@pboulch can you please check if the plugin is still working in Android? Thanks

No update about this issue ? It seems that there is no Google Login plug-in for Nativescript working on Android at the moment :/

I had the same issue
Here's the solution

Open Google Developer Console
Create Credentials for Web Application - Do not create for Android
Copy client id
in the init function use the following code

That's it

@mrzanirato I managed to fix the problem following @shahen94 comment, I deleted the clientId field, and wait a bit (like 10 min) for the Web Application serverClientId to be ready on Google Console.


[Fix] testColors to green

One of Resistor Color tests is failing - testColors. By other tests seems that assoc arrray is meant to be used here. Updated test to green.

Can you give me some context for why you want to make this change? We run continuous integration on the exercises in this repository, and this previously hasn't been a documented problem.
Running tests for: resistor-color
PHPUnit 9.6.8 by Sebastian Bergmann and contributors.

....                                                                4 / 4 (100%)

Time: 00:00.001, Memory: 24.41 MB

OK (4 tests, 4 assertions)

https://github.com/exercism/php/actions/runs/4989720003/jobs/8934011069


Enable warnings during tests and fix discovered cases

Helps identify problematic or buggy code. When a warning is displayed, it should be analyzed and fixed.
The r and r2 fixtures now close the client after the test is complete.
Pull Request check-list
Please make sure to review and check all of these items:

[x] Does $ tox pass with this change (including linting)?
[x] Does travis tests pass with this change (enable it first in your forked repo and wait for the travis build to finish)?
[x] Is the new or changed code fully tested?
Is a documentation update included (if this change modifies existing APIs, or introduces new ones)? N/A

Codecov Report

Merging #1283 into master will increase coverage by 0.03%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1283      +/-   ##
==========================================
+ Coverage   92.45%   92.48%   +0.03%
==========================================
  Files          19       19
  Lines        6415     6417       +2
==========================================
+ Hits         5931     5935       +4
+ Misses        484      482       -2

Impacted Files
Coverage Δ

tests/conftest.py
97.53% <100%> (-2.47%)
:arrow_down:

redis/client.py
85.91% <0%> (+0.11%)
:arrow_up:

redis/connection.py
80.97% <0%> (+0.26%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3d8d523...0401c14. Read the comment docs.

Thanks!


Intranet not available when some php modules disabled or not compiled

ISSUE TYPE

Bug Report

Checklist

[X] .env file is attached
[X] ./check-config.sh output is added below
[ ] docker-compose logs output is added below
[ ] docker-compose.override.yml is attached (if exists)
[ ] Custom configs from cfg/ dir are attached (if exist)
[X] I've looked through the docs: https://devilbox.readthedocs.io/en/latest/
[X] I've looked through existing issues: https://github.com/cytopia/devilbox/issues
[X] I've read troubleshooting: https://devilbox.readthedocs.io/en/latest/support/troubleshooting.html

OS / ENVIRONMENT

1. Host operating system and version: Windows 10 (20H2)
2. (Windows only) Native Docker or Docker Toolbox: Docker on WSL2
3. Docker version: Docker version 20.10.2, build 2291f61
4. Docker Compose version:
5. (Linux) Is SELinux enabled?: NO
6. What git commit hash are you on?: cdfb55ec2d061bb20bb6aad1792034d995a855a2
SUMMARY

Intranet is not available, and we get either blank page or PHP Fatal errors
STEPS TO REPRODUCE

Start all containers and set localhost URL in your favorite browser
EXPECTED BEHAVIOUR

Intranet should be available, even if some features are disabled
ACTUAL BEHAVIOUR

Blank page or PHP Fatal Errors (depending of module disabled)
OTHER INFORMATION
Start command

$ docker-compose up -d

Outputs

$ ./check-config.sh

# ==============================================================================
# Checking git
# ==============================================================================
[SUCC]  git is clean

# ==============================================================================
# Checking .env file
# ==============================================================================
[SUCC]  .env file exists
[SUCC]  .env file is readable
[SUCC]  All variables are present in .env file
[SUCC]  No variables is duplicated in .env file

# ==============================================================================
# Checking .env file values
# ==============================================================================
[SUCC]  All .env file variables have correct values

# ==============================================================================
# Checking required Devilbox core directories exist
# ==============================================================================
[SUCC]  All PHP cfg/ sub directories are present
[SUCC]  All PHP log/ sub directories are present
[SUCC]  All PHP mod/ sub directories are present
[SUCC]  All HTTPD cfg/ sub directories are present
[SUCC]  All HTTPD log/ sub directories are present

# ==============================================================================
# Checking devilbox core directory permissions
# ==============================================================================
[SUCC]  All devilbox directories have correct permissions
[SUCC]  All devilbox directories have correct uid
[SUCC]  All devilbox directories have correct gid

# ==============================================================================
# Checking devilbox core file permissions
# ==============================================================================
[SUCC]  All devilbox files have correct permissions
[SUCC]  All devilbox files have correct uid
[SUCC]  All devilbox files have correct gid

# ==============================================================================
# Checking projects permissions
# ==============================================================================
[SUCC]  All project dirs have correct permissions
[SUCC]  All project dirs have correct uid
[SUCC]  All project dirs have correct gid

# ==============================================================================
# Checking projects settings
# ==============================================================================
[SUCC]  All projects have valid DNS records
[SUCC]  All projects have valid HTTPD_DOCROOT_DIR

# ==============================================================================
# Checking customizations
# ==============================================================================
[INFO]  No custom configurations applied

# ==============================================================================
# SUMMARY
# ==============================================================================
[SUCC]  Found no errors
[INFO]  No custom configurations applied
[INFO]  Ensure to run 'docker-compose stop; docker-compose rm -f' on .env changes or custom configs

$ diff env-example .env

515c515
< PHP_MODULES_DISABLE=oci8,PDO_OCI,pdo_sqlsrv,sqlsrv,rdkafka,swoole
---
> PHP_MODULES_DISABLE=oci8,PDO_OCI,pdo_sqlsrv,sqlsrv,rdkafka,swoole,mongo,mongodb,redis,memcached,mysqli,pgsql

When mongo (for PHP 5.2) or mongodb (for PHP 5.3 to 8.1) are disabled by configuration (or not compiled in devilbox/docker-php-fpm docker image), we get this error :

Fatal error: Uncaught Error: Class 'MongoDB\Driver\Manager' not found in /var/www/default/include/lib/container/Mongo.php:47 Stack trace: #0 /var/www/default/include/lib/container/BaseClass.php(35): devilbox\Mongo->__construct('mongo', Array) #1 /var/www/default/config.php(161): devilbox\BaseClass::getInstance('mongo') #2 /var/www/default/htdocs/index.php(22): loadClass('Mongo') #3 {main} thrown in /var/www/default/include/lib/container/Mongo.php on line 47

When redis is disable by configuration  (or not compiled in devilbox/docker-php-fpm docker image), we get this error :

Fatal error: Uncaught Error: Class 'Redis' not found in /var/www/default/include/lib/container/Redis.php:41 Stack trace: #0 /var/www/default/include/lib/container/BaseClass.php(35): devilbox\Redis->__construct('redis', Array) #1 /var/www/default/config.php(146): devilbox\BaseClass::getInstance('redis') #2 /var/www/default/htdocs/index.php(20): loadClass('Redis') #3 {main} thrown in /var/www/default/include/lib/container/Redis.php on line 41

When memcache and memcached are disabled by configuration  (or not compiled in devilbox/docker-php-fpm docker image), we still see info, DB panels while we should see an error or warning message

When mysqli or pgsql are disable by configuration  (or not compiled in devilbox/docker-php-fpm docker image), we get blank page

PR to fix it will follow ...

When memcache and memcached are disabled by configuration (or not compiled in devilbox/docker-php-fpm docker image), we still see info, DB panels while we should see an error or warning message

I'm not so sure about this one.
Imo, If the container are started, they should also show up as started, regardless if PHP has a module for it.

Important info: PR 802 did not solve tools menus that have php modules requirements


⚠ Bofrost.be has degraded performance

In 7f4b7c8, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1922 ms

Resolved: Bofrost.be performance has improved in 40fb1c0 after 305 days, 12 hours, 34 minutes.


can you make a new stable release

can you make a new stable release

Hi, is it link to issue #22?

@crazy-max please make a new stable release from master....

Done with your latest PR

perfect


test-branch/execute-job/quoted-authorization/64af63a8-087a-4757-90a2-1b59782672f9

PR for testing 89228b679c51d3ea52710c174e0adb3bec261e3b

/canonical/self-hosted-runners/run-workflows 89228b679c51d3ea52710c174e0adb3bec261e3b


Project System: Should be able to copy and paste references

From @davkean on March 24, 2016 17:6
It would be great to be able to able select one or more references and paste them to another project. Clearly need to be a little smarter around NuGet packages (we should install the packages, not reference the same binaries).
Copied from original issue: dotnet/roslyn#10063

Also see: https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/2529879-allow-drag-drop-project-references-between-project


[KYUUBI #6126] Filter blank engine home env

:mag: Description
Issue References 🔗

This pull request fixes #6126
Describe Your Solution 🔧
Filter blank engine home env
Types of changes :bookmark:

[X] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Test Plan 🧪
Behavior Without This Pull Request :coffin:
Behavior With This Pull Request :tada:
Related Unit Tests

Checklist 📝

[X] This patch was not authored or co-authored using Generative Tooling

Be nice. Be informative.

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

Project coverage is 61.11%.  Consider uploading reports for the commit a42a8a6 to get more accurate results

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #6127      +/-   ##
============================================
- Coverage     61.15%   61.11%   -0.05%
  Complexity       23       23
============================================
  Files           624      624
  Lines         37247    37247
  Branches       5042     5042
============================================
- Hits          22780    22762      -18
- Misses        12014    12029      +15
- Partials       2453     2456       +3

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

Thanks, merged to master/1.8


Create persistence.py

Made an example of how to do an interaction user check that works forever using custom ids.

This is already possible with
 if interaction.from_originator:
    await interaction.response.send('You are the original owner of this interaction.')


Space without space manager

It is possible to have a space without space owner
Steps to reproduce:

The space has two space manager
Space manager A removes the rights from space manager B
Space manager B removes at the same time the rights from space manager A
After refresh the space has no space manager

@NannaBarz we need your help here. It looks like a blocking issue for ocis but I cannot reproduce it locally. Can you add some insights on how we can reproduce it? It seems complicated as both request need to be processed at the same time...

On https://0001.schule.owncloud.works/ I created a Space "Test Space"
I added k.wulf and gave her "kann verwalten" rights

Now she remove her rights to "kann anzeigen"
And I removed mine to "kann anzeigen"
After a refresh both have "kann anzeigen" rights and no Spaceadmin is there

I'm sorry that I wrote it wrong in the first post.

Right! Big Facepalm 🤦
@kobergj @kulmann we did something interesting.
Changes on the space permissions are using POST Requests, which in the backend triggers addSpaceMember(). This method does not check for a remaining manager. removeSpaceMember() checks it.
This only works if Anja and Katharina Wulf do not reload the page, because the web client doesn't show the operation when only one manager is present. That the backend allows that operation is also not correct.
Next finding: When i implement  a check the backend returns Status 200 and an error inside the ocs error payload. The webUI doesn't show that error.
<?xml version="1.0" encoding="UTF-8"?>
<ocs>
  <meta>
    <status>error</status>
    <statuscode>403</statuscode>
    <message>can't remove the last manager</message>
  </meta>
</ocs>

@kobergj quick draft for a fix in https://github.com/cs3org/reva/pull/3917

Hehe. Ja, I found that out too. Looks like we did some double work. Had some comments on the fix. I'll assign this ticket to you since  you seem eager to take it :wink:

Needing to expect / check for an error after having a 200 status code is a pretty weird requirement 😢

Reading the PR it should return 403 not 200. Where does the 200 come from?

Fix is in ocis master


Plugin misreporting error when applying value through a variable

Take the following example;
uriString.append(String.format("file://%s?startingDirectoryMustExist=true&fileExist=%s&autoCreate=false", directoryTransportDestination.location, directoryTransportDestination.fileExists));
The plugin reporting that this is incorrect when the code is correct - also, intellij allows you to supress errors but the plugin has no such feature which could solve the above.
This is quite a serious bug as it then marks the entire package as having an error.

It's a known issue that we not able to runtime compile URI with variables and property placeholders for validation and completion
We properly need to find a way to suppress to start with.

You are a bit of the beaten track where you build some url yourself using String.format.
Camel has toF to fromF that is using string format style.
But yeah we can try to make IDEA plugin detect its String.format and do similar as it does for toF and fromF today


[question] Pendulum that swings indefinitely without loss of energy?

I created a pendulum composite (based on newtonsCradle with just one pendulum). How can I make "Composites.newtonsCradle" with just one pendulum swing indefinitely? I tried setting all friction* properties to zero but the pendulum slows down and stops swinging.
In another scenario, I use the same pendulum in a world without gravity and friction by applying a force. I wish to make the ball orbit around fulcrum with constant angular velocity. Here also the ball slows down to complete rest.

Setting random properties to 0 or Infinity should do the trick in the end. What about inertia?

Did you try copy the code from Composites.newtonsCradle and change frictionAir to 0?
I suspect that energy may be incorrectly lost because conservation of energy isn't perfect, maybe increasing engine.positionIterations or engine.velocityIterations or engine.constraintIterations might help?

I looked into this some more and there's definitely some energy loss happening. My guess it is within the constraint resolver and the collision resolver. Tricky to improve this though, there may need to be some compensation techniques implemented into the engine.
For anyone wanting something like this, I'd suggest doing what I mentioned in the above comment and also periodically adding small additional forces to replace the lost energy (e.g. a slight sideways push every oscillation).

Can anybody show me the code in matter.js of creating an oscillating pendulum


Honor custom types for array items

Previously this only worked for protocol objects; now it also works for parameters and in-line request bodies.
Addresses https://github.com/guardrail-dev/guardrail/issues/738

Ugh, so this does seem to break things, but because we were arguably doing questionably-wrong things previously.  Every array param was always Iterable[String] even when it was not a string. I guess we just never had tests for those cases?
But now that it does the right thing, the defaults break when the real type isn't String, e.g.:
[error] /home/brian/src/twilio/guardrail/modules/sample-akkaHttp/target/generated/examples/client/akkaHttp/pet/PetClient.scala:88:61: type mismatch;
[error]  found   : String("available")
[error]  required: examples.client.akkaHttp.definitions.PetStatus
[error]   def findPetsByStatus(status: Iterable[PetStatus] = Vector("available"), headers: List[HttpHeader] = Nil): EitherT[Future, Either[Throwable, HttpResponse], FindPetsByStatusResponse] = {

And also it can't properly generate routes on the server for non-string params:
[error] /home/brian/src/twilio/guardrail/modules/sample-akkaHttp/target/generated/issues/issue249/server/akkaHttp/Routes.scala:35:106: type mismatch;
[error]  found   : akka.http.scaladsl.common.RepeatedValueReceptacle[issues.issue249.server.akkaHttp.definitions.Baz]
[error]  required: akka.http.scaladsl.server.directives.ParameterDirectives.ParamSpec
[error]       path("foo")(get(parameter(Symbol("bar").as[_root_.issues.issue249.server.akkaHttp.definitions.Baz].*).map(xs => Option(xs).filterNot(_.isEmpty).map(x => x.toVector)).apply(bar => discardEntity(complete(handler.doFoo(DoFooResponse)(bar))))))

I'm actually surprised the latter thing doesn't work, because I thought you were generating akka unmarshallers automatically from circe decoders?

@kelnos This is definitely done for non-array members, though I've had to restrict the Directives stuff quite a bit to prevent overeager JSON decoders, for instance requiring JSON-encoded path parameters like /foo/%22bar%22/baz (JSON string literals, including quotes)
I'll take a look at this sometime this week, thank you for driving this

Ah, makes sense.  Just to summarize, there are three issues:

This will cause server parameters to use the 'abstract' type Iterable for the types of route params, which definitely will break Java Vavr, not sure about others.
Scala default arg values are now broken when the type isn't String.
akka-http doesn't have the required unmarshallers in place to handle e.g. enum query parameters.

Going to close this in favor of #1407, all functionality here should be reflected in the new unified codepath.


the displayed FeatureCollection are images ?

I am building documentation based on geemap to display some information coming from GEE. 2 relevant lib here are pygaul and pygadm.
Let's have a look to the documentation of pygadm and specifically the part where I explain how to load GADM data into GEE: https://pygadm.readthedocs.io/en/latest/usage.html#simplify-geometry
If your computer is in light mode you will see the following:

Now turn the documentation to dark theme:

The basemaps disapears behind a gray background. It's related to an issue raised in the pydata-sphinx-theme: https://github.com/pydata/pydata-sphinx-theme/issues/1578
So I understand that the featureCollection are not displayed as vectors data but as images? Is it a wanted feature?

This doesn't seems a geemap/ipyleaflet issue but rather a Sphinx issue. All Earth Engine layers are just tile layers like the basemap layers, which are png tiles. Both Earth vector and raster data are rendered as png tiles. You can use Map.layers to see the tile URLs.

The answer to your question is: yes, Earth Engine feature collections are rendered as images, just like OpenSteetMap is rendered as images. You can open the network tab in Chrome to see the png tiles that requested in real time based on the map view and zoom level.

My point was that ipyleaflet offers other options to display vector data, namely:

geoData: https://ipyleaflet.readthedocs.io/en/latest/layers/geodata.html
GeoJson: https://ipyleaflet.readthedocs.io/en/latest/layers/geo_json.html
VectorTileLayer: https://ipyleaflet.readthedocs.io/en/latest/layers/vector_tile.html

That are all dedicated to vector data specifically. A use case where the current implementation would be for me an issue is when I crawl the layers in my geemap object and try to split the vectors from the images. It would not be possible as they are all TileLayer.
Also note that leaflet always displays vectors on top of image which is not the case if everything is a TileLayer.

Ipyleaflet geojson and geodata for rendering vector data are not scalable. It simply dumps all data into the html. They are only suitable for tiny vector datasets (a few MBs). ipyleaflet simply can't render large vector datasets. Vector tiles are scalable, but Earth Engine does not generate vector tiles, so the vector tile option can't be considered here.

If you really want to render ee.FeatureCollection as vector, you can use geemap.ee_to_gdf() and then Map.add_gdf(). However, the same ipyleaflet limitation applies. Not good for large vector datasets.

fair enough as long as it's under control and a clear technical decision I'm good, let me close this issue.


Build fails with any libgit2 version other than v1.0

I'm running OSX Catalina with libgit2 v1.1.0:
$ brew info --installed --json | jq '.[] | select(.name == "libgit2") | .versions'
{
  "stable": "1.1.0",
  "head": "HEAD",
  "bottle": true
}

I cannot build askgit due to a git2go version incompatibility with my libgit2 version:
$ make build
go build -v -tags="sqlite_vtable,static,system_libgit2" askgit.go
github.com/augmentable-dev/askgit/pkg/gitlog
github.com/libgit2/git2go/v30
# github.com/libgit2/git2go/v30
../../../../go/pkg/mod/github.com/libgit2/git2go/v30@v30.2.2/git_system_static.go:11:3: error: "Invalid libgit2 version; this git2go supports libgit2 v1.0"
# error "Invalid libgit2 version; this git2go supports libgit2 v1.0"
  ^
1 error generated.
make: *** [build] Error 1

The git2go module has very strict libgit2 version dependencies: https://github.com/libgit2/git2go#which-go-version-to-use
I was able to successfully build askgit by replacing github.com/libgit2/git2go/v30 with github.com/libgit2/git2go/v31, but I imagine this would break things for those with older libgit2 versions.

hi @kevin-cantwell thanks for pointing this out! Looks like we should upgrade to github.com/libgit2/git2go/v31 which will then require a 1.1 libgit2 to build.


[move-prover] Remove last usage of into_module

The method CompiledScript::into_module is deprecated and no longer used inside of the Move VM. Unfortunately, its usage within the prover is more difficult to expunge, and would involve rewriting several parts to operate upon BinaryIndexedView, a facade over either a module or script.
For now, instead, move the logic in CompiledScript::into_module into a private function in the prover, and delete the deprecated method.
This pull request depends on #8629 and #8654.

Oh wait, sorry, I'm not sure I needed to re-request review there -- I got confused about the CI's requirements, my bad 😅

/land

Ah, with the Visibility::Script change, the CI is not happy with the docs generated because those functions now have a prefix of public(script). You might need a UPBL=1 cargo test in the language/move-prover/docgen dir to update the baseline files.

:broken_heart: Test Failed - ci-test

/land


Windows Namespace missing

Sorry it may be simple error. i am getting "The type or namespace name Windows' does not exist in the namespace System'. Are you missing an assembly reference?"
can any one help me in this.
Thanks

Hi,
Can you try new package i just commit. Windows dll's platform checks was wrong in the old package.
If this not solves your issue, be sure "Plugins/Ookii.Dialogs.dll" and "Plugins/System.Windows.Forms.dll" platform checks are correct and PlayerSettings/Api Compatibility level is .NET 2.0


Can not click on button controls with iPad (iOS 9)

how to reproduce

play video (controlbar is hidden)
click on vidéo (control bar is displayed)
Attempt to click on volume, pause or fullscreen button does not work

+1

I have the same issue on my iPad Pro 12 using this player with Youtube. The Youtube watermark blocks the fullscreen and volume controls, when you attempt to go full screen you end up hitting the Youtube watermark and opening Youtube.

What version of Plyr are you guys using? It's not ideal but Vimeo and YouTube don't currently have full UI support due to an issue with iOS and <iframe>s:
https://github.com/Selz/plyr/issues/183
I'm looking into whether I can improve this somehow...

hi,
I used plyr.io on my iPad 3
Envoyé de mon S7 Edge via Outlook Mobile
On Sat, Nov 19, 2016 at 3:46 PM +0100, "Aaron Bielert"<EMAIL_ADDRESS>wrote:
I have the same issue on my iPad Pro 12 using this player with Youtube. The Youtube watermark blocks the fullscreen and volume controls, when you attempt to go full screen you end up hitting the Youtube watermark and opening Youtube.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Latest Version...

OK what type of video are are we talking about here? This is why it helps to put as much detail into the issues as possible. I wrote a template to help but people seem incapable of filling it out and instead delete it all and replace it with vague details.
YouTube and Vimeo are currently not supported so you will get the native embed UI on iOS. This is because, for whatever reason, programmatically playing the video via API does not work and iOS wants a click of the iframe instead. This may have changed in iOS 10 so I'm looking into it.

I'm on iOS 10 using Youtube. Full Screen doesn't work with any custom player, I know that for a fact as so far Plyr is the only one that works full screen because it uses the YT player on iOS. But the watermark is covering the buttons to control the volume & full screen. And I'm having the same issue as the thread starter, the controls keep disappearing and when you click it pauses the video.

Can you try this again in the latest version? I think it should be fixed. Re-open if not. I've re-enabled YouTube on iPad with iOS10 + as it seems to work ok now.

Works perfect now, thank you so much...


compile error in RawVolumeFile (master branch)

Macbook, SSE target, clang compiler.
Check out master, enable volume viewer and loaders module, then I get:
/Users/wald/Projects/ingowald-ospray/modules/loaders/RawVolumeFile.cpp:98:5: warning: cannot delete expression with
pointer-to-'void' type 'void *'
delete [] voxelData;
Probably appears similarly in other branches.

Note its just a warning, not a compile error as the title might indicate.

This is fixed in devel (1ab79d13).


Sponsorship token not recognized in 113.2

Describe the bug
After upgrading from 112.5 to 113.2. the sponsorship token for the go-e charger is not recognized anymore.
Steps to reproduce
pi@evcc:/etc $ evcc -l debug charger
[main  ] INFO 2023/03/01 11:29:13 evcc 0.113.2
[main  ] INFO 2023/03/01 11:29:13 using config file: /home/pi/evcc.yaml
[db    ] INFO 2023/03/01 11:29:14 using sqlite database: /home/pi/.evcc/evcc.db
[main  ] FATAL 2023/03/01 11:29:14 cannot create charger 'wallbox6': cannot create charger 'template': cannot create charger 'go-e': sponsorship required, see https://github.com/evcc-io/evcc#sponsorship
Configuration details
# open evcc at http://evcc.local:7070
network:
  schema: http
  host: evcc.local # .local suffix announces the hostname on MDNS
  port: 7070

log: info
levels:
  cache: error

# unique installation id
plant: ef00f8015fdc609b97df1d79b9a70e71b76c5a2f78b4e665531b3b819a45b343

interval: 10s # control cycle interval

sponsortoken: blabla
# sponsors can set telemetry: true to enable anonymous data aggregation
# see https://github.com/evcc-io/evcc/discussions/4554
telemetry: true

meters:
- type: template
  template: sonnenbatterie
  usage: grid
  host: <IP_ADDRESS>
  port: 8080
  name: grid1
- type: template
  template: sonnenbatterie
  usage: pv
  host: <IP_ADDRESS>
  port: 8080
  name: pv2
- type: template
  template: sonnenbatterie
  usage: battery
  host: <IP_ADDRESS>
  port: 8080
  name: battery3

chargers:
- type: template
  template: go-e
  host: <IP_ADDRESS>
  name: wallbox6
- type: template
  template: go-e-gemini
  host: <IP_ADDRESS>
  name: wallbox7

vehicles:
- type: template
  template: etron
  title: audi
  user<EMAIL_ADDRESS>
  password: blabla
  capacity: 11.4
  phases: 3
  icon: car
  cache: 15m
  mode: pv
  minSoC: 0
  targetSoC: 100
  minCurrent: 6
  maxCurrent: 16
  name: ev4
- type: template
  template: cupra
  title: cupra
  user<EMAIL_ADDRESS>
  password: blabla
  capacity: 58
  phases: 3
  icon: car
  cache: 15m
  mode: pv
  minSoC: 20
  targetSoC: 80
  minCurrent: 6
  maxCurrent: 16
  name: ev5

loadpoints:
- title: GarageL
  charger: wallbox6
  vehicle: ev4
  mode: pv
  phases: 3
  mincurrent: 6
  maxcurrent: 16
  resetOnDisconnect: true
- title: GarageR
  charger: wallbox7
  vehicle: ev5
  mode: pv
  phases: 0
  mincurrent: 6
  maxcurrent: 16
  resetOnDisconnect: true

site:
  title: WB8
  meters:
    grid: grid1
    pvs:
    - pv2
    batteries:
    - battery3
  residualPower: 100 # regelpunkt um 100W Richtung Netzeinspeisung verschoben - Ziel: weniger Netzbezug
  bufferSoC: 95 # Hausbatterie wird oberhalb SoC als Puffer genutzt
  prioritySoC: 75 # Hausbatterie bekommt bis zum SoC Priorität beim laden

tariffs:
  currency: EUR # (default EUR)
  grid:
    # static grid price
    type: fixed
    price: 0.2821 # [currency]/kWh

  feedin:
    # rate for feeding excess (pv) energy to the grid
    type: fixed
    price: 0.0615 # [currency]/kWh

Log details
pi@evcc:/etc $ evcc -l debug charger
[main  ] INFO 2023/03/01 11:29:13 evcc 0.113.2
[main  ] INFO 2023/03/01 11:29:13 using config file: /home/pi/evcc.yaml
[db    ] INFO 2023/03/01 11:29:14 using sqlite database: /home/pi/.evcc/evcc.db
[main  ] FATAL 2023/03/01 11:29:14 cannot create charger 'wallbox6': cannot create charger 'template': cannot create charger 'go-e': sponsorship required, see https://github.com/evcc-io/evcc#sponsorship

What type of operating system are you running?
Linux
Version
0.113.2

Please try new token from https://sponsor.evcc.io. Potentially your sponsorship was canceled due to Github no longer supporting Paypal? Please contact<EMAIL_ADDRESS>if problems persist.


[ENG-473] fix registrations tab paginated list

Purpose
#671 was successful in restoring almost all of the paginated list formatting to match what is on master, but one small issue with the bottom margin on the registrations tab registration list persists. This PR solves this by removing the extraneous ul wrapper from the draft registrations list (which was adding a 15px bottom margin in the wrong place) and instead adding a 15px bottom margin to the whole registration tab container.
Summary of Changes

remove extraneous ul wrapper on draft registrations list
add 15px bottom margin to registrations container

Side Effects
None expected.
Feature Flags
n/a
QA Notes
n/a
Ticket
https://openscience.atlassian.net/browse/ENG-473
Reviewer Checklist

[ ] meets requirements
[ ] easy to understand
[ ] DRY
[ ] testable and includes test(s) (visual regression, tested by Percy)
[ ] changes described in CHANGELOG.md (fixing regression in unreleased code)

Pull Request Test Coverage Report for Build 2930

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.566%

Totals

Change from base Build 2929:
0.0%

Covered Lines:
6143

Relevant Lines:
7692

💛  - Coveralls


PartitionKey for cosmosDB state-store and actors not working

In what area(s)?

/area runtime

/area operator
/area placement
/area docs
/area test-and-release

What version of Dapr?

0.10.0 java sdk
1.0.0-rc.1 runtime

0.2.x
Output of git describe --dirty

Expected Behavior
Reminders and timers are getting created without errors in cosmosDB
Actual Behavior
When calling
    public void registerTimer(TimerConfig timerConfig) {
        super.registerActorTimer(
                timerConfig.getName(),
                timerConfig.getCallback(),
                timerConfig,
                timerConfig.getDueTimeAsDuration(),
                Duration.ZERO

        )

The sidecar failed to call cosomosDB successfully. (Same for timers)
dapr_rt_error_reminder.log
== DAPR == time="2020-12-01T12:10:33.2941616+01:00" level=debug msg="{ERR_ACTOR_REMINDER_CREATE error creating actor reminder: BadRequest, Message: {\"Errors\":[\"PartitionKey extracted from document doesn't match the one specified in the header\"]}\r\nActivityId: 8f7ca996-4f99-4645-9461-c49ace5fc0aa, Request URI: /apps/a96352c4-c603-40a4-af2f-557a0960fb85/services/2e172cdb-353d-4622-b7e5-b10c1751f576/partitions/6a02dd51-01c6-4927-9f44-c6563fc9b9ec/replicas/132509002708677679p/, RequestStats: \r\nRequestStartTime: 2020-12-01T11:10:29.7047012Z, RequestEndTime: 2020-12-01T11:10:29.7047012Z,  Number of regions attempted:1\r\nResponseTime: 2020-12-01T11:10:29.7047012Z, StoreResult: StorePhysicalAddress: rntbd://cdb-ms-prod-westeurope1-fd40.documents.azure.com:14330/apps/a96352c4-c603-40a4-af2f-557a0960fb85/services/2e172cdb-353d-4622-b7e5-b10c1751f576/partitions/6a02dd51-01c6-4927-9f44-c6563fc9b9ec/replicas/132509002708677679p/, LSN: 314, GlobalCommittedLsn: 314, PartitionKeyRangeId: 0, IsValid: True, StatusCode: 400, SubStatusCode: 1001, RequestCharge: 1.24, ItemLSN: -1, SessionToken: 314, UsingLocalLSN: False, TransportException: null, ResourceType: Document, OperationType: Upsert\r\n, SDK: Microsoft.Azure.Documents.Common/2.11.0}" app_id=pol instance=NB-001237 scope=dapr.runtime.http type=log ver=1.0.0-rc.1

== DAPR == time="2020-12-01T12:10:33.51616+01:00" level=debug msg="{ERR_ACTOR_REMINDER_CREATE error creating actor reminder: BadRequest, Message: {\"Errors\":[\"PartitionKey extracted from document doesn't match the one specified in the header\"]}\r\nActivityId: 0cc6de1b-cd2d-45fa-80d4-d4c1400da9a2, Request URI: /apps/a96352c4-c603-40a4-af2f-557a0960fb85/services/2e172cdb-353d-4622-b7e5-b10c1751f576/partitions/6a02dd51-01c6-4927-9f44-c6563fc9b9ec/replicas/132509002708677679p/, RequestStats: \r\nRequestStartTime: 2020-12-01T11:10:29.9146824Z, RequestEndTime: 2020-12-01T11:10:29.9146824Z,  Number of regions attempted:1\r\nResponseTime: 2020-12-01T11:10:29.9146824Z, StoreResult: StorePhysicalAddress: rntbd://cdb-ms-prod-westeurope1-fd40.documents.azure.com:14330/apps/a96352c4-c603-40a4-af2f-557a0960fb85/services/2e172cdb-353d-4622-b7e5-b10c1751f576/partitions/6a02dd51-01c6-4927-9f44-c6563fc9b9ec/replicas/132509002708677679p/, LSN: 314, GlobalCommittedLsn: 314, PartitionKeyRangeId: 0, IsValid: True, StatusCode: 400, SubStatusCode: 1001, RequestCharge: 1.24, ItemLSN: -1, SessionToken: 314, UsingLocalLSN: False, TransportException: null, ResourceType: Document, OperationType: Upsert\r\n, SDK: Microsoft.Azure.Documents.Common/2.11.0}" app_id=pol instance=NB-001237 scope=dapr.runtime.http type=log ver=1.0.0-rc.1

Steps to Reproduce the Problem
create a partitioned databes in a cosmosDB 3.2 instance. Add a collection and define a partitionKey named partitionKey
provide a statestore.yaml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
  namespace: core
spec:
  type: state.azure.cosmosdb
  metadata:
  - name: url
    value: https://my.documents.azure.com:443
  - name: masterKey
    value: <MY-SECRET==>
  - name: database
    value: <MY-DB>
  - name: collection
    value: <MY-COLLECTION>
  - name: actorStateStore
    value: "true"

Also, as documented a direct POST to the sidecar runs into the same issue
POST http://localhost:[MY_LOCAL_PORT]/v1.0/state/statestore
Content-Type: application/json

[
  {
    "key": "nihilus",
    "value": "darth",
    "metadata": {
      "partitionKey": "/partitionKey"
    }
  }
]

POST http://localhost:3001/v1.0/state/statestore

HTTP/1.1 500 Internal Server Error
Server: fasthttp
Date: Tue, 01 Dec 2020 11:27:52 GMT
Content-Type: application/json
Content-Length: 1210
Traceparent: 00-ec44b35f3f4c768e0d82f3198e0aedf4-12d4709ec9cafc54-01

{
  "errorCode": "ERR_STATE_SAVE",
  "message": "failed saving state in state store statestore: BadRequest, Message: {\"Errors\":[\"PartitionKey extracted from document doesn't match the one specified in the header\"]}\r\nActivityId: d609fbf6-c534-4e31-b7d1-8dfd6e32f722, Request URI: /apps/a96352c4-c603-40a4-af2f-557a0960fb85/services/2e172cdb-353d-4622-b7e5-b10c1751f576/partitions/6a02dd51-01c6-4927-9f44-c6563fc9b9ec/replicas/132509002708677679p/, RequestStats: \r\nRequestStartTime: 2020-12-01T11:27:50.2023646Z, RequestEndTime: 2020-12-01T11:27:50.2323532Z,  Number of regions attempted:1\r\nResponseTime: 2020-12-01T11:27:50.2323532Z, StoreResult: StorePhysicalAddress: rntbd://zzz.documents.azure.com:14330/apps/a96352c4-c603-40a4-af2f-557a0960fb85/services/2e172cdb-353d-4622-b7e5-b10c1751f576/partitions/6a02dd51-01c6-4927-9f44-c6563fc9b9ec/replicas/132509002708677679p/, LSN: 316, GlobalCommittedLsn: 316, PartitionKeyRangeId: 0, IsValid: True, StatusCode: 400, SubStatusCode: 1001, RequestCharge: 1.24, ItemLSN: -1, SessionToken: 316, UsingLocalLSN: False, TransportException: null, ResourceType: Document, OperationType: Upsert\r\n, SDK: Microsoft.Azure.Documents.Common/2.11.0"
}

Response code: 500 (Internal Server Error); Time: 342ms; Content length: 1210 bytes

Release Note

RELEASE NOTE:

@javageek79  Can you paste the Collection's settings here? This is an example of one that is correctly configured with /partitionKey.

@javageek79 I see what your issue is. You are using the MongoDB version of CosmosDB, and not the SQL API version. The MongoDB Cosmos API has a shard key which is not compatible with the partition key used by the SQL API.

@yaron2, so, does this mean, that with our setup, we couldn't use cosmosDB as a statestore?

@yaron2, so, does this mean, that with our setup, we couldn't use cosmosDB as a statestore?

It means you need to create a CosmosDB with the SQL API version.

this you mean?

this you mean?

Correct

OK. I am closing this issue. @javageek79 Please, reopen if issue continues after the change proposed by @yaron2.


Bug fix release 2.0.1

Should include https://github.com/julien-truffaut/Monocle/pull/793 and all other backward compatible changes.

@enzief 2.0.1 is released, can you please check it fixes your issue?
I will make a release note tomorrow.

Yes it works now on my end. Thank you!


Random fixes

Please ignore Travis CI checking. I forgot disabling it.
Futures patches should not include Travis CI animymore.

LGTM


Simple hyperlink click-and-wait not working

I am testing out Puppeteer for the first time, and thought I'd try a simple scenario: I want to open a web page that has a hyperlink on it, click the hyperlink, and wait for the page to refresh. Below is the sample code I am using:
var browser = await puppeteer.launch();
var myPage = await browser.newPage();
myPage.setUserAgent(
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3');
await myPage.goto('https://www.simplii.com');
var result = await myPage.clickAndWaitForNavigation(".joinSimpliiLink");
print(myPage.url);
print(result);

I expect the value of result to get printed, which should give me the success status from the navigation operation, and the myPage variable to be updated to point to the target URL for the hyperlink selected. What I get instead is an exception:
Unhandled exception:
Context is disposed

I'm running on a Mac with the last OS, Dart v3.3, and the latest version of puppeteer-dart in case this helps isolate the problem.

I also tried a variation of this using the waitForSelector method as well, with similar results:
print("Click and wait");
var result = await myPage.waitForSelector(".joinSimpliiLink",
    visible: true, hidden: false);
if (result == null) {
    print("Error not found");
    return;
}
print("Clicking...");
await Future.wait([myPage.waitForNavigation(), result!.click()]);
print(myPage.url);
print(result);

which produces the output:
Clicking...
Unhandled exception:
Context is disposed

which tells me the selector lookup works, but the click/waitForNavigation doesn't.

One more similar variation for comparison:
print("Click and wait");
var result = await myPage.waitForSelector(".joinSimpliiLink",
    visible: true, hidden: false);
print("clicking...");
await result!.click();
print("navigating...");
var result2 = await myPage.waitForNavigation();
print(result2.status);
print(myPage.url);

which produces:
Click and wait
clicking...
navigating...
Unhandled exception:
Context is disposed

Which further isolates the problem to the waitForNavigation method.

Intriguing...
Luckily, there is this open pull request to address that: https://github.com/xvrh/puppeteer-dart/pull/312 I'll have a look to merge it.

Can you try v3.11.0?

Seems to work now. Thanks for the quick fix!


Search boxes make columns wide

Adding a simple width:100% fixes it

Thanks for your suggestion, please create a PR with this fix proposal.

@cristim just did

Thanks @alex-jitbit
It was not submitted as a PR, but I did it in #501.

@cristim whoops, sorry forgot to click one more button, appreciate


localhost path for testing Functions?

What are the paths for testing localhost Functions using Postman? I have a Timer-trigged Function that I'd like to manually start, but I can't find the docs for localhost path.
Thank you

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

ID: f538a557-7e88-e077-6a6f-6fb14d89dbf6
Version Independent ID: 84a1693b-2795-c865-35df-3ad3b9b61e2c
Content: Manually run a non HTTP-triggered Azure Functions
Content Source: articles/azure-functions/functions-manually-run-non-http.md
Service: azure-functions
GitHub Login: @craigshoemaker
Microsoft Alias: cshoe

Hello @SeaDude ,
Could you please try the below..
'http://localhost:7071/admin/functions/Function1'

Our SME will review your feedback soon.

Thank you for the quick reply. I must be missing something.
Steps:

Using VS Code
cd to Azure Function parent directory (/news-agg-dev)
Activate .venv (.\.venv\Scripts\activate)
Start Azurite
Run func start, function starts running locally
Send POST request in Postman to URL http://localhost:7071/admin/functions/news-agg-dev

body = { "input": "" }
No headers

Response: Status 415 Unsupported media type

Strangely enough, after publishing this Function App to Azure, I am UNABLE to Disconnect the app.

Cursory internet search says maybe Function App names should avoid dashes (-) ? (If this is indeed the case, should be enforced.)

Maybe the Body-->raw-->Text format is causing this 415 Response.

Please change it to JSON and try the POST.

Bam! That really helped out! I can keep developing!
Thank you!


(Sum) when recived isn’t converted to the correct currency

If after receiving a transfer you change the currency the “when received” isn’t converted.
For example, if I receive 88.34 ILS(around 25USD) in bitcoin and I change the currency to USD it will display that it used to be 88.34 USD and not ~25 USD.

Looks like we're storing the currency value but not the currency code - we have an internal ticket for this and will hopefully get to it soon.


Allow subfolders copy

Q
A

Bug fix?
Yes

New feature?
No

BC breaks?
No

Deprecations?
No

Fixed tickets
#896

Looks like it should fix the problem I saw - I'll give it a run tomorrow when I'm back at work.


dragover and drop events not firing

I'm trying to specify handlers for the dnd-dragover and dnd-drop events, but I'm not seeing them fire. Everything else including the dnd-moved and dnd-dragstart events seem to be working as expected. Am I missing something, or should the below snippet be firing dragover and drop events?
Source:

Destination:

          <li class="actual-item-forecast-list-item forecast-item"
                  data-ng-repeat="forecast in actual.Forecasts"
                   dnd-effect-allowed="move"
                   dnd-draggable="forecast"
                   dnd-moved="forecastFromActualMoved(event, $index)"
                   dnd-dragover="forecastFromActualDragover(event, $index)"
                   dnd-drop="forecastFromActualDropped(event, $index)"
                   dnd-dragstart="forecastFromActualDragstart(event, $index)">

Edit - I guess you might need to see both ends? :)

Nevermind, I didn't look at the examples close enough. the events I'm looking for belong to the UI/OL not the LI.


[WFWIP-166] Value of 'soft-fail' attribute in 'elytron/trust-manager'…

… is not propagated

fixes propagation of soft-fail attribute configuration in trust-manager resource

https://issues.jboss.org/browse/WFWIP-166

@jstourac Thank you for the contribution, once we are merging to WildFly or WildFly Core we should be referencing Jira issues from the respective projects rather than the WFWIP which is more of a process specific issue.
Can you please either clone or move the WFWIP issue over to WFCORE and update the commit message and PR title?  This then looks like it should be quite quick to approve and merge.

@darranl, sorry, my bad, I should have realized it myself. I've moved wfwip issue to wfcore one and updated all relevant references. Should be ready for further steps now. Thank you! :)

@jmesnil, @darranl, anything I can do to help with this one? I believe that test failures in job with security manager are not related to these changes.

@darranl, thank you. I've just made the issue public.


Add basic support for Windows

This should be the start of Windows support for psutil-nim.
Let me know if you'd like any changes.
Happy Hacktoberfest!

Oh wow, you are the original author :grey_exclamation: Thanks for your work for real.
I just forked and rescued it because it was not compiling for a lot of time, and is a really cool lib,
I mean is not useful if it does not compile whatsoever. I have no Windows available to add that.

I really really appreciate you forking it and getting back in working order. It's good to see the library alive.
Thank you also for adding me to your repo. I'd like to continue to contribute functions as I have time. Hopefully between us and some other contributors we can bring it to feature parity with the Python version.
Thanks again!


Revert "adds 404 error code when error is thrown in campaign.php, signup.php,…"

Reverts DoSomething/phoenix#6276
refs #6261

:+1:


rez pip reinstalls existing dependencies

If I run rez pip --install repeatedly, some of the packages dependencies get reinstalled.  For those packages, it’ll overwrite all of the files each time, but the package.py’s timestamp remains consistent.
--verbose reveals that rez pip thinks the requirements have changed:
Changes:
Changed attributes: ['requires']
Looks like get_distributions() is probably returning things in an ill-defined order based on a cache dict.
https://github.com/AcademySoftwareFoundation/rez/blob/1ecc85f638d11d70ed78d4bd9c5cdc6f32ac58c4/src/rez/vendor/distlib/database.py#L200-L220
Environment

OS Windows 10 Pro
Rez version 2.112.0
Rez python version 3.7.8

To Reproduce

rez pip --install --release ipython==8.6.0

Hi there! Just to confirm that I'm having the exactly the same problem.
Environment

Rocky Release 9.2
Rez version 3.1.1
Rez python version 3.9.18

To Reproduce

rez pip --install --python-version 3.9 --verbose torchvision==0.19.0


I lack the command to clear the conversation log if needed

/new smth like this. So I can type this and start the chat from the beginning

hi! You can use /start to start fresh :)


Update the "Contributing" link

This link pointed to a non-existent CONTRIBUTING.md file. I've updated it to point to the "contributors" section on GitHub.

Thank you for noticing!

:tada: This PR is included in version 6.0.7 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fails at unzipping cache filie

Gulp-electron fails at unzipping my cache filie. After running gulp compile, it displays:
[23:47:34] Using gulpfile ~/Projects/game/gulpfile.js
[23:47:34] Starting 'copy-assets'...
[23:47:34] Finished 'copy-assets' after 39 ms
[23:47:34] Starting 'default'...
[23:47:34] Finished 'default' after 41 ms
[23:47:34] Starting 'compile'...
[23:47:34] gulp-electron download electron electron-0.0.1-linux-x64.zip cache filie.
[23:47:36] > unzip -o /home/steve/Projects/game/cache/0.0.1/electron-0.0.1-linux-x64.zip -d /home/steve/Projects/game/cache/0.0.1/electron-0.0.1-linux-x64

/home/steve/Projects/game/node_modules/gulp-electron/lib/index.js:532
      throw new PluginError(PLUGIN_NAME, results.stderr || 'unknow error , maybe you can try delete the zip packages.');
      ^
Error: unknow error , maybe you can try delete the zip packages.

gulpfile.js:
var gulp = require("gulp");
var babel = require("gulp-babel");
var electron = require('gulp-electron');
var packageJson = require('./package.json');

gulp.task('copy-assets', function () {
  return gulp.src('src/**/*.html')
    .pipe(gulp.dest('dist'));
});

gulp.task("default", ['copy-assets'], function () {
  return gulp.src("src/**/*.js")
    .pipe(babel())
    .pipe(gulp.dest("dist"));
});

gulp.task('compile', ['default'], function() {
  return gulp.src("")
    .pipe(electron({
      src: './dist',
      packageJson: packageJson,
      release: './release',
      cache: './cache',
      version: packageJson.version,
      packaging: true,
      platforms: ['linux-x64'],
      platformResources: {
      }
    }))
      .pipe(gulp.dest(""));
});

Output of command unzip:
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
  Default action is to extract files in list, except those in xlist, to exdir;
  file[.zip] may be a wildcard.  -Z => ZipInfo mode ("unzip -Z" for usage).

  -p  extract files to pipe, no messages     -l  list files (short format)
  -f  freshen existing files, create none    -t  test compressed archive data
  -u  update files, create if necessary      -z  display archive comment only
  -v  list verbosely/show version info       -T  timestamp archive to latest
  -x  exclude files that follow (in xlist)   -d  extract files into exdir
modifiers:
  -n  never overwrite existing files         -q  quiet mode (-qq => quieter)
  -o  overwrite files WITHOUT prompting      -a  auto-convert any text files
  -j  junk paths (do not make directories)   -aa treat ALL files as text
  -U  use escapes for all non-ASCII Unicode  -UU ignore any Unicode fields
  -C  match filenames case-insensitively     -L  make (some) names lowercase
  -X  restore UID/GID info                   -V  retain VMS version numbers
  -K  keep setuid/setgid/tacky permissions   -M  pipe through "more" pager
See "unzip -hh" or unzip.txt for more help.  Examples:
  unzip data1 -x joe   => extract all files except joe from zipfile data1.zip
  unzip -p foo | more  => send contents of foo.zip via pipe into program more
  unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer

What could probably be the cause of the error?

@StephanMeijer your version is wrong. This is the electron version not your package version. See the example given in the readme.
I use the latest electron release version: 'v0.36.0',

Thank you for your support. However, I do not use this package anymore. I found another solution already.

Mind closing it?
On Dec 17, 2015, 12:04 -0500, Stephan<EMAIL_ADDRESS>wrote:

Thank you for your support. However, I do not use this package anymore. I found another solution already.
—
Reply to this email directly orview it on GitHub(https://github.com/mainyaa/gulp-electron/issues/30#issuecomment-165514960).

Closed. Thank you for your support.


add tabbar_{fg,bg}_inactive theme var

Aims to add the theme variables as described in #112
Would be cool if someone can try it out before merging

It's working, omg marry me :flushed:


HttpDuplex.end() breaks output

So playing with attach streams... specifically for docker exec, I've found that you can't end the stdin stream... The HttpDuplex.end() implementation breaks the TCP stream - not just closing this side.
So if you do the equivalent of echo "test" | docker exec CONTAINER wc -c you don't get the expected output.
Looking at the docker implementation, it seems that we should:

Set Connection: upgrade and Upgrade: tcp headers, see docker cli code.
And then just hijack the raw TCP socket and forget all about HTTP, or ensure that HttpDuplex only closes this side of the request (should be the same right?).

Either way, this seems to fix my issue:
HttpDuplex.prototype.end = function(chunk, encoding, cb) {
  var req = this.req;
  return req.end(chunk, encoding, function() {
    req.socket.end();
    if (cb) {
      cb();
    }
  });
};

Not sure why I'm having to close the TCP socket. It ought to just end on it's own.
Current code does this._output.socket.destroy(); which is probably why I miss any output arriving after stdin is closed.

Also if I do:
exec.start({stdin: true, stream: true, ...}, function(err, stream) {
  stream = stream.req.socket;
  // Attach as normally...
});

Then everything works as expected... So perhaps we don't need the HttpDuplex wrapper at all.
stream.req.socket.end() closes the stdin side of the socket as expected.

Update... I've just realized that I loose some initial output if I use stream = stream.req.socket.
So this probably have to the the upgrade thing.

@EggyLv999, any chance you can take a look at this.
I'm not sure if docker-modem is easily fixed, or we need some special methods to support docker exec.

Also having this issue, being unable to manually end the connection

Tried your fix @jonasfj, worked for me. Making a fork for now

@johnyDays, I experienced other issues with my fix. I suspect the best solution is to send the Upgrade: tcp headers as expected by docker.

I was using the logs() function to monitor logging and look for a signal that a certain container is ready for action. But it just wasn't working, there was no reliable way to close the connection that did not result in disaster. So I am now polling the logs every X seconds (with a slight modification in a fork, not to use streams) and checking that way

FYI https://github.com/mafintosh/docker-remote-api does not have this issue.

This issue is a bit old, lost track of it, since then we have implemented hijacking.
Described in here: https://github.com/apocas/dockerode#streams-goodness
Do you have this issue using hijacking?

Nope I did not try, the test I wrote back in 2015 showed the issue: https://github.com/apocas/dockerode/issues/136 https://github.com/apocas/dockerode/issues/136 the way it was re-written was not right because it did not use the stream to end the connection but the exit command.
Did

On 10 Mar 2017, at 23:00, Pedro Dias<EMAIL_ADDRESS>wrote:
This issue is a bit old, lost track of it, since then we have implemented hijacking.
Described in here: https://github.com/apocas/dockerode#streams-goodness https://github.com/apocas/dockerode#streams-goodness
Do you have this issue using hijacking?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/apocas/docker-modem/issues/48#issuecomment-285796451, or mute the thread https://github.com/notifications/unsubscribe-auth/ABJCEpEyHv7FgvG8rVfm1BLvE2Z5oMr8ks5rkcfxgaJpZM4FoQ0r.


Update Mattermost API to v4

Migrating to the v4 API is required because the recently released Mattermost 5 dropped support for the v3 API: https://docs.mattermost.com/administration/changelog.html#deprecated-features

Use new v4 endpoints
Sort loaded posts by the given order
Remove paginated user loading, instead use users/ids to load only the needed users at once
Use Personal Access Tokens instead of login

/cc @splattael
Closes #21 #23 #22

LGTM :+1:


[EPIC] Integrate the Ecosystem database into the site

To discuss and estimate:
Ecosystem database
@ennisjo created a Notion database of different Safe projects: https://www.notion.so/gnosis-safe/Safe-Ecosystem-Databases-0ee9719d2f554b33b6b0d04c5f269533
We want to display them on the website, on a new Ecosystem page (design tbd).
The working idea right now is to use GitHub as a static database, and allow the community to submit projects as pull requests. Perhaps in some structured language like Yaml.
It should be a separate repository with a special PR template.
The initial seed for that repo would be the Notion database linked above. Notion provides an API to export a DB in JSON.
Integration on the website
The website should remain a Statically Generated site. So we'll need to pre-build pages displaying the list of projects based on that new repository, but with some dynamic capabilities like search and filtering.
Requirements:

Pagination
Search
Filtering by tags
Each individual project should have its own page

How to test

Open /ecosystem on staging
Compare the page layout to the Figma design for desktop and mobile viewports
Make sure all links are added and working
Check that the pagination works and the URL parameter changes
Check that the pagination can be triggered through changing the URL parameter

Designs
https://www.figma.com/file/doceHL65jwlEbAGegLRnq2/Landing-Page?node-id=5050-10596&t=rMGDv6TmU6MfR1c6-0
Todo

[x] #175
[x] #176
[x] #177
[x] #178
[x] #179

Since the pagination is a URL parameter, reloading the page won't refresh it, This means that if the user goes through all the pages he will always have to scroll all the way down every time, which is annoying.
I'd say that the pagination should "reset" or we should put a "Show less" button that would go back 1 page.

All the links in the page open in a new tab, except for these ones

Also question: In the desing the last section "Extend Safe funtionality" shows that it should have a link. Can I assume that it was not added on purpose?

For the mobile design, the background green image is on the top right corner. In the implementation is in the center, which makes the white words harder to read:

On mobile, I tried the 3 links "integrate with Safe", "Submit your project", "Ecosystem Careers".
The Submit your project works fine, but that page shows a 404 cuz I'm not logged in to the github account. I assume it will be of public use at some point
The other 2 links for some reason open my Safe App in my iphone. I tried clearing the cache of the page, incognito mode, but I still don't understand why is opening the safe app instead of opening a new tab in my safari browser. This only happens in my phone, if I try in the Chrome emulator the links work fine.

Suggestion:
For mobile the Search bar is outside of the view of the list below because of the section with the 3 links, so that search doesn't seem related to what that list shows. I think it would be better to have the 3 links "Integrate with safe" Submit your Project" and "Ecosystem Careers" first and the search bar after, so it's close to the filtered list

Nish issue: The Search says that you can use "Categories" which is not true, it only searches in the title and descriptions of the cards.
I think is fine that is left that way since we have the checkbox for categories, but the placeholder and examples should not suggest to look for category names

Thanks for the thorough review! 💯

Since the pagination is a URL parameter, reloading the page won't refresh it, This means that if the user goes through all the pages he will always have to scroll all the way down every time, which is annoying.

The url parameter is only really there for SEO purposes so Google etc. can index all the projects. I agree that it is tedious to have to scroll to the bottom again but I would suggest we leave it for now since its not really intended to being used.

For the mobile design, the background green image is on the top right corner. In the implementation is in the center, which makes the white words harder to read:

I've adjusted the background to be smaller on mobile. Its still not 100% like in the Design but imo looks fine without obstructing the text now.

The "Integrate" and "Ecosystem" links for some reason open my Safe App in my iphone. I tried clearing the cache of the page, incognito mode, but I still don't understand why is opening the Safe app instead of opening a new tab in my Safari browser. This only happens in my phone, if I try in the Chrome phone emulator the links work fine.

I also have this issue on my phone. My best guess is its somehow linked to our domain but will try to clarify with the rest of the team.

Also for both mobile and desktop, the link "Submit your project" takes me to a page that shows a 404 if I'm not logged in to the github account. I assume it will be of public use at some point if it is in a landing page of public access.

Correct 👍

For mobile the Search bar is outside of the view of the list below because of the section with the 3 links, so that search doesn't seem related to what that list shows. I think it would be better to have the 3 links "Integrate with safe" Submit your Project" and "Ecosystem Careers" first and the search bar after, so it's close to the filtered list

Thanks, I will raise it in our design meeting today.

Nish issue: The Search says that you can use "Categories" which is not true, it only searches in the title and descriptions of the cards.

Will also raise this today

@francovenica I've pushed the fixes to this PR: https://github.com/safe-global/safe-homepage/pull/204
Are you able to test it locally?

I'll list the changes that were detailed in the chat here
The search bar was moved closer to the results
The search bar now also searches within descriptions and categories
A disclaimer was added at the bottom of the project list
All external links now open in a new tab
I checked those are fine and the page still looks good, everything else seems to be fine like the 1st time I've checked.
From my side is fine and I'll pass the ticket. Still people made some comments in this thread so if something else will change given those comments let me know


improve FAQ re: in-memory databases

Adding some additional useful information to the FAQ about how to properly use an in-memory database.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Coverage remained the same at 58.318% when pulling 062811fcbdca58aa7caadb3fa31c312ac0d5132b on rittneje:improve-faq-in-memory-shared-cache into 3fa1c550ffa69b74dc4bfd5109b4e218f32c87cf on mattn:master.

Thank you


Missing License

Hello again!
While packaging this library with Nix, I realized there is no license specified for this code. Did you intend to also license this under the Apache Source License Version 2? It would be great if you could clarify.
Thanks in advance!

@Cu3PO42
You are right. The Robocode API Bridge for Tank Royale is also licensed Apache Source License Version 2. 😊
I will make sure to add the license to the sources.

Thank you so much!


Fix command to include a space

@blakedrumm : Thanks for your contribution! The author(s) have been notified to review your proposed change.


⚠ Bofrost.lu has degraded performance

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

HTTP code: 200
Response time: 1236 ms

Resolved: Bofrost.lu performance has improved in 0182596.


Documentation on how to use UDFs

Thanks for maintaining this project!
I would like to use the UDF functionality provided here. I'm, however, struggling with understanding how to use it. I think the UDFWrappers are what I want.
Is there some code somewhere that uses these? I'd be happy to contribute with a PR with for example some tests, when I figure out how to use them.

An example inside https://github.com/JetBrains/kotlin-spark-api/tree/spark-3.2/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples would still be valuable I think :) Thanks for letting us know!

Also look at UDAF https://spark.apache.org/docs/latest/sql-ref-functions-udf-aggregate.html

Added a complete new notation, support and examples for UDFs in https://github.com/Kotlin/kotlin-spark-api/pull/152. Will be present in the next update :)
https://github.com/Kotlin/kotlin-spark-api/tree/main#user-defined-functions


Email Not Working

The email functionality doesn't seem to be working and I'm not quite sure where to start looking.  Can you let me know config files on anywhere I might look to troubleshoot?

I'm not sure it is the best answer, but I was able to work around this by commenting the following lines in the "send_email.php" file, Basically changing the if-then to just pull the sql.  I'm assuming "ENABLE_MAILING_LIST" was true for me but I don't know where or how to change that or even check it.
} else {
//select all users
//SE if (ENABLE_MAILING_LIST)
//SE $sql = "select 'everyone' as firstname, '" . MAILING_LIST . "' as email";
//SE else
$sql = "select firstname, email from " . DB_PREFIX . "users where status = 1 and userName <> 'admin'";
}

My family doesn't use the email functionality, so I don't know that I can help here. My plan eventually was to take it out since I don't maintain that functionality.  But if anyone is using it, I'll leave it and accept any pushes made for fixes by anyone that does maintain it.


Netfile osm merge

changes:

merged the NetFileScenario and OpenStreetMapScenario into the base scenario. Now, if we want to call either one, it is simply dependent on whether the osm_path or netfile parameters in net_params are actually specified.
added an assertion to make sure that a path to an osm and net.xml file aren't being specified simultaneously
moved the specification of edges_distribution in the bay bridge scenarios outside of the class and into a constant within the class's script, which is then imported and used by the appropriate run scripts.
replaced some double quotes with single quotes

Pull Request Test Coverage Report for Build 2147

54 of 72 (75.0%)  changed or added relevant lines in 5 files are covered.
4 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.3%) to 86.561%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

examples/sumo/bay_bridge.py
0
2
0.0%

flow/scenarios/base_scenario.py
47
63
74.6%

Files with Coverage Reduction
New Missed Lines
%

flow/scenarios/base_scenario.py
1
87.62%

flow/envs/bay_bridge/base.py
3
63.25%

Totals

Change from base Build 2131:
0.3%

Covered Lines:
7098

Relevant Lines:
8200

💛  - Coveralls


Graph fails on name conflicts across namespaces

I was hitting a bug where some code was passing EMPTY_STRING to the node creation function. This is meant to generate a name that is unique to this node.
However if I create most of my nodes within a node graph, and then create a node outside the graph, the names will conflict. I'll get two node1 nodes.
While my assumption is that nodes are namespaced by their container, this appears to still cause issues if the output material tries to connect to the output of node1.
The graph then fails because it is unsure which of the two node1's it should connect to.
I propose that the auto name algorithm should make the node names conflict free across the full topology OR that the connection algorithm pick the node at the correct namespace level instead.
 When I pull this mtlx file into MaterialXView, it errors because the surface material finds the first node with that name, not the first node within the same namespace.

Hi @dgovil ,
This is considered a valid graph (i.e. unique naming within the "namespace" / graph level) so it seems it's more a problem with logic for code generation and vote to fix that. There are existing unique name matching issues before so adding @niklasharrysson in.

That's good to know, thanks.

Hey @niklasharrysson ,
I looked at the code a bit and it's the same issue we've discussed before -- that of lack of appriate ShaderGraph context when dealing with nodegraphs . i.e. all ShaderNodes are in the same ShaderGraph. So the node name map will encounter the same node name more than once -- resulting in the symptom encountered here
 // We have a node downstream
        ShaderNode* downstream = getNode(downstreamNode->getName());
        if (downstream && connectingElement)
        {
            ShaderInput* input = downstream->getInput(connectingElement->getName());
            if (!input)
            {
                throw ExceptionShaderGenError("Could not find an input named '" + connectingElement->getName() +
                                              "' on downstream node '" + downstream->getName() + "'");
            }
            input->makeConnection(output);
        }

getNode() looks up by name which is not unique.

Hey @kwokcb , thanks for investigating. And yes, this will be resolved when we get to updating the ShaderGraph to keep all graph hierarchies.