Change tracking in Java

Locally, the documentation is available in by the direct link http://localhost:5173/docs/java/change-tracking
I tried to summarise important points to think on in change tracking without it to be too technical.

Not sure if we want to include the service here.. It is somewhat nasty to write handlers for it as it is hidden by default.
Diff API also ready to be published, I can add something about it here, if needed.

And maybe, the example with composition: e.g. Order -> Items is needed.

Please also mention Change Tracking in CAP on the plugins page: plugins/index.md

Here? https://cap.cloud.sap/docs/plugins/#change-tracking
Should I just mention that there is a Java version and link the main chapter?

Should I just mention that there is a Java version and link the main chapter?

Minimum would be have the Java Icon under "available for" and either link the icon to java or use the "learn more" arrow.

Should I just mention that there is a Java version and link the main chapter?

Minimum would be have the Java Icon under "available for" and either link the icon to java or use the "learn more" arrow.

I wonder how confusing it is when you see the link on top to Node.js plugin that has nothing to do with Java.

The image should link to our Maven Central dependency page
We should have a Learn More link below if applicable
The link under the headline should either be removed (Node.js icon points there already) or we should also add the Maven Central dependency link there for Java as well.

The link under the headline points to npmjs and the icon to the GitHub repo. We could add the Maven Central link also under the headline.
A learn more link makes sense, as long as there's no GitHub repo. 👍
The image is then w/o a link

The link under the headline points to npmjs and the icon to the GitHub repo.

Ah I missed this, thanks. Yeah then it makes sense to use the Maven Central link there and just keep the Image without a link in case there is no OpenSource repo. Internally we could link to the respective code, but I don't know how to separate that between external and internal capire.

It is better to agree on this. Which Maven Central. This one https://central.sonatype.com/artifact/com.sap.cds/cds-feature-change-tracking/2.7.0/overview?
Also, the audit log has the same "problem".  Telemetry? We also have an implementation.

Which Maven Central. This one https://central.sonatype.com/artifact/com.sap.cds/cds-feature-change-tracking/2.7.0/overview?

Yes, but ideally without the version: https://central.sonatype.com/artifact/com.sap.cds/cds-feature-change-tracking

For example:

Internally we could link to the respective code in our internal repositories, but I don't know how to separate that between external and internal capire.

Let's skip that and only link public repos that can also handle issues and feature requests etc then

Is this PR ready or are there open issues/questions?

For example:

Looks good to me.
@renejeglinsky could we follow this pattern for the other Java "plugins":

OData v2
Audit Log
Telemetry
DwC
Kafka

@renejeglinsky why I see lot of dead link in a PR job?


CREATE INDEX CONCURRENTLY cannot be executed within a pipeline (on Postgresql)

Describe the bug
Upon executing a set of migrations (i'm migrating from roundhouse to grate), when grate encounters a script that tries to create an index concurrently - it fails with this error:
Unhandled exception: grate.Exceptions.MigrationFailed: Migration failed due to errors:
 * 25001: CREATE INDEX CONCURRENTLY cannot be executed within a pipeline
 ---> Npgsql.PostgresException (0x80004005): 25001: CREATE INDEX CONCURRENTLY cannot be executed within a pipeline
   at Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|233_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
   at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
   at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
   at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
   at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
   at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken)
   at grate.Migration.AnsiSqlDatabase.ExecuteNonQuery(DbConnection conn, String sql, Nullable`1 timeout) in /home/runner/work/grate/grate/grate/Migration/AnsiSqlDatabase.cs:line 664
   at grate.Migration.AnsiSqlDatabase.ExecuteNonQuery(DbConnection conn, String sql, Nullable`1 timeout) in /home/runner/work/grate/grate/grate/Migration/AnsiSqlDatabase.cs:line 664
   at grate.Migration.AnsiSqlDatabase.RunSql(String sql, ConnectionType connectionType, TransactionHandling transactionHandling) in /home/runner/work/grate/grate/grate/Migration/AnsiSqlDatabase.cs:line 464
   at grate.Migration.DbMigrator.RunTheActualSql(String sql, String scriptName, MigrationType migrationType, Int64 versionId, ConnectionType connectionType, TransactionHandling transactionHandling) in /home/runner/work/grate/grate/grate/Migration/DbMigrator.cs:line 285
   at grate.Migration.DbMigrator.RunTheActualSql(String sql, String scriptName, MigrationType migrationType, Int64 versionId, ConnectionType connectionType, TransactionHandling transactionHandling) in /home/runner/work/grate/grate/grate/Migration/DbMigrator.cs:line 306
   at grate.Migration.DbMigrator.<>c__DisplayClass28_0.<<RunSql>g__LogAndRunSql|0>d.MoveNext() in /home/runner/work/grate/grate/grate/Migration/DbMigrator.cs:line 93
--- End of stack trace from previous location ---
   at grate.Migration.DbMigrator.RunSql(String sql, String scriptName, MigrationType migrationType, Int64 versionId, GrateEnvironment environment, ConnectionType connectionType, TransactionHandling transactionHandling) in /home/runner/work/grate/grate/grate/Migration/DbMigrator.cs:line 152
   at grate.Migration.GrateMigrator.Process(DirectoryInfo root, MigrationsFolder folder, String changeDropFolder, Int64 versionId, ConnectionType connectionType, TransactionHandling transactionHandling) in /home/runner/work/grate/grate/grate/Migration/GrateMigrator.cs:line 331
   at grate.Migration.GrateMigrator.LogAndProcess(DirectoryInfo root, MigrationsFolder folder, String changeDropFolder, Int64 versionId, ConnectionType connectionType, TransactionHandling transactionHandling) in /home/runner/work/grate/grate/grate/Migration/GrateMigrator.cs:line 306
   at grate.Migration.GrateMigrator.Migrate() in /home/runner/work/grate/grate/grate/Migration/GrateMigrator.cs:line 124
  Exception data:
    Severity: ERROR
    SqlState: 25001
    MessageText: CREATE INDEX CONCURRENTLY cannot be executed within a pipeline
    File: xact.c
    Line: 3495
    Routine: PreventInTransactionBlock
   --- End of inner exception stack trace ---
   at grate.Migration.GrateMigrator.Migrate() in /home/runner/work/grate/grate/grate/Migration/GrateMigrator.cs:line 161
   at grate.Commands.MigrateCommand.<>c__DisplayClass0_0.<<-ctor>b__0>d.MoveNext() in /home/runner/work/grate/grate/grate/Commands/MigrateCommand.cs:line 48
--- End of stack trace from previous location ---
   at System.CommandLine.NamingConventionBinder.CommandHandler.GetExitCodeAsync(Object returnValue, InvocationContext context)
   at System.CommandLine.NamingConventionBinder.ModelBindingCommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext()

To Reproduce
Use a script like this (up/3100033_indexes_on_applied_tags.sql):
DROP INDEX IF EXISTS IX_applied_tag CASCADE;
CREATE INDEX CONCURRENTLY IX_applied_tag ON public.applied_tag
	USING btree
	(
	  profile_id
	);

DROP INDEX IF EXISTS IX_applied_tag2 CASCADE;
CREATE INDEX CONCURRENTLY IX_applied_tag2 ON public.applied_tag
	USING btree
	(
	  source_id
	);

And execute against a postgres database with this commandline:
dotnet grate --sqlfilesdirectory="Scripts" --databasetype="postgresql" --connectionstring="Server=test;Port=5432;User Id=test;Password=test;Database=test" --environment="Development" --silent -ct=600

Expected behavior
The up migration script to complete successfully (as it does under roundhouse).
Desktop (please complete the following information):

OS: [e.g. macOS, Linux] Mac OS, Ventura 13.3.1 - ARM
Version: [e.g. 1.0.2] v<IP_ADDRESS>

Additional context
I've tried to find a way around this by disabling pipelining using some attribute in the connection string - but to no success, haven't found a way to do it.
I've even tried to find a way within NpgSql to disable pipelining, to no success either so far.

I have tried adding: Multiplexing=false; to the connection string - but that has no effect. Any ideas?

Possibly related to https://github.com/liquibase/liquibase/issues/3806?

And https://github.com/DbUp/DbUp/issues/680 also. Looks like a change in behaviour in minor versions of postgres which is now affecting a lot of different migrations frameworks. See also https://www.postgresql.org/message-id/4139340.1676050723%40sss.pgh.pa.us where the original reporter of the liquibase issue is raising it on the postgres mailing list.
Not sure what the resolution is! I can't even downgrade right now as I can't find an appropriate ARM64 image to use...

I'm no PostgreSQL expert, by all means, but according to https://github.com/liquibase/liquibase/issues/3806#issuecomment-1466374267 (which you refer to above), it looks like CREATE INDEX CONCURRENTLY cannot be run as a part of a batch, or a transaction (looks like that's a change in behaviour in the latest PostgreSQL minor version?).
There doesn't seem to be an equivalent of SQL Server's GO as a batch separator in PostgreSQL's SQL tools (GO is not technically a SQL keyword, but an instruction to e.g. SQL Server Management Studio to execute the previous SQL statements as a batch, and create a new one). Oracle has something similar, in the / operator, which we fixed support for a couple of versions ago in grate. Googling points me to https://stackoverflow.com/a/30723618, which says \g is supported in the psql command-line editor, but that it is not frequently used. Do you guys use it a lot?
A suggestion would be to run grate in non-transactional mode, if that could work for you, either by turning it off for the entire run using --transaction false, or only for the INDEX folder, using a custom folder configuration, overriding only the indexes folder:
grate --folders indexes=TransactionHandling:Autonomous
This should override the transaction handling for only the indexes folder
(see https://erikbra.github.io/grate/folder-configuration/#specifying-a-custom-list-of-folders)

Thanks @erikbra - that is a useful to know workaround to use non-transactional mode, I wasn't aware of that, and nice way to make it only disable for specific folders (although that won't work for our legacy setup unfortunately I think).
I think this isn't actually to do with transactions though (at least not directly) - its to do with the new pipelining connections introduced into postgres + clients I believe? I'm not exactly authoritative on this, but I have been tracking the changes as it affects our production pgbouncer setup.
Its called pipelining on the server: https://www.postgresql.org/docs/current/libpq-pipeline-mode.html
And multiplexing in npgsql (which I think is what grate uses?): https://github.com/npgsql/npgsql/issues/1982
Now, I suppose the solution might be to disable pipelining for grate (which I believe would make sense as its not trying to make masses of connections/queries in parallel) - but I'm not actually sure theres a way to do that in npgsql (I experimented with a few different query strings but nothing worked).
Does that make sense?

Hi again, @kieranbenton  - it looks like it's not really possible to turn the pipelining mode off. It looks to be enables by default if there are multiple batches in a separate SQL command sent to PostgreSQL. However, there is a batch-splitting feature in grate (inherited from RoundhousE, of course), that splits scripts with multiple statements in them into multiple commands to the server. This has only ever been working (properly) for SQL server. I have tried to make a fix to the batch splitting in PostgreSQL. It seems to solve your particular use case, but I don't use PostgreSQL a lot, and I'm a bit concerned about unintended side effects.
Do you have a large-ish PostgreSQL script suite to test this on? Could you do so if I build a test version for you?
Here is the PR with the fix: https://github.com/erikbra/grate/pull/345

Sorry, late to respond - but to confirm, this appears to have solved the issues we were having - we need to go through a full release cycle to be sure but its not regressed anything for us yet.

Lovely, @kieranbenton . I have full respect for taking a while to reply. I struggle with this myself, and in periods it's difficult to prioritise grate, as I don't get paid for working on it, and I do get paid for my day-job ;)


Thanks for the improvements to the app

Hi @BlackyHawky Thanks for the improvements to the app, you did a great job, I merged your changes into my reposity, I closed issue complete.  I'm glad you're continuing this project.  Probably in the next few months I will archive my reposity so if you like you can carry on the project.
I wanted to ask you for help on another project, even more stimulating than the clock.
If you can improve this which is the Aosp dialer https://github.com/qw123wh/Dialer-Aosp , it only works that changes such as dynamic colors need to be made and perhaps if some inconvenient permissions such as position, camera etc. can be eliminated.

@qw123wh Thank you very much for your message. ❤
I've been using this clock app for so long!
Since I taught myself the code last year, I've really wanted to make some aesthetic improvements so that the latest devices could benefit from it. The alarm even runs on Android 14, and that's an essential mission accomplished.
My first project, Heliboard, was very instructive, thanks in particular to the advices of @Helium314, the maintainer of this keyboard application.
Of course, I can't thank him enough, because without his invaluable advice, I'd have given up!

If you can improve this which is the Aosp dialer

It's funny because it was my next wish to see if I could modify the AOSP dialer. 😅
Before I do that, I'd like to see why migrating to Android X causes a display bug when creating an alarm (the alarm is not extended and the snackbar behaves strangely).
Migrating the code to Android X would solve a lot of warnings in Android Studio.
And by solving this, we could finally release a proper release version.
In any case, it will be a real pleasure to work on the AOSP Dialer. I'll certainly get to work on it in the next few weeks.
Be sure! 😉

Before I do that, I'd like to see why migrating to Android X causes a display bug when creating an alarm (the alarm is not extended and the snackbar behaves strangely). Migrating the code to Android X would solve a lot of warnings in Android Studio. And by solving this, we could finally release a proper release version.

Try to create a test branch updated to android and then there is @odmfl who is an excellent tester and has contributed to the app in the past which can help find commits and provide logs

In any case, it will be a real pleasure to work on the AOSP Dialer. I'll certainly get to work on it in the next few weeks. Be sure! 😉

This is is fantastic news, thank you ❤

So I created a new branch for migration to Android X.
Reminder: the bug to be solved is that a newly created alarm is not extended.
@odmfl: Do you think you can find out where the problem comes from? Unfortunately, I've spent a lot of hours without success. 😭

So I created a new branch for migration to Android X.
Reminder: the bug to be solved is that a newly created alarm is not extended.
@odmfl: Do you think you can find out where the problem comes from? Unfortunately, I've spent a lot of hours without success. 😭

I will investigate. I understand for now that this behavior also occurs on the lineage clock but perhaps it was intended that the alarm created not be expanded

I will investigate. I understand for now that this behavior also occurs on the lineage clock but perhaps it was intended that the alarm created not be expanded

@odmfl Thank you in advance for your time.
I'm not sure if this is the behavior LineageOS teams expected, otherwise some pieces of code would have been removed, for example in the AlarmClockFragment.java file, in the function setAdapterItems:

See code snippet

...

            // Expand the correct alarm.
            if (mExpandedAlarmId != Alarm.INVALID_ID) {
                final AlarmItemHolder aih = mItemAdapter.findItemById(mExpandedAlarmId);
                if (aih != null) {
                    mAlarmTimeClickHandler.setSelectedAlarm(aih.item);
                    aih.expand();
                } else {
                    mAlarmTimeClickHandler.setSelectedAlarm(null);
                    mExpandedAlarmId = Alarm.INVALID_ID;
                }
            }

            // Scroll to the selected alarm.
            if (mScrollToAlarmId != Alarm.INVALID_ID) {
                scrollToAlarm(mScrollToAlarmId);
                setSmoothScrollStableId(Alarm.INVALID_ID);
            }

...

In addition, the snackbar occasionally behaves badly when a new alarm is added.
I rather think they didn't pay attention to that detail.

I will investigate. I understand for now that this behavior also occurs on the lineage clock but perhaps it was intended that the alarm created not be expanded

@odmfl Thank you in advance for your time.
I'm not sure if this is the behavior LineageOS teams expected, otherwise some pieces of code would have been removed, for example in the AlarmClockFragment.java file, in the function setAdapterItems:
See code snippet
In addition, the snackbar occasionally behaves badly when a new alarm is added.
I rather think they didn't pay attention to that detail.

I discovered that the lineage clock started to suffer from the exact same bug since this commit was added, https://github.com/LineageOS/android_packages_apps_DeskClock/commit/676ae03d8722bc6830a8c150e795cc6adf3710ea basically since the clock Android 10 version
However, I discovered that there is this other omniclock clock app (historical app based partly on the aosp clock) and in this fork updated to androidx it does not suffer from this bug, perhaps the problem is precisely in AlarmClockFragment.java
https://github.com/Nilsu11/OmniClock/blob/gradle/src/org/omnirom/deskclock/AlarmClockFragment.java
I don't know if it can help, try taking a look at the code, maybe deleting the current code and replacing it with the omniclock one will solve the problem

@odmfl Thank you very much for your research.
I don't know if it will help; in any case, what I notice when comparing the 2 AlarmClockFragment files is that in Omniclock, the functions that allow you to add an alarm are (almost) all in the AlarmClockFragment file.
I'm going to try to do the same in the next few days; it's not a small modification...
Thanks again.

After a few tries, I can't solve this bug.
So I think I'll stop trying to migrate the code to AndroidX.

I don't know if it can help, try taking a look at the code, maybe deleting the current code and replacing it with the omniclock one will solve the problem

Unfortunately, this would require a huge modification and would not be a good solution.
I'm disappointed but the application works fine without it and that's the main thing.

After a few tries, I can't solve this bug. So I think I'll stop trying to migrate the code to AndroidX.

I don't know if it can help, try taking a look at the code, maybe deleting the current code and replacing it with the omniclock one will solve the problem

Unfortunately, this would require a huge modification and would not be a good solution. I'm disappointed but the application works fine without it and that's the main thing.

The important thing is that the app works correctly. As for the migration to AndroidX, don't worry, it is possible that in the future some other user will be able to find the error and make a PR. The important thing is to improve the app and make it work. I had other small improvements in mind to make but I will open separate issues

@qw123wh, @odmfl: Hi, I replaced the time selector in the application with the time selector material, but I can't change the background color of the dialog box.
Perhaps you have an idea?


update node definitions for os.tmpdir

os.tmpDir has been deprecated and os.tmpdir is available for at least way back to node 0.10.
the definition managed to survive the update in the Closure compiler definitions until these day.

Seems like there's no way this change could break anyone.  @lauraharker, could you try to import this when you get a chance?


update Gaze Object selector when nodes change; fix GazeOut plugin; Resolves #1126 and #1160 and #1232

lgtm


Lost session after login

If after login refresh page or go to another page you will lost your session.

There is a session right after login:
"{\"session_id\"=>\"1c855e684f2ba6ae5b2c9ba5f02ac2741c3934456783c8d4cec4598665c9dae9\", \"omniauth.params\"=>{}, \"omniauth.origin\"=>\"http://ossboard.dev:2300/\", \"omniauth.state\"=>\"097aa5b5e44ae3e77d646fbe25c61e03a13f9dd52da5311f\", \"_csrf_token\"=>\"b2588c9c0f98f881e52f0af7d4618b658b57906b97ffd4d581452e58beaa592b\", \"account\"=>#<Account:0x007fc959234f90 @attributes={:id=>1, :user_id=>1, :uid=>\"3938172\", :token=>\"9acdf94114dd89e0207dbd50b743611b63fb4be3\", :extended_privileges=>false}>, \"current_user\"=>#<User:0x007fc9592349a0 @attributes={:id=>1, :name=>\"Dmitriy Ivliev\", :login=>\"moofkit\", :email=>nil, :avatar_url=>\"https://avatars.githubusercontent.com/u/3938172?v=3\", :bio=>nil, :admin=>false, :created_at=>2017-02-11 10:31:04 UTC, :updated_at=>2017-02-11 10:31:04 UTC}>, \"current_path\"=>\"/\", \"__flash\"=>{\"55f0409de99b10b241c8e1f59a831c1e\"=>{}}}"

And after refresh:
"{\"session_id\"=>\"2697e6a1ffb2a3c35d1bcaf5555399f45f12549cbcaf687b7efcda533d1aff30\", \"_csrf_token\"=>\"4ec5c2e98166781cff17c6fd1e3db71e78ec538b818b42afbd9bd726474557b4\", \"current_path\"=>\"/\", \"__flash\"=>{\"6e43107ddb36abd678c4d8a28520d1cd\"=>{}}}"

And now I'm stuck. It seems that auth part of application use different session storage than others part.

Hey, thanks for bug report. I can't reproduce this bug on my local and heroku servers. Could you take this issue?

It seems like one of my browser extensions do this.
Try another browser and it works as expected. Try to find out

I supouse this issue can be closed. Because it some extension problems not project.


The JDBC database interface layer constructs incomplete scan query

When a scan query is composed in the JDBC database interface layer, the resulting query has to following shape:
SELECT * FROM "TABLE_NAME" WHERE "PRIMARY_KEY" >= "START_KEY"
This implementation causes the scan operation to return more and more results when the amount of entries in the database raises during the benchmark. As a consequence the latencies of the scan operation raise too over time (this is how the bug was detected).
I suggest the implementation should be something like the following query:
SELECT * FROM "TABLE_NAME" WHERE "PRIMARY_KEY" >= "START_KEY" ORDER BY "PRIMARY_KEY" LIMIT "MAX_SCAN_LENGTH"
This implementation takes into account the maxscanlength property and only selects the first maxscanlength properties after the startkey (order by primary key). Experiments using the MySQL database show that this implementation makes the latencies of the scan operation constant over time.

Any idea if this is still a problem @kruthar ?

@busbey, I'm looking into this one and a few other open JDBC issues. If I can reproduce this I'll look into a fix, but at this point I'm not sure if it is still an issue.

So, this is an interesting issue. First off, it does seem to be a problem still, increasing record count increases scan latency dramatically:
100 records: 		[SCAN], AverageLatency(us), 1482.5882352941176
1000 records: 		[SCAN], AverageLatency(us), 2339.490566037736
10000 records: 	[SCAN], AverageLatency(us), 6464.980392156863
100000 records: 	[SCAN], AverageLatency(us), 42759.489795918365
At first I thought why try and support a scan in SQL in the first place? SQL doesn't really do scans perse, I guess you can simulate one visually, but it is not the same as a scan in a NoSQL database like HBase. But...sounds like people are using it I guess.
In most NoSQL systems scans are useful for retrieving sets of data that are physically adjacent to each other. You just move to the start key and advance across adjacent records. To simulate grabbing adjacent keys you have to do like proposed above, GROUP BY and LIMIT. (This is another reason why it is not really a scan, you have to apply the GROUP BY to way more records then you are actually receiving back, just doesn't seem right.) Either way, that fix suggested will not work quite as expected:
mysql> select * from usertable where YCSB_KEY >= 'user4' group by YCSB_KEY limit 5;
+----------+-----------------+-----------------+-----------------+
| YCSB_KEY | FIELD1          | FIELD2          | FIELD3          |
+----------+-----------------+-----------------+-----------------+
| user4    | user4:field2:18 | user4:field1:18 | user4:field0:18 |
| user40   | user40:field2:2 | user40:field1:2 | user40:field0:2 |
| user400  | user400:field2: | user400:field1: | user400:field0: |
| user401  | user401:field2: | user401:field1: | user401:field0: |
| user402  | user402:field2: | user402:field1: | user402:field0: |
+----------+-----------------+-----------------+-----------------+

As you can see we're dealing with string sorting not numeric sorting. We can do something hackish such as:
mysql> select * from usertable where YCSB_KEY >= 'user4' group by substring(YCSB_KEY, 5, 100)*1 limit 5;
+----------+-----------------+-----------------+-----------------+
| YCSB_KEY | FIELD1          | FIELD2          | FIELD3          |
+----------+-----------------+-----------------+-----------------+
| user4    | user4:field2:18 | user4:field1:18 | user4:field0:18 |
| user5    | user5:field2:91 | user5:field1:91 | user5:field0:91 |
| user6    | user6:field2:-1 | user6:field1:-1 | user6:field0:-1 |
| user7    | user7:field2:77 | user7:field1:77 | user7:field0:77 |
| user8    | user8:field2:-1 | user8:field1:-1 | user8:field0:-1 |
+----------+-----------------+-----------------+-----------------+

Those SQL examples were made with insertorder=ordered, if that was not true then we would just be grabbing keys that ended up next to each other after hashing. In context that scan result would not really mean anything.
So, that was sort of a convoluted way of saying, my preference would be to actually leave scan() as unimplemented, SQL systems don't really have a scan functionality. But we can visually simulate a scan, I think I would use a query like:
select * from usertable where YCSB_KEY >= 'user4' group by substring(YCSB_KEY, 5, 100)*1 limit 5;

so that we grab numerically sorted keys that are adjacent to each other. The relevancy of the result would depend on insertorder but since we are sort of arbitrarily sorting anyway, I don't think it matters at that point.

I believe there are other datastore bindings that don't implement scan. I think they just throw UnsupportedOperationException. Can you put something together to have JDBC behave the same?

Yes, I would have thought that would be the proper way to do it too. There are about ten or so bindings that do not implement scan, they are not consistent on handling it but it looks like the general consensus is to log a relevant message then return failure.
This seems ok to me, the user is informed in the log as well as in the final results that something is wrong with scan.
I'm happy to make this change, I thought it might be considered a breaking change, since people are/were using it, but then again it is buggy so...
PR to follow.

Out of curiosity, do you have an index on YCSB_KEY?

In the README I pushed as well as in the example schema files in the resources folder YCSB_KEY is specified as the PRIMARY KEY which gives it an index as far as I know.

Oh, of course. Thanks.

A little more time to think on this one. A lot of my reasoning for wanting to make the scan operation unimplemented were about contextual differences an implementation and what the results returned would really mean to an application. I'm not sure that is the right way to think about this. Since YCSB is a performance testing benchmark if the scan operation CAN be implemented it probably should.
SELECT * is essentially a scan so just limiting it with LIMIT as per early suggestions on this thread is probably the best course to go here. Since we are only ever scanning over the primary keys which are indexed, we may not need any type of GROUP BY or ORDER BY, just a LIMIT.
In context this is essentially a random seek of records which may not mean anything to an application. But that part isn't important, what's important is that the performance of that action can be measured, so that a user has an idea of how a slightly altered operation that does makes sense to an application will perform.
Going to drop my current PR in favor of a new one reflecting this.

I concur with this.  select * with a limit feels like an appropriate implementation.


[DOCFIX] Add ToC and links to Upgrading doc

This DOCFIX is just for some additional clarity & hyperlinks in the "Upgrading" doc.

alluxio-bot, merge this please

alluxio-bot, cherry-pick this to branch-2.7 please


Fix: Deprecated currentlyFocusedField

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.

Here is the diff that solved my problem:
diff --git a/node_modules/react-native-keyboard-avoiding-scroll-view/dist/KeyboardAvoidingContainer.js b/node_modules/react-native-keyboard-avoiding-scroll-view/dist/KeyboardAvoidingContainer.js
index fadc258..6a9ead3 100644
--- a/node_modules/react-native-keyboard-avoiding-scroll-view/dist/KeyboardAvoidingContainer.js
+++ b/node_modules/react-native-keyboard-avoiding-scroll-view/dist/KeyboardAvoidingContainer.js
@@ -111,7 +111,10 @@ export function useKeyboardAvoidingContainerProps({ stickyFooter, containerStyle
             if (keyboardLayoutRef.current)
                 return;
             const { endCoordinates: newKeyboardLayout } = event;
-            const newFocusedTextInputNodeHandle = NativeTextInput.State.currentlyFocusedField();
+            const newFocusedTextInputNodeHandle = NativeTextInput.State.currentlyFocusedInput
+                ? findNodeHandle(NativeTextInput.State.currentlyFocusedInput())
+                : NativeTextInput.State.currentlyFocusedField();
+
             const newStickyFooterNodeHandle = findNodeHandle(stickyFooterRef.current);
             const [newFocusedTextInputLayout, newStickyFooterLayout,] = await Promise.all([
                 newFocusedTextInputNodeHandle
@@ -154,35 +157,7 @@ export function useKeyboardAvoidingContainerProps({ stickyFooter, containerStyle
             keyboardWillHideSub.remove();
         };
     }, [updateOffsets]);
-    useEffect(() => {
-        const textInputEvents = hijackTextInputEvents();
-        // We watch for the switch between two text inputs and update offsets
-        // accordingly.
-        // A switch between two text inputs happens when a keyboard is shown
-        // and another text input is currently being focused on.
-        const sub = textInputEvents.addListener('textInputDidFocus', newFocusedTextInputNodeHandle => {
-            requestAnimationFrame(async () => {
-                if (!keyboardLayoutRef.current ||
-                    !focusedTextInputLayoutRef.current) {
-                    return;
-                }
-                const newFocusedTextInputLayout = newFocusedTextInputNodeHandle
-                    ? await measureInWindow(newFocusedTextInputNodeHandle)
-                    : null;
-                focusedTextInputLayoutRef.current = newFocusedTextInputLayout
-                    ? {
-                        ...newFocusedTextInputLayout,
-                        screenY: newFocusedTextInputLayout.screenY +
-                            scrollViewOffsetRef.current,
-                    }
-                    : newFocusedTextInputLayout;
-                updateOffsets();
-            });
-        });
-        return () => {
-            sub.remove();
-        };
-    }, [scrollViewOffset, updateOffsets]);
+
     const scrollViewContentContainerStyle = useMemo(() => {
         const flatContentContainerStyleProp = StyleSheet.flatten(contentContainerStyleProp) || {};
         let scrollViewContentBottomInsetProp = 0;

This issue body was partially generated by patch-package.

+1 for this fix. Saved me some headache for sure. Thank you @anduong96


Tailwind partially built, missing css class

After building assets with npm run dev can't have access to all tailwind default class (eg tailwindcss padding).
Example the p{t|r|b|l}-{size} class is not generated for all spacing, only having some in the final theme css.

Tried to specify spacing in theme.json with no results...any ideas ?

Hey Khelil, please have a look into your tailwind.config.js. If you have jit enabled the npm run dev / prod / watch will only include the used css classes. If you want to have the complete tailwind.css framework (wich i wouldnt recommend) you need to turn off jit (just in time) mode

To add to @julianlaibach, JIT is enabled by default is you are using Tailwind CSS v3. The current version of TailPress is using Tailwind v3.

Thank you @julianlaibach @jeffreyvr got it now, and it works fine 🚀


QC: Test relationship symmetry

Overview
Siggie wrote:

We need to test at some point which relationships are not completely symmetrical with their inverses.
E.g. "Maps to" and "Mapped from"

Might want to mirror this issue in TermHub.

I found that at least for Subsumes and "Is a", they are not the inverse at all, which was quite surprising. "Is a" has many more edges.


Improving Fixer Names In 2.0

Here are my ideas. Please discuss! :)

Current Name
Proposed Name

eof_ending
single_eol_at_eof

function_call_space
no_spaces_after_method_name

function_declaration
closure_definition_spacing

linefeed
unix_line_endings

multiple_use
single_statement_per_import

parenthesis
no_spaces_inside_parenthesis

trailing_spaces
no_trailing_whitespace

visibility
visibility_required

double_arrow_multiline_whitespaces
double_arrow_multiline_whitespace

duplicate_semicolon
no_duplicate_semicolons

multiline_array_trailing_comma
trailing_comma_multiline_array

namespace_no_leading_whitespace
no_leading_namespace_whitespace

single_array_no_trailing_comma
no_trailing_comma_single_array

multiline_spaces_before_semicolon
no_whitespace_before_semicolons

This thread is very important.
We need to come back here after new pack of phpdoc fixers will be merged.

UnaryOperatorsSpacesFixer vs. OperatorsSpacesFixer vs. TernarySpacesFixer..

@GrahamCampbell could you apply @stof's and @gharlan's propositions in first msg please?

visibility vs visibility_required
this fixer does not only add missing visibility, but also handle sequence of visibility, abstract, static...

It also changes things like var $foo; to public $foo;.

this fixer does not only add missing visibility, but also handle sequence of visibility, abstract, static...

Could we abstract the order changing stuff to another fixer?

That would be great, but then:

fixer that does ordering will need to be enhanced to support non-perfect syntax (eg without visibility) or force that extracted fixers to run
sb will need to split the fixer

Both take time, and while idea is cool, the simply renaming is less time consuming.

I like the proposal from @GrahamCampbell for the new names :+1: , but  Im with stof and ceeram.

Shall we also discuss names of fixers about blanklines

Yeh. I think we should go with empty rather than blank everywhere. :)

I like empty over blank. One thing to consider is that PSR-2 (AFAIK the only PSR dealing with blank/empty lines) uses blank line throughout. It might be confusing for users to name this different here then it is called in the PSR?

As per https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues/1360
there is a mistake in the initial post
"double_arrow_multiline_whitespaces"
should be
"double_arrow_no_multiline_whitespace"
´``

Also see the other semantic tips.

some class name renaming suggestions

current
new

NoEmptyLinesAfterPhpdocsFixer
NoBlankLinesAfterPhpdocsFixer

ExtraEmptyLinesFixer
ExtraBlankLinesFixer

RemoveLinesBetweenUsesFixer
RemoveBlankLinesBetweenUsesFixer

BlanklineAfterOpenTagFixer
BlankLineAfterOpenTagFixer

no changes needed:
NoBlankLinesAfterClassOpeningFixer
NoBlankLinesBeforeNamespaceFixer
SingleBlankLineBeforeNamespaceFixer

I think fixer renaming should be handled in the most BC way possible:

add a way for fixers to specify an alternate name in 1.x (allowing fixers to provide their new names in 1.x already).
rename the classes in 2.x and keep the old 1.x name as an alternate name for now

The config resolver would build a map of alternate names to real names and replace alternate names with their real names when finding them in the --fixers option.
This would allow a more user-friendly upgrade path. What do you think @keradus @GrahamCampbell ?

Why the fixers option, but not in .php_cs file?
Upgrade from 1.x to 2.x will not be easy and one way or another user will still must to change a lot of things, I do not see big benefits for introducing that. We have too many non-good part of code which we cannot change to not break BC and we are changing most of them in 2.x, so it would be great to not introduce them there too.

I agree.
A simple mapping list (old => new) should suffice for everyone to update their sniff names in use.

I think 2.x is quite ready for such renames. Could anyone propose a complete renames table?

@keradus Is a BC planned for this? Would be better.
@GrahamCampbell I suppose you will add it on your aliases fixers for StyleCI, isn't it?

Yeh, I will. :)

Anyone willing to create full list of needed changes ?
I will be more than happy to finally get it done!

Anyone? :(

I will. ;)

great to hear !

How does this look?

Current Name
Proposed Name

blankline_after_open_tag_fixer
blank_line_after_opening_tag

double_arrow_multiline_whitespaces
double_arrow_no_multiline_whitespace

duplicate_semicolon
no_duplicate_semicolons

eof_ending
single_eol_at_eof

extra_empty_lines
extra_blank_lines

function_call_space
no_spaces_after_method_name

linefeed
unix_line_endings

logical_not_operators_with_spaces
not_operators_with_spaces

logical_not_operators_with_successor_space
not_operator_with_successor_space

multiline_array_trailing_comma
trailing_comma_multiline_array

multiline_spaces_before_semicolon
no_whitespace_before_semicolons

multiple_use
single_import_per_statement

namespace_no_leading_whitespace
no_leading_namespace_whitespace

newline_after_open_tag
line_after_opening_tag

no_empty_lines_after_phpdocs
no_blank_lines_after_phpdoc

operators_spaces
binary_operator_spaces

parenthesis
no_spaces_inside_parenthesis

remove_lines_between_uses
remove_blank_lines_between_uses

return
line_after_return

single_array_no_trailing_comma
no_trailing_comma_single_array

ternary_spaces
ternary_operator_spaces

trailing_spaces
no_trailing_whitespace

unary_operators_spaces
unary_operator_spaces

visibility
visibility_required

return -> line_after_return
should be line_before_return

Ah, yes. I'll update that in-place.

Please, could you combine it with the table in first post? (to have one full list)

It is combined?

Do you want me to update the original table?

Ohhh, I treated first one as main one.

GrahamCampbell's Proposal
Keradus' Proposal

no_spaces_after_method_name
no_spaces_after_function_name

line_before_return
blank_line_before_return

line_after_opening_tag
linebreak_after_opening_tag

no_trailing_comma_single_array
no_trailing_comma_in_singleline_array

trailing_comma_multiline_array
trailing_comma_in_multiline_array

remove_blank_lines_between_uses
no_blank_lines_between_uses

no_whitespace_before_semicolons
no_multiline_whitespaces_before_semicolons

double_arrow_no_multiline_whitespace
double_arrow_no_multiline_whitespaces

no_leading_namespace_whitespace
no_leading_namespace_whitespaces

no_trailing_whitespace
no_trailing_whitespaces

not_operators_with_spaces
not_operators_with_space

extra_blank_lines
no_extra_consecutive_blank_lines

Current Name
Keradus' Proposal

short_tag
full_opening_tag

short_echo_tag
no_short_echo_tag

php_closing_tag
no_closing_tag

indentation
no_tabs

line_after_namespace
blank_line_after_namespace

ordered_use
ordered_imports

php4_constructor
no_php4_constructor

short_bool_cast
no_short_bool_cast

standardize_not_equal
standardize_not_equals

array_element_no_space_before_comma
no_whitespace_before_comma_in_array

array_element_white_space_after_comma
whitespace_after_comma_in_array

empty_return
simplified_null_return

unused_use
no_unused_use

unneeded_control_parentheses
no_unneeded_control_parentheses

list_commas
no_trailing_comma_in_list_call

method_argument_default_value
no_unreachable_default_argument_value

remove_leading_slash_use
no_leading_import_slash

spaces_before_semicolon
no_singleline_whitespaces_before_semicolons

spaces_after_semicolon
space_after_semicolon

object_operator
object_operator_without_whitespaces

whitespaces

That doesn't make sense because whitespace is already plural.

no_unused_use

Why "use" and not "import" like in ordered_imports and no_leading_import_slash?

Because it's for traits too. Or, do we say "import" for them too? I never really know, lol.

whitespaces

updated

Any other thoughts ?

Is your list an addition to the list of @GrahamCampbell or your complete proposal?

Well, it's missing some from my list.

Is your list an addition to the list of @GrahamCampbell or your complete proposal?

Two tables

first with @GrahamCampbell 's proposals that, in my opinion, could be tweaked (so not every position - if sth is missing then its ok for me).
second as an addition to @GrahamCampbell 's proposals

Can we build a complete list, with the 1st column alphabetically sorted, like mine was?

https://docs.google.com/spreadsheets/d/18LwW5JGQbTYIJRkIbSHvvO_b3IRlVze7sa6zohBGDms/edit?usp=sharing
?

@keradus sorry, I'm still not sure if I understand your proposal correctly.
Example: blankline_after_open_tag (empty field in your column): do you think the proposed name by @GrahamCampbell is good, or do you think the fixer should not be renamed?

is good, if you have some nice idea to sth mark it (without duplicating whole name) feel free!

Current (1.x) names

btw: I think we should not look only to current 1.x names, maybe there are some new fixers in 2.x which should be renamed, too.

good point, we could change it when we have such sample
(list does not contains all fixers, just the ones we want to rename)

I was looking at the current 2.x names when I made my list.

ok

OK, So I assume that names on the most-right is OK.

OK, So I assume that names on the most-right is OK.

Sure, go for it. If we have any other issues with them, they can always be raised later. This will never happen otherwise.

Sure, go for it. If we have any other issues with them, they can always be raised later. This will never happen otherwise.

I can offer to create the pr. Or will you do this, @keradus ?

I have already started it, but have very little time now. Will try to send sth this night

Over at https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/1613#discussion_r49101573 a little discussion has held about using plural or not for fixer names.
Maybe have it here?
The case is; some fixers use plural for what the fixers fix, for example braces and lowercase_constants while other don't , like linefeed and class_definition.
Do we want to normalize this as well, or is this a non-issue?

Any thoughts on that ?


Are egui contributions welcome?

... or it is still too early?
Nothing egui-related in the works yet but I am asking since I plan to work with your lib for my project.

Yes, contributions are welcome!
The best way to contribute is to first find or create an issue. There we can discuss approaches before starting work on a PR.
Note that Egui is currently in rapid development, so expect each new release to have breaking changes in them (hopefully mentioned in the changelog). If that sounds scary you may wanna hold off for a bit :)

Am about to submit the most inconsequential of PRs to "test the waters". Will look at / tackle issues once I've got my (reworked from SDL2 Canvas to GL friendly) app working with it.


Create random folder structure when linking

When linking files from the remote storage into nexus, we should create an intermediate folder structure (UUID based), as we do when exercising the regular create files API

Fixed


androgui is actually external

I found out, that the androgui is actually partially external: https://github.com/mtivadar/qiew
See the commit of ee4e54a1ec145f1be5ac181738aea348517f1747
That these source codes are actually copied is not mentioned anywhere. Is this a problem? qiew is released as GPLv2
@eighthave Do you know how to deal with this licensing? From what I see, we are violating GPLv2 here...

Reading this: https://dwheeler.com/essays/floss-license-slide.html
Thus, using GPLv2 code is impossible for us.
Therefore we need either to have qiew use another licence or remove this code from androguard, right?

It is fine to include any kind of collection of source code with mixed
up licenses.  Any potential conflicts come with the binaries.  Any
binary packages that include the GPLv2 and Apache-2.0 code will have the
GPLv2 license.  Like that diagram shows, Apache-2.0 is compatible with
the GPLv2.
If someone wants an Apache-2.0-licensed binary package, they will have
to leave out the GPLv2 licensed code.
FYI, there is also LGPL-3 code in there already, see:
https://salsa.debian.org/python-team/modules/androguard/blob/master/debian/copyright
Also, are you sure that commit in androguard included code from Qiew?
Perhaps it just included constants.  Constants are facts, and facts or
collections of facts are not copyrightable.

It is fine to include any kind of collection of source code with mixed up licenses. Any potential conflicts come with the binaries.

So as this is python, we are fine as usually bytecode is never packaged but always the .py files - which are sourcecode?

Any binary packages that include the GPLv2 and Apache-2.0 code will have the GPLv2 license. Like that diagram shows, Apache-2.0 is compatible with the GPLv2.

ah okay, I thought this diagram reads like "if there is a connection, you can combine code, and the target of the arrow is the new licence". As there is no connection between Apache 2.0 and GPLv2 you can not mix?

Also, are you sure that commit in androguard included code from Qiew?

yes, Banners.py BinViewMode.py DataModel.py DisasmViewMode.py HexViewMode.py TextDecorators.py TextSelection.py ViewMode.py cemu.py search.ui annotation.ui are directly copied (and modifed) from qiew. binwindow.py in androguard is partially qiew.py.

FYI, there is also LGPL-3 code in there already, see:

It looks like that androguard was originally licenced as (L)GPLv3, which was changed in 6cf11e1b3d0a0adf91ea1ce94b49bddd56c8a4cf and c04c3714fed2e57db56aa6162090ed4e43608565
Maybe these files are actually leftovers from this change?

I guess there is a conflict between Apache-2.0 and GPLv2-only.
https://www.apache.org/licenses/GPL-compatibility.html
But if it is GPLv2-or-later, then the binary combination would become
GPLv3-or-later licensed.  Debian actually compiles bytecode .pyc on
installation.
Sounds like the project should be labeled as GPL-3-or-later since that's
the most likely license that is compatible with all the code that is
included.  That change is fine by me.  But as long as all the bits are
labeled with their copyright and license, it is OK have the
mixed-license source code in one repo.

qiew is unfortunately GPLv2 without or later...
so yeah, we need to label the code correctly.

I only found "GPLv2" listed in the Qiew code, and the LICENSE file and the link to the license both point to the standard GPLv2 which is GPLv2-or-later.  I found no specific declaration of GPLv2-only.  GPLv2-or-later is the default also.  So I documented the licenses like this:
https://salsa.debian.org/python-team/modules/androguard/commit/9b63d95279c1b392d6db344df22f3788a6c2e347

okay, did not knew that this is the default!
But not all files in gui are from qiew. Some are from the "old" gui.


[FEATURE] Support _plugins/_ism/explain API on per cluster metrics monitor

Is your feature request related to a problem?
We want to be able to monitor the ISM policies situation (e.g., failures) with OpenSearch monitors.  Keeping in mind the "per cluster metrics" type, supporting  _plugins/_ism/explain API would be really beneficial on that regards.
What solution would you like?
Add GET _plugins/_ism/explain API on "per cluster metrics monitor" type.
What alternatives have you considered?
Have an external cron job doing GET _plugins/_ism/explain on all OpenSearch clusters, store the result in a centralised monitoring OpenSearch cluster and create regular monitors on top of those logs. It's too much hassle when "per cluster metrics" monitor type exists.
Do you have any additional context?

[Catch All Triage - 1, 2, 3]


govendor update leveldb

mirrors https://github.com/keybase/client/pull/14557

yup! All of the changes looked like minor bugfixes


Allow to pass string arguments with singles or double quotes

Closes #103
Additionally:

Show errors if filename, end, start or exclude arguments are empty.
Show error instead of raising an exception if a file to be included is not found.

TODO:

[ ] Update examples in documentation.
[ ] Show error instead of raising an exception if a parsed boolean value is not valid.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

90 of 90 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
339

Relevant Lines:
339

💛  - Coveralls


Dio 3.0.10 two content types in request

With dio 3.0.10 in requests I have two content types.
Example request with dio 3.0.9:
`flutter: method: POST
flutter: responseType: ResponseType.json
flutter: followRedirects: true
flutter: connectTimeout: 0
flutter: receiveTimeout: 0
flutter: extra: {}
flutter: headers:
flutter:  content-type: application/json`

Example with dio 3.0.10:
`flutter: method: POST
flutter: responseType: ResponseType.json
flutter: followRedirects: true
flutter: connectTimeout: 0
flutter: receiveTimeout: 0
flutter: extra: {}
flutter: headers:
flutter:  content-type: application/x-www-form-urlencoded
flutter:  Content-Type: application/json`

How I initialize dio:
final Dio dio = Dio();
    dio.options.headers["Content-Type"] = "application/json";

With 3.0.9 all ok

I'm not sure it is related to retrofit
I already saw dio got problems with header cases.
did you try to set headers like this ?
dio.options.headers["content-type"] = "application/json";

hey, i have slove this problem,
because the server response do not have content-type /application/json,
you can ask server developer add it ,or use dio intercepter to json.decode(jsonStr);
    InterceptorsWrapper(onRequest: (RequestOptions options) {
      dio.options.headers["token"] = TokenManager().token;
      logger.d("put token");
      return options;
    }, onResponse: (Response response) {
      logger.d("response:${response.data}");
      if (response.data is String) {
        try {
          String jsonStr = response.data;
          response.data = json.decode(jsonStr);
        } catch (e) {
          logger.e(e);
        }
      }
      return response;
    });


Gruntjs

gruntjs you can make a wiki?

@enri90 I'm not sure that it is necessary, we don't have much task in grunt. Only few:

jshint : https://github.com/gruntjs/grunt-contrib-jshint
requirejs: https://github.com/gruntjs/grunt-contrib-requirejs
jsbeautifier: https://github.com/vkadam/grunt-jsbeautifier


DB Tables not found

Hi!
I just installed your package again, into my project after following the installation instructions when trying to charge a card I get
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'nikolag_transactions' ...
But I cant even find the migrations to create the tables....

What version are u using?

Latest Laravel and this adddon. Im closing this because I did not realize the old install ran the migration and was not be rerun because if it.. However I am experiencing some other bugs, related to the charge method.. I am submmitting now.


How did you make the Notion-like blocks possible?

@vipzhicheng Hello, I saw from your demo that you were able to present a 4*3 stack of blocks in the yearly view of block calendar. I'm really curious of the way you made it possible. Did you make it by adjusting CSS or using a Plugin? I did some work of searching, but found no plugins or elaborate tutorial of the sort. Hope to hear from you. Appreciate it. Great work by the way.

It's just CSS, there is API to insert CSS to Logseq main window.

Understood. thought maybe so. thanks


Fix upload slice fail

When upload a big file, it will be sliced to several pieces. If any piece upload failed, this tool will not recognize the file is broken in BaiduYun, because the default behavior of this tool is do NOT verify the file when combine the pieces to the whole file.
Thereby, we should stop the upload progress when any piece is upload failed to ensure the file is upload correctly.

You are right, I missed that, thanks :smile:


can use this library for Encrypting url link in app ?

can use this library for Encrypt url that use in app ?
is secure?
can trust ?

You can do it. But, data traffic can be tracked with charles proxy or fiddler.
my suggestion; use SSL and this library.
and
https://developer.android.com/training/articles/security-config
https://stackoverflow.com/questions/29273387/certpathvalidatorexception-trust-anchor-for-certificate-path-not-found-retro

Thanks for library and your seggestion


Question

Trying to add a second endpoint to a traffic manager results in:
Failed to save configuration changes to Traffic Manager profile 'mcweb-eu'. Error: Some of the provided Azure Website endpoints are not valid: One or more conflicts detected in traffic manager configuration. Multiple domains point to region "West Europe": mywebapp1971-eu1.azurewebsites.net, mywebapp1971-eu2.azurewebsites.net
Since I want to use priority routing method, why can't I have more than one endpoint in the same region?

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

ID: 8633649e-b2d4-6a36-7752-08bb1e0b3365
Version Independent ID: 073df024-9a05-2554-e476-d301f21f5bcd
Content: Nested Traffic Manager Profiles
Content Source: articles/traffic-manager/traffic-manager-nested-profiles.md
Service: traffic-manager
GitHub Login: @KumudD
Microsoft Alias: kumud

@mcurko your traffic manger is trying to route by region, so it cannot have 2 sites in the same region. Change your routing type to "Priority"

@mcurko your traffic manger is trying to route by region, so it cannot have 2 sites in the same region. Change your routing type to "Priority"

Routing type is already "priority".

@mcurko  This is not a limitation of that endpoint type. If you are still having an issue adding the 2 endpoints, please create a support request. If you do not have a support plan, please Email me at<EMAIL_ADDRESS>and I will enable a one-time free support request for this issue.

@mcurko We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.

We are also seeing this exact issue. Can you recommend what the solution is? We have tried with Priority, Weighted and Performance mode settings.

Even Am also getting the same issue.

Maybe This:
•	https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-faqs#can-i-use-traffic-manager-with-more-than-one-web-app-in-the-same-region
->The Traffic Manager Azure endpoints do not permit more than one Web App endpoint from the same Azure region to be added to the same Traffic Manager profile.
Possible solution is to add second endpoint not as an Azure Endpoint, but as an external endpoint.
•	https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-endpoint-types
There are three types of endpoint supported by Traffic Manager:
->	Azure endpoints are used for services hosted in Azure.
->	External endpoints are used for IPv4/IPv6 addresses, FQDNs, or for services hosted outside Azure that can either be on-premises or with a different hosting provider.
->	Nested endpoints are used to combine Traffic Manager profiles to create more flexible traffic-routing schemes to support the needs of larger, more complex deployments.


Shapiro test returning negative p-value

My issue is about logical error while running shapiro test
Reproducing code example:
>>> from scipy import stats
>>> trans_val, maxlog = stats.boxcox([122500,474400,110400])
>>> stats.shapiro(trans_val)
ShapiroResult(statistic=0.08333337306976318, pvalue=-1.4407120943069458)

Error message:
The correct range of p-value should be [0,1]. The sample shown above is giving negative p-value which is incorrect.
Scipy/Numpy/Python version information:
>>> import sys, scipy, numpy; print(scipy.__version__, numpy.__version__, sys.version_info)
1.7.0 1.19.1 sys.version_info(major=3, minor=7, micro=6, releaselevel='final', serial=0)

It looks like trans_val has range approximately zero:
>>> (trans_val.max() - trans_val.min())/trans_val.min()
 5.7469895570330386e-08

which is problematic for many stats functions. In the shapiro code:
    a, w, pw, ifault = statlib.swilk(y, a[:N//2], init)
    if ifault not in [0, 2]:
        warnings.warn("Input data for shapiro has range zero. The results "
                      "may not be accurate.")

but this is not getting triggered.
In the underlying swilk.f, there is:
      IFAULT = 6
      RANGE = X(N1) - X(1)
      IF (RANGE .LT. SMALL) RETURN

where
      DATA SQRTH /0.70711E0/, QTR/0.25E0/, TH/0.375E0/, SMALL/1E-19/

Without knowing Fortran, SMALL seems to be defined as 1e-19, which is indeed smaller than the range we have. Yet the function is still not accurate.
My guess is that we won't be able to return the correct p-value here very soon, unless someone wants to dive into the Fortran or re-implement the test in Python.
In the meantime, what would you suggest? Maybe check for the p-value in the valid range and raise an error if it's outside? I don't think clipping is appropriate, because the correct p-value here is probably not zero. (There is so little data, and it's degenerate, so I don't think the correct p-value would point toward rejecting the null hythosis of normality.) R's shapiro.test reports 0.2805581778133:
options(digits=16)
x = c(0.7021304129042957, 0.7021304469039881, 0.7021304065526269)
shapiro.test(x)

subtract mean,
I think test statistic should theoretically be invariant to mean
from scipy import stats
trans_val, maxlog = stats.boxcox([122500,474400,110400])
stats.shapiro(trans_val - trans_val.mean())
ShapiroResult(statistic=0.8646843433380127, pvalue=0.2805574834346771)

having a tiny coefficient of variation often causes large deterioration in numerical precision

I suppose the solution could be like this
In the shapiro code
    a, w, pw, ifault = statlib.swilk(y, a[:N//2], init)
    if ifault not in [0, 2]:
        warnings.warn("Input data for shapiro has range zero. The results "
                      "may not be accurate.")

it's is calling statlib.swilk, In this after line 172 there should be if condition for checking negative values like
IF (PW .LT. 0) THEN
    PW = 0

taking reference from here

We'd do an out of range check in Python.
Interesting @josef-pkt . The documentation shows an example with nonzero mean, so it sounds like it isn't supposed to matter. Would you recommend subtracting the mean before passing the data to swilk?

Nonzero mean is no problem if the variation is large enough compare to it. But if mean is huge compared to variation, then some computation get imprecise.
I only have examples in other contexts and don't know or remember the details for shapiro-wilk, so I don't know which computation cause the numerical problem.

Would you recommend subtracting the mean before passing the data to swilk?

I think that would be good. Fixes or improves precision for these kind of issues.
It's possible to make it conditional on a small relative range as in your example, but just unconditionally removing the mean is simpler.

given that y is already sorted before going to the fortran code, it might be better to subtract the median (or next value close to it)
median would be robust to outliers compared to mean


Bug in src/report.c

Line 245:
print_tcb_version("Reported TCB", &report->platform_version);
Should be:
print_tcb_version("Reported TCB", &report->reported_tcb);
I noticed this when implementing it in rust, the "SNP firmware SVN" was different in my version and I couldn't work out why!
So at least on my report "platform_version" isn't the same as "reported_tcb", in one snp is 5 and the other it's 6.

Also in attestation/nginx/disk-key.sh line 100:
${SEV_TOOL} --ofolder . --export_cert_chain_vcek ${tcb_version} > /dev/null
sevtool --export_cert_chain_vcek doesn't take any arguments and just reads from /dev/sev. Well not from what I can gather by looking at the code (trying to understand how it works).

The original report is probably wrong, because in the end I needed "platform_version" to download the certs. But the second part to this is true, sevtool no longer (or never did?) take an argument, it just downloads based on readings from /dev/sev.


Kdbai v1.4

Update KDB.AI Client and Improve Import/Export Functionality

Purpose:
Update the KDB.AI client library and enhance the import/export functionality for the VDF (Vector Data Format) IO module.
Key Changes:

Upgraded the kdbai-client dependency to version 1.4.0 or higher.
Improved the ExportKDBAI and ImportKDBAI classes to handle various data types and provide a more robust import/export experience.
Added support for additional index types (QFLAT, QHNSW) in the ImportKDBAI class.
Streamlined the argument handling and user input prompts in both the export and import modules.
Optimized the data insertion process in the ImportKDBAI class to handle larger datasets more efficiently.

Impact:
These changes will improve the reliability and usability of the VDF IO module when interacting with KDB.AI cloud or server instances. Users can now export and import a wider range of data types and index configurations, leading to a more seamless integration with KDB.AI.

✨ Generated with love by Kaizen ❤

Original Description
# Update KDB.AI Client and Improve Import/Export Workflows

**Purpose:
**
Update the KDB.AI client library, simplify the import/export workflows, and enhance the overall functionality.
Key Changes:

Upgraded the KDB.AI client library to the latest version (>=1.4.0).
Simplified the argument parsing for KDB.AI endpoint and API key, allowing environment variables or user input.
Improved the table schema handling during import, supporting a wider range of data types.
Removed the max_num_rows limit and batch size handling, allowing full data import.
Streamlined the import and export processes, reducing complexity and improving reliability.

**Impact:
**
The changes improve the overall user experience and reliability of the KDB.AI integration, making it easier to import and export data to/from the KDB.AI platform.

✨ Generated with love by Kaizen ❤

Original Description
# Update KDB.AI Integration

****Purpose:
**
**
Enhance the KDB.AI integration by updating dependencies and improving argument handling.
Key Changes:

Updated kdbai-client dependency to version >=1.4.0.
Added new command-line arguments for kdbai_endpoint, kdbai_api_key, and tables_names in kdbai_export.py.
Refactored argument handling to check for None values and prompt for input if necessary.
Improved table schema definition and data insertion logic in kdbai_import.py.
Enhanced Jupyter notebook documentation for clarity on connecting to KDB.AI.

****Impact:
**
**
These changes streamline the integration process and improve usability for developers working with KDB.AI.

✨ Generated with love by Kaizen ❤

Original Description
Update to work with KDB.AI v1.4 that is coming out on Monday 21st

Thanks for sending this out, @alexgiannak!
Let me have a look in a day or so


[Feature] Support Broker Load/Export Table from volcengine tos

What type of PR is this：

[ ] BugFix

[x] Feature
Support Broker Load/Export Table from volcengine tos

[ ] Enhancement

[ ] Refactor

[ ] UT

[ ] Doc

[ ] Tool

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Checklist:

[x] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[x] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 2.5
[x] 2.4
[x] 2.3
[x] 2.2

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

[FE PR Coverage Check]
:disappointed: fail : 0 / 53 (00.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/fs/hdfs/HdfsFsManager.java
0
53
00.00%
[381, 382, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1022, 1023, 1024, 1026, 1027, 1028, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1041, 1043, 1045, 1048, 1050, 1051, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1068, 1069, 1070, 1073, 1074, 1075, 1076, 1078]

Thank you!
I think you should manually THdfsProperties tProperties in HdfsFsManager.java convertObjectStoreConfToProperties  to support broker load (without broker in 2.5)

Thank you! I think you should manually THdfsProperties tProperties in HdfsFsManager.java convertObjectStoreConfToProperties to support broker load (without broker in 2.5)

In 2.5, we don't  need to deply the broker to load data from HDFS or S3

53

done

[FE PR Coverage Check]
😞 fail : 0 / 53 (00.00%)
file detail
path	covered_line	new_line	coverage	not_covered_line_detail
🔵	com/starrocks/fs/hdfs/HdfsFsManager.java	0	53	00.00%	[381, 382, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1022, 1023, 1024, 1026, 1027, 1028, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1041, 1043, 1045, 1048, 1050, 1051, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1068, 1069, 1070, 1073, 1074, 1075, 1076, 1078]

this test depends on  Regression Testing， need some tos env, so i don't add ut here

[FE PR Coverage Check]
:disappointed: fail : 0 / 68 (00.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/fs/hdfs/HdfsFsManager.java
0
68
00.00%
[89, 90, 91, 92, 211, 213, 214, 216, 217, 219, 220, 221, 223, 224, 226, 404, 405, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1045, 1046, 1047, 1049, 1050, 1051, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1064, 1066, 1068, 1071, 1073, 1074, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092, 1093, 1096, 1097, 1098, 1099, 1101]

run starrocks_fe_unittest

run all

run all

cc @chaoyli @meegoo @gengjun-git

[FE PR Coverage Check]
:disappointed: fail : 0 / 68 (00.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/fs/hdfs/HdfsFsManager.java
0
68
00.00%
[89, 90, 91, 92, 211, 213, 214, 216, 217, 219, 220, 221, 223, 224, 226, 404, 405, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1045, 1046, 1047, 1049, 1050, 1051, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1064, 1066, 1068, 1071, 1073, 1074, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092, 1093, 1096, 1097, 1098, 1099, 1101]

run starrocks_admit_test

run starrocks_admit_test


Button Fixes

Addresses:

[ ] issue #48

This PR has disabled functionality and a loading spinner built directly into the Button component


chore(api,shared-data): Require Python >=3.10, not >=3.8

Overview
Closes EXEC-391.
Test Plan
Not sure. Is there a way to do something like  a private PyPI deploy to test this?
Changelog

Remove Python 3.8 and 3.9 from CLASSIFIERS. As far as I know, these are just human-readable tags, and don't have any behavioral effect.
Change python_requires from >=3.8 to >=3.10 for api and shared-data.

Mercifully, I think we can do this without having to do another pipenv lock, which would conflict #14805. pipenv verify doesn't complain.
Review requests
Other than api and shared-data, are there any other user-facing projects that this needs to happen in?
Risk assessment
Low.

The "shared-data test/lint/deploy" workflow is failing for reasons unrelated to this PR; it's broken in edge too.

Looks like hardware is already narrowed to 3.10.


Fix 0.4 error, use keys to check in dict

The latest julia, baulks without this:
ERROR: LoadError: Associative collections only contain Pairs;
Either look for e.g. A=>B instead, or use the `keys` or `values`
function if you are looking for a key or value respectively.

Edit: There's also an independent (I assume) error:
ERROR: LoadError: LoadError: MethodError: `isless` has no method matching isless(::Set{Docile.Legacy.AbstractEntry}, ::Set{Docile.Legacy.AbstractEntry})

Thanks, I'll just need to investigate the isless failure on 0.4 prior to merging this.

All good now, thanks.


em.mm-counter position is wrong

the position of the em.mm-counter is right: 45px, but better is right: 70px
image added

Not exactly, the border for the button should be positioned left of the counter. As can be viewed in the documentation example: http://mmenu.frebsite.nl/documentation/addons/counters.html
I'm not sure why the behavior is different on your site, is there an onine example?

oh ok, its my mistake. i use this global style:

{ box-sizing: border-box;}
and this gives the "error".

thanks for your feedback!

Ah yes, the wildcard selector...


update vdatum web api to work in py2 and py3

Just adding in the use case for python38, where you would use the urllib module instead of urllib2


Fix DynamicMultiGroup rebind

The isRebindComplete() is really hacky, but not sure how better to do this - @ahgittin any advice?
I'd like to merge this PR asap to fix the problem, and then improve on the impl in subsequent PRs. Unless you think the code changes are dangerous!

LGMT

LGTM - checked with a clocker running Mesos with multiple managed tasks and an unmanaged tasks, all rebound successfully


Allow caching None values

Fixes #63
This adds a new allow_none boolean parameter, settable globally or per-function, that caches None values
Default behaviour is unaffected

Hey @jall ,
I'll manage the Check Docs related error, but one of the tests fails on macOS for Python 3.7.
Please take care of that!

Ok, since we've dropped support for Python 3.7 you just need to rebase this over the current master (with your added type hints contribution 😊) and this should pass all tests.

@shaypal5 updated!

This is not intended, no.
Jon, if you're able to take a look at this sometime, that would be great. :)
@jall

I've had a quick dig but fix looks complex
The problem is the cache is always set with a None value when async calculations have begun, and then whether the func succeeds or fails the calc is marked complete, leaving the None value in the cache
I don't see a way to fix this without changing the data structure in the cache, as the output is identical in the exception and non-exception case
Possibly clearing the cache or setting it to None once the calculation is complete if there's no value to persist would fix this?
I don't understand the condition logic in the cache though & how this might be impacted (assume this is required for threads)

I think we should have some kine of a special and unique value as the marker for an ongoing calculation.
Options are:

A singleton instance of a custom class. I wonder, though, about equality of this object persisting through different kernels / different machines / code.
A special value that will probably never be used, such as the string "cachier_ongoing_calc_marker" or something like that. A large random int/float is also a possibility, I guess.
??? Didn't manage to think of others, from the top of my head.

I think checking for it with option 1 might be more expensive than checking for None, while string equality is perhaps the most expensive of the three options.
What do you think?
This will entail a major version bump as it will break compatibility with caches of previous versions.


navigationState.routes.map((route, index)   react-navigation  navigationState.routes  no route

react-navigation "^1.0.0-beta.21"
react-native-material-bottom-navigation "^0.6.1
navigationState.routes.map((route, index) react-navigation navigationState.routes no route

Please create a new Issue and fill out the provided Issue Template, and explain your problem. Currently I have no idea what you mean 😅


Implements WarLog and Player

Implements WarLog, I tried this, and it works fine.
Regards

@toniperic Hey, good day. You could see this?

@died74 hey, yeah, sorry for the late reply. Thanks for contributing. In some of the files you're using tabs, while on the others you're using spaces. Could you switch to spaces, so it's constant throughout the whole library? Thanks

Hey, sory my poor English i'm speak spanish.
Ready, all files fixed.

@toniperic done

Thanks!


Extra spacing between some characters while generating pdf in ubuntu

Hi Team,
We are facing issue regarding to extra space between some characters while generating pdf in ubuntu. When the pdf is generating through MAC, Every character looks as it is as displayed in html. Please suggest where we are wrong. Thanks.

Sounds like a font problem.

If i use
https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwjTsoq167zKAhVVBY4KHTSjA0YQFgghMAE&url=https%3A%2F%2Fgithub.com%2Fmarcbachmann%2Fnode-html-pdf&usg=AFQjCNH5-FbFxoJZTTjPxKDyJmG1LJ-oiw&sig2=t9x8Spha_NX3T0c6EhKz6g

We use Arial Font in body.

The above i generated through sans-serif.

Sorry for that. That's definitely wrong. There's an issue on phantomjs that suggests a solution.
Try to set a zoomfactor or replace the font with another one using font-face. Or some other arial font.
https://github.com/ariya/phantomjs/issues/11413
Sent from my iPhone

On Jan 22, 2016, at 8:17 AM, Amit Chhangani<EMAIL_ADDRESS>wrote:
If i use
https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwjTsoq167zKAhVVBY4KHTSjA0YQFgghMAE&url=https%3A%2F%2Fgithub.com%2Fmarcbachmann%2Fnode-html-pdf&usg=AFQjCNH5-FbFxoJZTTjPxKDyJmG1LJ-oiw&sig2=t9x8Spha_NX3T0c6EhKz6g
—
Reply to this email directly or view it on GitHub.

Ok will look into that. Thanks

@amitchhangani , I have the same issue here. Install phantomjs 2.0 (https://github.com/Pyppe/phantomjs2.0-ubuntu14.04x64) and the ttf-mscorefonts-installer solved for me.

In the installation instructions is written:

An extra note on Linux usage, from the PhantomJS download page:

There is no requirement to install Qt, WebKit, or any other libraries. It however still relies on Fontconfig (the package fontconfig or libfontconfig, depending on the distribution).
If you see extra spacing between some characters, so you don't have libfontconfig installed.
I think this issue may be closed.

I have the same issue
ubuntu, debian  from docker image
fixed:  apt-get install libfontconfig1


How to test during development?

In pre-requisites, it is mentioned that the sample needs to be hosted in HTTPS website. What are the requirements for development using Visual Studio? Is it possible to debug the app within Visual Studio by simply pressing F5? Does that work?
Any help will be appreciated.
Thanks.

This sample does not have any Visual Studio project file, so you can't just hit F5. Visual Studio does have an Office Add-in project type, so you could recreate this in Visual Studio and get that ability.
Another option I've used successfully is Node.js with the http-server package, so you can quickly run a test server from the command line.


Crashing on deleteing plot

I using version 1.1.5 on windows 10 and when I try to delete running plot app is crashing. I see then loading wallet info and app don't back to normal work. I need to close app and run again ofcourse my runned plots disappears. Deleteing working on not started plot.

I am working on it.

This and also if delete 2 non active quickly (before UI refresh) it will also crash/hang. Sometimes if click to fast things it might stuck in refresh mode (spinning thing on darker screen).


S03 needs slit gap devices

With S03 running, executing a fast grid scan fails with the following error:
"message": "Failed to connect to all signals: fgs.slit_gaps.xgap (BL03S-AL-SLITS-04:XGAP), fgs.slit_gaps.ygap (BL03S-AL-SLITS-04:YGAP)"
Acceptance criteria:
These errors no longer appear because a suitable fake device exists

actually these are easily simulated with caproto

We should package that simulation into s03


fix(177): filter binding info list from DTT with pLN too

Signed-off-by: Aliou DIAITE<EMAIL_ADDRESS>

You started your branch from origin/main. Can you rebase onto origin/develop ?
git checkout fix/177-filter-for-manual-binding
git rebase origin/main --onto origin/develop


PLT-8198: System Console updates for message/compliance export

Summary
Updated the text on the System Console settings page to approved copy
Ticket Link
https://mattermost.atlassian.net/browse/PLT-8198
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] Ran make check-style to check for style errors (required for all pull requests)
[x] Ran make test to ensure unit and component tests passed
[x] Has UI changes
[x] Includes text changes and localization file (.../i18n/en.json) updates

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

Spinmint test server created at: http://i-04c1185b739457c35.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-04c1185b739457c35

Spinmint test server destroyed

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

Spinmint test server created at: http://i-07cfb2731385c7fd0.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-07cfb2731385c7fd0

Spinmint test server destroyed

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

Spinmint test server created at: http://i-09535f9ff3703c4f6.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-09535f9ff3703c4f6

Spinmint test server destroyed

Huh, this build passed, but the GitHub status isn't updating

@MusikPolice eslint error:
$ eslint --ext ".jsx" --ignore-pattern node_modules --quiet .

/home/jenkins/workspace/mattermost-webapp_PR-390-36NXF5CNWKI3E2N5AKJKUN5KI264AOHRKIOLEBWY2PCC4EY3XHQA/mattermost-webapp/components/admin_console/message_export_settings.jsx
  31:74  error  Unexpected trailing comma  comma-dangle

✖ 1 problem (1 error, 0 warnings)

@MusikPolice Can we get a test server for this?

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

@MusikPolice Needs a rebase.

Spinmint test server created at: http://i-0bfe3eedacaadf778.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-0bfe3eedacaadf778


recovery after disk crash

Influx 0.12.2
RHEL 6
XFS data partition
After a rather serious series of disks dying on my raid6 strip (3 out of 10), our storage admin were able to recover the partition that resided our influx data. xfs_check reports no issues.
However, when I start influxdb, I get the following error:
[filestore] 2016/07/21 00:52:56 /var/lib/influxdb/data/collectd/default/361/000000432-000000007.tsm (#1) opened in 6.776687ms
panic: runtime error: slice bounds out of range
I also tried deleting the wal directory under /var/lib/influxdb, but it results in the same error.
I assume that this was caused by some loss in data as a result of the raid failure.
My question is whether there is a way I can fsck the tsm files and perhaps purge all the bad ones so that i don't loose all of the time series data that I already have.

The latest nightly should be able to handle corrupted TSM files without crashing, but it won't be able to read past the first corrupted part of the file.

Thanks @mark-rushakoff, does that mean that the corrupt tsm file will remain corrupt? Will I be able to read and write data once influx rolls over to a new tsm file?

@yee379 The server should start up and not panic and you should see an error in the log about the problematic file that you can then move out of the directory.
For example,
[store] 2016/07/21 12:48:49 Failed to open shard: 3: [shard 3] error opening memory map for file /var/lib/influxdb/data/stress/autogen/3/000000001-000000001.tsm: mmapAccessor: invalid indexStart

Fixed via #6995


add twitter account to start page

@sonichi
Why are these changes needed?

Related issue number

Checks

[x] I've included any doc changes needed for https://microsoft.github.io/autogen/. See https://microsoft.github.io/autogen/docs/Contribute#documentation to build and test documentation locally.
[x] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[x] I've made sure all auto checks have passed.

Codecov Report

Merging #159 (599cdc1) into main (ae497a0) will decrease coverage by 0.34%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #159      +/-   ##
==========================================
- Coverage   41.03%   40.69%   -0.34%
==========================================
  Files          17       17
  Lines        2091     2091
  Branches      469      469
==========================================
- Hits          858      851       -7
- Misses       1156     1162       +6
- Partials       77       78       +1

Flag
Coverage Δ

unittests
40.69% <ø> (-0.24%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1 file with indirect coverage changes


[edn/dv] SW_CMD_REQ issued while CTRL . EDN_ENABLE is false

Description
In the DV for the EDN block, SW commands are issued while the EDN is disabled. These commands are accepted by the EDN and issued at the CSRNG cmd interface.
To reproduce run: util/dvsim/dvsim.py ./hw/ip/edn/dv/edn_sim_cfg.hjson -i edn_disable_auto_req_mode -t xcelium --fixed-seed<PHONE_NUMBER>
Dump with all the accesses to the ctrl and sw_cmd_req regs as well as all the commands issued to the CSRNG block:
(_pre is before the reg update and _cur is after)
UVM_INFO @ 0 ps: reporter [RNTST] Running test edn_disable_auto_req_mode_test...
1000 ps: (../src/lowrisc_dv_edn_cov_0/edn_cov_if.sv:106) [tb.dut.u_edn_cov_if] Creating covergroup edn_cfg_cg
1000 ps: (../src/lowrisc_dv_edn_cov_0/edn_cov_if.sv:107) [tb.dut.u_edn_cov_if] Creating covergroup edn_endpoints_cg
1000 ps: (../src/lowrisc_dv_edn_cov_0/edn_cov_if.sv:108) [tb.dut.u_edn_cov_if] Creating covergroup edn_cs_cmds_cg
1000 ps: (../src/lowrisc_dv_edn_cov_0/edn_cov_if.sv:109) [tb.dut.u_edn_cov_if] Creating covergroup edn_error_cg
1000 ps: (../src/lowrisc_dv_edn_cov_0/edn_cov_if.sv:110) [tb.dut.u_edn_cov_if] Creating covergroup edn_alert_cg
UVM_INFO @   2171574 ps: (edn_disable_auto_req_mode_vseq.sv:27) uvm_test_top.env.virtual_sequencer [uvm_test_top.env.virtual_sequencer.edn_disable_auto_req_mode_vseq] Waiting for main_sm to reach state AutoAckWait.
 If not, make sure that this is at least mentioned in the documentation.
FYI: @andreaskurth @vogelpi

Thanks @h-filali for working on this and filing the issue.
I checked the specification and it nowhere mentions that commands received via the SW_CMD_REQ register should be forwarded to the CSRNG interface while EDN is switched off. The spec just says:

To enable the EDN block, set the EDN_ENABLE field in the CTRL register..

And further when discussing the boot-time request mode:

In boot-time request mode, the command sequence is fully hardware-controlled and no command customization is possible. In this mode, the EDN automatically issues a special reduced-latency instantiate command followed by the default generate commands. This means, for instance, that no personalization strings or additional data may be passed to the CSRNG application interface port in this mode. On exiting, the EDN issues an uninstantiate command to destroy the associated CSRNG instance.

And re auto request mode:

To issue any new commands other than those stored in the generate or reseed FIFOs, it is important to disable auto request mode, by deasserting the AUTO_REQ_MODE field in the CTRL register. Firmware must then wait until the current command is completed by polling the MAIN_SM_STATE register. Once the state machine returns to the Idle or SWPortMode states, new firmware-driven commands can be passed to the CSRNG via the SW_CMD_REQ register.

After discussing this further in person, I think you have found several RTL and test issues here.

Commands received via SW_CMD_REQ should not be forwarded if EDN is turned off. -> This should be fixed IMHO.
Commands received via SW_CMD_REQ should not be forwarded when running in boot-time mode.
When running in auto-request mode, only one initial instantiate command received via SW_CMD_REQ should not be forwarded.
We should check that the tests indeed test EDN in boot-time and auto mode with EDN switched on. The particular test you were running configures both modes but EDN is always switched off. This means EDN only forwards commands received via SW_CMD_REQ which is wrong (see 1.) but the actual functionality, i.e., running auto and boot-time modes isn't tested.

Another thing that should be discussed is when to clear the GENERATE_CMD and RESEED_CMD FIFOs. At the moment this is only done in two cases:

when the CTRL.CMD_FIFO_RST register of the EDN block is set to true
when the EDN state machine sets main_sm_done_pulse_o to high. The FSM does so in three different situations:

When the boot req mode finishes
When going from the Idle state to the SW_Port_Mode state
When going from the Auto_Dispatch state to the Idle state (Happens when the CTRL.AUTO_REQ_MODE register is set to false)

We might need to rethink in what instances we want to clear the FIFOs. For example: there are two different cases where the SM would switch from AutoDispatch state to the Idle state. When CTRL.AUTO_REQ_MODE is disabled or when CTRL.EDN_ENABLE is disabled, but the FIFOs are only cleared in the former case.

The issue was that the struct for the CTRL register in the edn_reg_pkg has the flags in the inverse order of the documentation. Whenever the CTRL register is updated I assigned the new data for the CTRL register directly to a variable of type edn_reg2hw_ctrl_reg_t. This lead to the cmd_fifo_rst flag being swapped with the edn_enable flag. Which is why the EDN appeared ti be switched of in the DV environment.


Client injects "@keybase" when a string mentions @you

Version:
$ keybase version
Client:  1.0.35-20171103110013+8913b0236
Service: 1.0.35-20171103110013+8913b0236

Before:

After:

Note the "@shazow@keybase" instead of "@shazow". Of course, this breaks the link.
Another easy way to reproduce:

Seems to only happen when it's your own handle being mentioned.

I'm not quite sure yet, but could it be related to #8241?

@specious That does look pretty suspect, good point.

Btw, this also breaks most medium links. Makes for a lot of fun when sharing blog posts.


fix zero byte encoding

Previously, a single byte 0x00 was encoded as 0x00 but should be interpreted as 0x80.

yeah mips64 build is broken for a reason that makes no sense since the emulator is actually installed. I will investigate this later, it's not a show stopper for now.


Add support for more architectures by doing away with AVX for SIMD.

Summary
The strict requirement for x86-64 seemed to be mostly due to the reliance on the XMM x86 SIMD intrinsics for SSE (and others like AVX). While they may provide the best performance, it is at a cost of ugly code and architecture limitation (x86-64 only).
In this work I removed the strict requirement for x86-64 and instead implemented all the SIMD operations using the platform-independent gcc vector extensions (which are implemented by clang).
These changes have been tested on Linux x86-64  and aarch64. Would be great to test on Windows as well!
Templates
The new implementation allows for generic vector types due to the underlying __attribute__((ext_vector_type(T))) so I didn't need to duplicate any code between F32x4 and F32x8, and it is trivial to add F32x16 or more for instance.
Unit tests
Additional unit tests for the SIMD operations is added as well as the matrix inversion function (which makes heavy use of the SIMD operations) which are mostly backwards compatible with the original implementation.
Backwards (in)compatibility
Nearly all the existing behaviour has been preserved because the gcc vector extensions already have implemented them in a concise way (ex. __builtin_shufflevector, operator+, operator==) but there were some places that I noticed compatibility differences:

F32x4::one seemed like a bug to me, since it was just calling _mm_setzero_ps which is the same behaviour as F32x4::zero. This is now implemented with set1(1) to set all the initial f32 values (not bits!) to 1.
Getting rid of movemask and changing the API for cmpeq. Since these were only ever used to implement vector (in)equality, this entire operation could be done more succinctly by using a reduce() of the built-in operator== comparison.
Changing the endian-ness of the underlying SIMD vector data. Since the previous implementation used _mm_set_ps to create an XMM vector, the construction was little-endian set(e3, e2, e1, e0) whereas the vector extensions uses a more natural big-endian form set(e0, e1, e2, e3) for its constructors.
Using sched_yield() instead of _mm_pause() as a posix-compliant standard that is not x86-64 specific.

#3 is likely the most wide-reaching potential breakage, but I'd argue it is an improvement if this implementation is to be merged into rpp, otherwise we'd need some code such as this commit to hack-together implement the little-endian mode for the vector extensions.

Hi, thanks for the PR! Unfortunately, MSVC doesn't implement ext_vector_type - this would work under clang on Windows, but I want to maintain MSVC support.
To support NEON we'll need to #ifdef the SIMD implementations instead. This should be fairly easy since there are only a few operations, and F32x8 can just be deleted for now.

Ah, I didn't realize MSVC doesn't currently implement the clang or gcc vector extensions :/ bummer.
What do you think about keeping the x86-64 specific xmm code for win32/64, and leaving the vector extensions for linux builds? So the code is still portable on Linux beyond just x86 and arm64.

I still lean towards no, since the set of __builtin operations is quite limited compared to what's available on x86 and arm. Do you have any other architectures in mind? (riscv?)
The swizzling syntax is nice but it can't be used in the MSVC build anyway.

Well, rpp doesn't seem to really be using any of the fancier features that sse/avx/neon can provide. It's pretty simple usage so far.
I'd argue that the (clang-based) platform independence would be a big benefit so we don't need to hand-code (and hand-test) each SIMD implementation for each architecture that clang supports (even windows 👀).
It would allow for rpp support on Linux x86-64, arm32, arm64, risc-v, PPC, etc. (and MacOS/BSD support too). Not to mention these vector extensions are cross compatible with XMM vectors too.
It should be straightforward to keep the existing xmm implementation compile locked only for MSVC, or even add a build flag to let the users choose.

Well, rpp doesn't seem to really be using any of the fancier features that sse/avx/neon can provide. It's pretty simple usage so far.

Yeah, fair enough---we can use the vector extension in the clang build for now. I may revisit it if I add a richer simd API in the future, though perhaps that should just be a separate library.
If you rebase this PR, it'll start running CI and you can check that the msvc build works. Since we're removing the arch flags, I also still think we should delete f32x8 (emulating it with sse/neon isn't useful).

Ok, looks good - thanks for the contribution.
I'll see if I can add a macos arm64 CI build for testing arm support.


[NTR]L4 IT (Mus MOp)

Note - please check that the term does not already exist (check OLS: https://www.ebi.ac.uk/ols/ontologies/cl)
Preferred term label:
L4 intratelencephalic projecting glutamatergic neuron of the primary motor cortex (Mus musculus)
Synonyms
L4 IT MOp (Mus)
Definition (free text, please give PubMed ID in format PMID:XXXXXX)
An intratelencephalic-projecting glutamatergic neuron that is located in the boundary between L2/3 and L5 of the primary motor cortex. These cells have diverse morphologies with some pyramidal and some stellate cells.
PMID:33184512
Parent cell type term (check the hierarchy here https://www.ebi.ac.uk/ols/ontologies/cl):
glutamatergic neuron
What is the anatomical structure that the cell is a part of? Please check Uberon: https://www.ebi.ac.uk/ols/ontologies/uberon
http://purl.obolibrary.org/obo/UBERON_0001384 - Primary Motor Cortex
*has some soma location, can specify layer
Your nano-attribution (ORCID)
Any additional notes or concerns
xref:(ILX:0770172)
Subclass of L2/3-6 IT projecting neuron #878

Not sure if I should include the following information:
Likely corresponded to the quasi-L4 neurons described previously in the motor cortex. PMID:25525751.
The paper quoted also writes: (1) input of primary thalamocortical (TC) axons from VL and PO; (2) output to excitatory neurons in other layers, especially L2/3; (3) largely unidirectional L4→2/3 projections (i.e., little input in return from L2/3), and often, although not as a strict rule, (4) a paucity of long-range corticocortical inputs and outputs.

Not sure if I should include the following information:
Likely corresponded to the quasi-L4 neurons described previously in the motor cortex. PMID:25525751.
The paper quoted also writes: (1) input of primary thalamocortical (TC) axons from VL and PO; (2) output to excitatory neurons in other layers, especially L2/3; (3) largely unidirectional L4→2/3 projections (i.e., little input in return from L2/3), and often, although not as a strict rule, (4) a paucity of long-range corticocortical inputs and outputs.

PCL for now

migrated to https://github.com/obophenotype/brain_data_standards_ontologies/issues/226


Remove branch before mirroring

Remove set -u to allow a check of the new variable.
Check if the new variable exists and is true.
Check if the branch exists and delete it remotely.

Please test this again after making the changes.

Test is pending