[Bug]: Replication stuck on "Standby (file based)"

Is there an existing issue already for this bug?

[X] I have searched for an existing issue, and could not find anything. I believe this is a new bug.

I have read the troubleshooting guide

[X] I have read the troubleshooting guide and I think this is a new bug.

I am running a supported version of CloudNativePG

[X] I have read the troubleshooting guide and I think this is a new bug.

Contact Details
No response
Version
1.23.2
What version of Kubernetes are you using?
1.28
What is your Kubernetes environment?
Self-managed: kind (evaluation)
How did you install the operator?
YAML manifest
What happened?
Tried to delete pod / pvc,  promote, scale down and up the cluster but nothing helped.
I initially set up backups and then removed them from the cluster CR and deleted all backups.
I checked postgresql.conf inside the container, all the replication settings are commented out.
Also there's no entry in select * from pg_stat_wal_receiver; on the replica.
Thanks for your help.
Cluster resource
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  annotations:
    meta.helm.sh/release-name: testdb
    meta.helm.sh/release-namespace: testns
  creationTimestamp: "2023-11-17T09:34:00Z"
  generation: 14
  labels:
    app.kubernetes.io/managed-by: Helm
  name: testdb
  namespace: testns
  resourceVersion: "259706240"
  uid: 2e326d14-10a3-424d-b9d4-7b8fd6dcd5c3
spec:
  affinity:
    enablePodAntiAffinity: false
    podAntiAffinityType: preferred
    topologyKey: failure-domain.beta.kubernetes.io/zone
  bootstrap:
    initdb:
      database: testdb
      encoding: UTF8
      localeCType: C
      localeCollate: C
      owner: testdb
      secret:
        name: testdb-appuser
  description: Testdb Postgres Cluster
  enablePDB: true
  enableSuperuserAccess: true
  failoverDelay: 0
  imageName: ghcr.io/cloudnative-pg/postgresql:15
  instances: 2
  logLevel: info
  maxSyncReplicas: 0
  minSyncReplicas: 0
  monitoring:
    customQueriesConfigMap:
    - key: queries
      name: cnpg-default-monitoring
    disableDefaultQueries: false
    enablePodMonitor: false
  nodeMaintenanceWindow:
    inProgress: false
    reusePVC: false
  postgresGID: 26
  postgresUID: 26
  postgresql:
    parameters:
      archive_mode: "on"
      archive_timeout: 5min
      auto_explain.log_min_duration: 10s
      dynamic_shared_memory_type: posix
      log_destination: csvlog
      log_directory: /controller/log
      log_filename: postgres
      log_rotation_age: "0"
      log_rotation_size: "0"
      log_truncate_on_rotation: "false"
      logging_collector: "on"
      max_parallel_workers: "32"
      max_replication_slots: "32"
      max_worker_processes: "32"
      pg_stat_statements.max: "1024"
      pg_stat_statements.track: all
      shared_buffers: 256MB
      shared_memory_type: mmap
      shared_preload_libraries: ""
      ssl_max_protocol_version: TLSv1.3
      ssl_min_protocol_version: TLSv1.3
      wal_keep_size: 512MB
      wal_level: logical
      wal_log_hints: "on"
      wal_receiver_timeout: 5s
      wal_sender_timeout: 5s
    pg_hba:
    - host all all <IP_ADDRESS>/16 md5
    syncReplicaElectionConstraint:
      enabled: false
  primaryUpdateMethod: restart
  primaryUpdateStrategy: unsupervised
  replicationSlots:
    highAvailability:
      enabled: true
      slotPrefix: _cnpg_
    synchronizeReplicas:
      enabled: true
    updateInterval: 30
  resources:
    limits:
      cpu: "4"
      memory: 4Gi
    requests:
      cpu: "1"
      memory: 512Mi
  smartShutdownTimeout: 180
  startDelay: 300
  stopDelay: 300
  storage:
    resizeInUseVolumes: true
    size: 20Gi
    storageClass: ceph-block
  superuserSecret:
    name: testdb-superuser
  switchoverDelay: 40000000
status:
  availableArchitectures:
  - goArch: amd64
    hash: 144e71b00bdcfc5edafa10055fb0cc4a6efa9f467a8e66826d5e7bb2b254b706
  - goArch: arm64
    hash: 0027f50a9d35e24040cfc2f27cea04cbdf4375c226ac7b42764b5bb91f9beca4
  certificates:
    clientCASecret: testdb-ca
    expirations:
      testdb-ca: 2024-10-21 15:24:25 +0000 UTC
      testdb-replication: 2024-10-21 15:24:25 +0000 UTC
      testdb-server: 2024-10-21 15:24:25 +0000 UTC
    replicationTLSSecret: testdb-replication
    serverAltDNSNames:
    - testdb-rw
    - testdb-rw.testns
    - testdb-rw.testns.svc
    - testdb-r
    - testdb-r.testns
    - testdb-r.testns.svc
    - testdb-ro
    - testdb-ro.testns
    - testdb-ro.testns.svc
    serverCASecret: testdb-ca
    serverTLSSecret: testdb-server
  cloudNativePGCommitHash: 2b489ad6
  cloudNativePGOperatorHash: 144e71b00bdcfc5edafa10055fb0cc4a6efa9f467a8e66826d5e7bb2b254b706
  conditions:
  - lastTransitionTime: "2024-08-16T12:22:03Z"
    message: Cluster is Ready
    reason: ClusterIsReady
    status: "True"
    type: Ready
  - lastTransitionTime: "2024-08-16T12:19:15Z"
    message: Continuous archiving is working
    reason: ContinuousArchivingSuccess
    status: "True"
    type: ContinuousArchiving
  - lastTransitionTime: "2024-01-04T17:57:27Z"
    message: "cmd: [/controller/manager backup testdb-backup-1704240000]\nerror: unable
      to upgrade connection: container not found (\"postgres\")\nstdErr: "
    reason: LastBackupFailed
    status: "False"
    type: LastBackupSucceeded
  configMapResourceVersion:
    metrics:
      cnpg-default-monitoring: "259682625"
  currentPrimary: testdb-7
  currentPrimaryTimestamp: "2024-08-16T12:16:28.064882Z"
  healthyPVC:
  - testdb-7
  - testdb-9
  image: ghcr.io/cloudnative-pg/postgresql:15
  instanceNames:
  - testdb-7
  - testdb-9
  instances: 2
  instancesReportedState:
    testdb-7:
      isPrimary: true
      timeLineID: 8
    testdb-9:
      isPrimary: false
      timeLineID: 8
  instancesStatus:
    healthy:
    - testdb-7
    - testdb-9
  latestGeneratedNode: 9
  managedRolesStatus: {}
  phase: Cluster in healthy state
  poolerIntegrations:
    pgBouncerIntegration:
      secrets:
      - testdb-pooler
  pvcCount: 2
  readService: testdb-r
  readyInstances: 2
  secretsResourceVersion:
    applicationSecretVersion: "7352697"
    clientCaSecretVersion: "242704022"
    replicationSecretVersion: "242704024"
    serverCaSecretVersion: "242704022"
    serverSecretVersion: "242704023"
    superuserSecretVersion: "7352695"
  switchReplicaClusterStatus: {}
  targetPrimary: testdb-7
  targetPrimaryTimestamp: "2024-08-16T13:16:27.636702+01:00"
  timelineID: 8
  topology:
    instances:
      testdb-7: {}
      testdb-9: {}
    nodesUsed: 2
    successfullyExtracted: true
  writeService: testdb-rw

Relevant log output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

I believe that I'm seeing a similar behaviour sometimes as well. We have an existing Postgres cluster with approximately 15GiB of data running Postgres 15 and deployed with CNPG, and we're trying to migrate it to a new cluster running Postgres 17 within the same Kubernetes environment. I've set up a bootstrap:initdb section on the new cluster to bootstrap from the existing cluster, and the connection to the source cluster works fine.
What I've observed is that if I bring up the new cluster with three replicas, the primary instance works fine, but then the subsequent two replicas will virtually always start up in the Standby (file based) replication state. However, if I modify the cluster definition to have a silly number of replicas (e.g. 10), replicas numbered 4 and above will virtually always enter the correct Standby (async) state. It feels like the success chances of the replicas are a function of the size of the database being created, as I have not been able to observe this behaviour on trivial or empty databases.  As @sle78 mentioned the replicas that are "stuck" in the Standby (file based) state return no data for the select * from pg_stat_wal_receiver; query.
The logs on the currently active primary have many repeating logs like this:
{"level":"info","ts":"2024-10-17T15:32:41.434366466Z","logger":"postgres","msg":"record","logging_pod":"destination-migration-example-db-1","record":{"log_time":"2024-10-17 15:32:41.434 UTC","user_name":"streaming_replica","process_id":"15712","connection_from":"<IP_ADDRESS>:43130","session_id":"67112e19.3d60","session_line_num":"1","command_tag":"START_REPLICATION","session_start_time":"2024-10-17 15:32:41 UTC","virtual_transaction_id":"139/0","transaction_id":"0","error_severity":"ERROR","sql_state_code":"58P01","message":"requested WAL segment<PHONE_NUMBER>00000300000092 has already been removed", "query":"START_REPLICATION SLOT \"_cnpg_destination_migration_example_db_3\" 3/92000000 TIMELINE 1","application_name":"destination-migration-example-db-3","backend_type":"walsender","query_id":"0"}}

destination-migration-example-db-3 is one of the replicas that's stuck in the Standby (file based) state; it seems like it's looking for a WAL file that no longer exists for some reason?
For now, my migration strategy has been to spin up the new cluster as a a brand-new empty database, pg_dump the source database to so temporary location, and then use psql to load the data into the new database. This has had a 100% success rate so far but it is certainly more inconvenient.


NaN value for TripletSemiHardLoss when used with TPUs

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Colab
TensorFlow version and how it was installed (source or binary): Binary
TensorFlow-Addons version and how it was installed (source or binary): Binary
Python version: 3.7
Is GPU used? (yes/no): No

Describe the bug
I am using TripletSemiHardLoss for a project. When I use it with CPUs and GPUs things work as expected. But the moment I switch to TPU-based training the loss goes NaN. I am using in-built compile and fit loops so I don't think explicit scaling is required.
I was suspecting it's probably because of the larger batch size. But I can confirm that's not the case. When using TPUs the batch size I am using is 1024. When I took a sample batch with the size and executed it on a GPU, the loss came out as expected.
Code to reproduce the issue
Unfortunately, I cannot share a code snippet at this point in time. But wanted to know if this behavior is something known.

Thanks @sayakpaul for reporting this but we need a minimal code example to check the issue. Can you provide a toy example?

@AakashKumarNain sure but that will take me at least next week to put it together. I am okay to close it for now and reopen it when I have the toy example. What do you suggest?

It's likely to be the known issue of XLA. XLA usually adopts different implementation or even emits different IR on different device for performance issues. This would result in some numeric differences. For example, on tf-nightly, relu with Eigen C++ kernel will propagate NaN while XLA will clip NaN to 0.
https://colab.research.google.com/drive/1b6hTCpudn8m03nQDcXluzHM7ury9Hy2X?usp=sharing

That is what I had suspected. Thanks for sharing!

TensorFlow Addons is transitioning to a minimal maintenance and release mode. New features will not be added to this repository. For more information, please see our public messaging on this decision:
TensorFlow Addons Wind Down
Please consider sending feature requests / contributions to other repositories in the TF community with a similar charters to TFA:
Keras
Keras-CV
Keras-NLP


Complaint: Are you trying to download half of internet or something?

There are two mang dependence, and may easy to get error from one of them when install it. See this:
ERROR: Error checking for conflicts.
Traceback (most recent call last):
File "d:\program files\python37\lib\site-packages\pip_vendor\pkg_resources_init_.py", line 3012, in _dep_map
return self._dep_map
File "d:\program files\python37\lib\site-packages\pip_vendor\pkg_resources_init.py", line 2806, in getattr
raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

We cannot reproduce this error. The TensorWatch install is pretty fast and has minimum number of dependencies. My guess is that there is a problem with Python environment on your machine. You might want to install Anaconda with Python 3.6+, create virtual environment and try again.


Currently running entry no longer included in today's total (OSX)

Ever since 7.4.7. This was very useful to make sure you don't go overtime.

Duplicate of #2095


Update/promise

Update polyfill
Update license
Address #126
Add strict type checking
Use existing setImmediate fallback
Follow voice of library (totally minor, only concerned if it causes problems with the actual polyfill):

whitespace consistency (so very minor, the original has an instance where, like, one of the catch statements did not have a space before it)
use index over i (the original actually used index once, too, but i otherwise)
combine var statements
prefix ++ on increment operator
use while over for
add line breaks between thought changes

I am concerned about a for loop in @Octane’s original polyfill. What should promiseCount be at the time of then’s execution? Could this be written to avoid the reference to either the synchronous or asynchronous value of promiseCount within the while loop?

@jonathantneal no issue in that for loop. At the time the promise calls the then callback, it checks if all the promises have been fulfilled. It does that by counting how many were fulfilled and checking against promiseCount which is the count of promises in the array (which is not the length of the array because of holes). Since all then callbacks are called asynchronously, the value of promiseCount will be the same for all of them.

@juandopazo, good, that’s what I hoped. I think it would be better to move the function outside the loop to remove the ambiguity. Any concerns?
Promise.all = function (values) {
	return new Promise(function (resolve, reject) {
		var
		fulfilledCount = 0,
		promiseCount = 0,
		index = -1,
		anything, length, value;

		function onFulfilled(index) {
			return function (value) {
				values[index] = value;

				++fulfilledCount;

				if (fulfilledCount === promiseCount) {
					resolve(values);
				}
			};
		}

		if (isArray(values)) {
			values = values.slice(0);
			length = values.length;

			while (++index < length) {
				value = values[index];
				anything = toPromise(value);

				if (isPromise(anything)) {
					++promiseCount;

					anything.then(onFulfilled(index), reject);
				} else if (isInternalError(anything)) {
					reject(anything[ORIGINAL_ERROR]);
				} else {
					//[1, , 3] → [1, undefined, 3]
					values[index] = value;
				}
			}

			if (!promiseCount) {
				resolve(values);
			}
		} else {
			reject(new TypeError(NOT_ARRAY));
		}
	});
};

None at all. But wouldn't you rather copypaste the code or import it using a Grunt task or something like that instead of maintaining your own fork of it?

Looks OK to me and passes our existing promise tests, such as they are.  I agree with Juan that these changes to @Octane's code are probably not worth the additional maintenance responsibility that they impose on us, especially when we want to pull in newer versions of the source.  There was a lenghy discussion of this problem in https://github.com/Financial-Times/polyfill-service/issues/88, where Mathias and JDD were strongly of the view that we should not even have a copy of the polyfill locally, but it should come in as a dependency at build time.
I think the compromise for these third party libs might be:

Avoid editing (but by all means submit PRs upstream)
Extend config.json with the following new properties:

repo: The GitHub (or other) URL of the root of the repo
version: The tag at which the current source was captured

Add a grunt task to update all the sources that have these two properties

This would mean we can continue to do QA through our own test suite, it's compatible with our new shrinkwrapping/version-locking feature, and updates from the original source are automatable.  If we accept this principle though, in the case of this PR we'd have to be happy to take @Octane's polyfill exactly as it comes.
But maybe that would mean that we could have more time to spend on caring for the style and performance of the polyfills that are not imported from third parties?

There's a bug in the setImmediate polyfill included in this - I've pushed a fix and also added @matthew-andrews's test case to the test suite.
However, we already have a setImmediate polyfill in the collection, and @Octane's source doesn't embed it, so could we use our polyfill here by listing setImmediate as a dependency?

Seems I can't push my commits to this branch because it's capitalised, and my git client has lowercased it, and now my Mac refuses to tell the difference because it has a case insensitive filesystem.  Can we continue this in #257.


circular plugin loading

Describe the bug
server crashes due to circular plugin loading.
To Reproduce
Steps to reproduce the behavior:
use eco, executableitems, customcrafting, ecobosses/ecoitems/ecoarmor/ecoskills/ecoenchants together
Expected behavior
to not trigger paper's circular plugin loading crap
Screenshots
(log snippet small enough to not need screenshot.)
[SimpleProviderStorage]: eco -> ExecutableItems -> CustomCrafting -> EcoBosses -> eco
[SimpleProviderStorage]: eco -> ExecutableItems -> CustomCrafting -> EcoBosses -> EcoItems -> eco
[SimpleProviderStorage]: eco -> ExecutableItems -> CustomCrafting -> EcoSkills -> eco
[SimpleProviderStorage]: eco -> ExecutableItems -> CustomCrafting -> EcoArmor -> eco
[SimpleProviderStorage]: eco -> ExecutableItems -> CustomCrafting -> EcoEnchants -> eco

Server Information (please complete the following information):

Server Version: git-Purpur-2062 (MC: 1.20.1)
Eco: 6.67.0
CustomCrafting version <IP_ADDRESS>
ExecutableItems version <IP_ADDRESS>

Additional context
for now we tempfixed these issues by commenting out executableitems, customcrafting and itemsadder from eco's plugin.yml file

Fixed


Could not compile custom plugins with a stable rust

Describe the bug
Tried to build a plugin with<EMAIL_ADDRESS>and get
   Compiling errno v0.2.8
   Compiling num_cpus v1.14.0
error[E0554]: `#![feature]` may not be used on the stable release channel
  --> /Users/tim/.cargo/registry/src/github.com-1ecc6299db9ec823/errno-0.2.8/src/lib.rs:20:33
   |
20 | #![cfg_attr(target_os = "wasi", feature(thread_local))]
   |                                 ^^^^^^^^^^^^^^^^^^^^^

λ rustc --version
rustc 1.65.0 (897e37553 2022-11-02)

However, compiles with nightly-2022-09-23
Input code
No response
Config
No response
Playground link
No response
Expected behavior
Compiles with stable rust
Actual behavior
No response
Version
0.69
Additional context
No response

If it's intended, I think it should be written in Plugin doc page. Because as far as i remember not every nightly and even not every stable version of Rust would work because of the issue

It's not intended, we don't maintain errno-0.2.8

Oh, wait, you build swc_ecma_transforms_testing for wasm?
I think something is wrong there.
You can do like https://github.com/swc-project/plugins/blob/bb8f9a4b30a7130f50582f681db858ff98df921f/packages/emotion/transform/Cargo.toml#L33-L37 to avoid building the fixture testing system into the final Wasm file

Well, it builds with stable rust but for development / testing still need to use nightly, which is I thinking is not good.
It may work well during dev, and not build in CI.
Also, this configuration was generated by SWC CLI, maybe it should be updated (if not already) to split prod / dev deps?

I'll update the plugin template

Oh plugin template was correct

I think this could be closed.


false, true, false

Thanks @bootstraponline we'll check this ASAP! ;)

Not to dev team: I think this might be because:

either because the input's value is not string (true/false instead of "true"/"false")
or an issue in the Workflow Editor
or the two at the same time (the editor should be able to handle this even if the value is not string, but the value definitely should be string ;) )

Hey @bootstraponline !
Thank you for reporting the issue, it is now resolved in the new version of the step: 🎉🚀
https://github.com/bitrise-steplib/steps-virtual-device-testing-for-android/releases/tag/1.0.0


How to make sure all events are sent before leaving a page?

Summary
I want to track an event on a page and then immediately change location.href, which provokes a page reload, and if Amplitude hasn't yet finished sending request with the event, the request gets dropped by browser and the event never reaches Amplitude. How do I make sure that the event has been sent, before I navigate to another page?
I figured I might use the sendEvents method, but it seems to be not returning a promise or accepting a callback, do I miss something? 🤔
https://github.com/amplitude/Amplitude-JavaScript/blob/7e463ab3bb5510ce0cf4d0e4edbe0346029488d7/src/amplitude-client.js#L1512-L1597

Hi @anatoliyarkhipov, the logEvent method takes a callback that fires after the event is logged, so you can use that to change location.href after the event is logged.
Note that there are separate callbacks for if the event successfully is logged, and for if the event fails to log correctly, so to be totally safe, you should use both callbacks so the page redirects in both cases


Switch to more reliable flutter.dev link destinations in the tool

Contributes to https://github.com/flutter/website/issues/10363.

 00:13 +628 ~2 -1: test/general.shard/cache_test.dart: Cache failed storage.googleapis.com download shows China warning [E]

Expected: contains 'https://flutter.dev/to/use-mirror-site'
     Actual: 'Failed to retrieve Flutter tool dependencies: Connection reset by peer.\n'
               'If you\'re in China, please see this page: [https://flutter.dev/to/china-setup\n](https://flutter.dev/to/china-setup%5cn)'
               ''
      Which: does not contain 'https://flutter.dev/to/use-mirror-site'


docs: fix inherited docs-private members showing up

We recently landed a couple of improvements in the Dgeni pipeline, so
that descriptions of inherited members show up. To achieve this, we
applied a workaround that basically meant we are parsing the API docs'
string content manually to a JSDoc description (this also involved
manually stripping any JSDoc annotations).
This commit replaces the workaround with a solution that allows us
to still run necessary default Dgeni processors on the inherited API
docs, such as the offical jsdoc processors. These solve the problem
of manually extracting the JSDoc description, and also fix more
down-the-line problems where e.g. @docs-private is not respected
for inherited members. It also fixes cases where the JSDoc annotations
are still showing up in the docs.

For reference: Here is the docs content diff
https://github.com/angular/material2-docs-content/commit/b260ae6e8cbaeb60f9aba243a9d0c465670604e2


Log truncation

Related to #1563 and #1665

 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.

With these two changes I'm able to get about 25k lines of logs. (I don't have a build with more output currently.)
The log streaming is nice and fast and shows everything I'm used to. Once you go over the limit though the loop that's dropping lines from the beginning is fairly slow and delays log uploads by a fair amount. I'd like suggestions to make this faster / more efficient if anyone has them.
The next change that will help with supporting very large build logs is compressing the encoded json with something like deflate and sending the proper headers to have the browser inflate it for us.

Both of the issues you referenced have been closed for quite a while. Is there any other discussion (issues, forum threads) that would provide some background on this?

Both of the issues you referenced have been closed for quite a while. Is there any other discussion (issues, forum threads) that would provide some background on this?

@xordspar0 The issue management around this problem has been quite poor.
The agents limited how much of the build output is sent to the server and drops all output once that limit is reached. This is a huge problem for anyone who has a failing build, as you can't see the cause of the failure and must rebuild manually.
The guessing around DB limits and server / browser limits was not a solution.

Such a huge build output seems to be an exception, otherwise more people would complain about it.
There had been browser crashs without a build log limitation, that's not just a blind guess, this has been tested with different browsers.
As you can see on other issues and pull requests there is generally a slow response time across the last months because brad is focused on the 0.9 release, this is a release with a huge delay already so it's a must to strictly focus on it.
Besides that, 0.9 will drop grpc and replace it with plain http calls, if it will be chunked or something like that to get around some limitations we will see soon.

Ah, and since this pr is only focused on agent to server communication, there are also somewhere documented limitations of the payload size for grpc.

@tboerger I haven't commented before, but the limitation is a major problem for us as well. I'm currently just following the PR and related topics, but I'd recommend not to assume that it's not a real problem because people are not complaining. Obviously just my two cents 😄

@Raffo you are welcome to share my solution if you would like.
https://hub.docker.com/r/tcely/drone-agent/

@tboerger is this the limit you're looking for?
https://github.com/drone/drone/blob/c48150767c2700d35dcc29b110a81c8b5969175e/cmd/drone-agent/agent.go#L145

increased to 5mb in separate patch


Generate patches

With lots of help from @orionz (thank you Orion!) I've made a start at generating patches when applying remote changes. To avoid slowing down users who don't need the patches, they are only enabled if you explicitly opt in. The patches can be used to maintain a copy of a document as plain JS objects, for situations when it's undesirable to query directly into the wasm state. Patches can also help keep other state, such as UI libraries for text editing, up-to-date with the CRDT state.
Not finished yet, but I wanted to post it so that others can take a look. Known issues:

Also need to generate patches for local updates
Fix patch generation for operations on counters (currently panics because you can’t call op.value() on an increment operation)
Index calculation is wrong when the ops for a list element are split across tree nodes, see #311

Since I am only just getting started with Rust and this codebase I would be grateful for suggestions on how to improve the code :)

Hooray! Martin is writing rust! 🥳
My first impression here is that there is some duplication of logic between the "with patches" and "without patches" branches - insert_op vs insert_op_with_patch and SeekOp vs SeekOpWithPatch. If I understand things correctly the logic in both these cases is identical except for the additional state needed to track the patches. I think it makes sense to allow users who aren't interested in patches to avoid the cost of tracking them, but I have some ideas which seem to me to provide a more flexible API and also help us to avoid the logic duplication. To the API. Rather than the enable_patches()/pop_patches() combo, I think it might be nicer to use a kind of observer which is passed to apply_change. Something like this maybe:

pub trait OpObserver {
    fn insert(&mut self, obj_id: ObjId, index: usize, tagged_value: (Value, ObjId)) {
    }
    fn assign(&mut self, obj_id: ObjId, key: Prop, tagged_value (Value, ObjId), conflict: bool) {
    }
    fn delete(&mut self, obj_id: Objid, key: Prop) {
    }
}

pub struct Automerge { ...

    pub fn apply_changes<O: OpObserver>(&mut self, changes: Vec<Change>, observer: Option<O>) -> Result<(), AutomergeError> { }
...
}

We can then switch on the Some(observer)/None to select whether or not patches should be collected. This has a few nice advantages to my mind:

The choice of data structure for collecting patches is up to the user. The PR currently hard codes a Vec<Patch>, which implies allocating on every change. This trait based API is a bit more flexible in that it allows the user to do things like update a boolean flag if a certain path is modified and otherwise ignore changes. Or to collect changes directly into some structure which is appropriate for the user's usecase without going through a Vec first.
It's easier to make backwards compatible changes. With the Patch data structure any additional branch in the enum will be a breaking change, with the trait we can add default methods for new branches and remain backwards compatible.
It opens the door to API's like "filtering" ops, which I am interested in, where the methods on the trait actually return a value which the SeekOp uses to decide whether the operation is invalid and should cause the change to be rejected for some reason.
We don't require the user to remember to enable_patches before calling any mutating methods or remember to disable_patches if you are no longer interested in them, so it's harder to shoot your toes off.

Can we also make a similar modification which might obviate the SeekOp/SeekOpWithPatch split where instead of having two separate queries with the same logic but some additional state, we just have some optional state on the SeekOp?:
#[derive(Debug, Clone, PartialEq)]
pub(crate) struct SeekOp<const B: usize> {
    op: Op,
    pub pos: usize,
    pub succ: Vec<usize>,
    found: bool,
    value_tracker: Option<ValueTracker>
}

struct ValueTracker {
    had_value_before: bool,
    values: Vec<Op>,
}

Then in the various places where we use that state we could switch on the Some(ValueTracker). (I wonder if it would make sense to pass in an &mut Vec<Op> for the values which can be reused between operations to avoid allocating a vec for each operation). BTW I love all the comments in the SeekOpWithPatch implementation.

Hi @alexjg, thank you for your detailed comments! Good call on the code duplication — I will try to tidy it up.
@orionz and I also discussed whether to do a callback. I'd be happy with a callback-based API too; here are a few more trade-offs to consider:

One future extension of the patch format might be to turn consecutive insertions of list elements/text characters (like pasting a big chunk of text) into a single multi-insertion, rather than a separate patch object per character, and similarly for consecutive deletions. If we have a vector of patches, it's easy to check whether the latest operation is an extension of the previous patch, and to update it. In a callback-based API, the responsibility for merging consecutive operations would presumably be moved into the callback? Alternatively, we'd need to maintain some additional state in the document somewhere that would allow us to merge consecutive ops before invoking the callback.
If an error occurs while applying a change (e.g. something in the change is malformed), some callbacks may have already fired, so their effect may need to be rolled back in order to get into a consistent state again. With a vector, the patches aren't exposed to the application until the change has been fully applied, so a rollback is just a matter of discarding the vector.
If we also want to expose the callback-based API via the C API and Wasm, we'd need to figure out how to do that, since currently I don't think any of the existing APIs use callbacks.

Those might be reasonable trade-offs to accept, but I just wanted to put them up for discussion as well.

Interesting. Can we avoid some of the impacts of the tradeoffs you describe by including an implementation of OpObserver for &mut Vec<Patch> as part of automerge-rs? This is basically the same as passing &mut Vec<Patch> to apply_change to add patches to rather than adding the patches to an internal list of patches which is later retrieved. I.e. the API would become
let doc: automerge::Automerge = ...
let change: automerge::Change = ...
let mut patches = Vec::new();
match doc.apply_change(change, Some(&mut patches)) {
    Ok(_) => {
        // do something with the patchs
    },
    Err(e) => {
        // discard the patches
    }
}

This doesn't directly address the patch coalescing issue, but it does mean that for users who aren't worried about the performance implications they can just use the included implementation and not think about it. For users who are concerned about performance this would be a reference implementation they can read to understand the intended semantics.
I think error handling is still possible with some fiddling. The user has to ensure that they discard any changes collected by an OpObserver during an operation which threw an error. This does feel like something which could be a potential footgun.
The C and WASM APIs would use the &mut Vec<Patch> implementation for now, although I suppose the WASM API could have it's own implementation which directly creates the JS objects rather than going through a Vec at some point.

This API is a bit clunky, but my personal view is that automerge-rs is most useful as a low level library where we implement the complicated and performance critical parts of automerge and more opinionated and ergonomic layers can be built on top; so I tend to err on the side of flexibility over usability if forced to choose.

Yeah I think that would work. I'll have a go at implementing it and will come back to you :)

@ept - I have a PR waiting that fixes the Value type so we can get rid of those (Value,ExId) tuples everywhere.  I had to break compatibility with the js implementation and now Automerge.getConflicts() returns an array of values without the opids per conflict.  Anyhow - be aware and hopefully this will make your code much simpler if it lands.

@alexjg - the way Martin is doing it there's a flag marking weather or not we want patches so the impact on people who don't want them is a single if statement checking to see if the flag is on in apply_changes()

Yeah that works for users who want a simple in/out for the Vec<Patch> based workflow. But it seems to me that it's quite likely users will want more control over the performance/patch complexity tradeoff. I already have usecases where I want to do things like "tell me if there is an operation for this object ID", using the Vec<Patch> is a performance hit when I don't need most of what it's doing. I think the structure I've sketched above allows us to have the best of both worlds no? A default which just works for people who don't mind about performance or for whom Vec<Patch> is a good fit, but making it a trait means users who have more specific requirements can do what they need to do. But maybe I've missed something important about it? I'm curious as to what you think of it.

https://github.com/automerge/automerge-rs/pull/312/files#diff-60370539c096503497f862671d06693f8480a82c645f5b57eb4fe816ce8c2fceL422-R516
All the new code happens only after that if is satisfied. As for a single seek op implementation, as we were writing it the seek op with patches code substantially different. For instance after finding the place to insert the op, SeekOp is done, where as SeekOpWithPatches needs to seek to the next element to collect information on conflicting values. Given that these seek functions are the most performance critical of all I'd rather have two fully different functions then one with a many if branches. There could be ample opportunity to roll up many of the simple tasks repeated in many of the different queries into helper functions for sure.

Yeah I missed that the SeekOpWithPatches does more work so yeah, maybe it's just a question of splitting out helper methods then.

I like the idea of what kind of patch information you're getting being more configurable.  But this feels like a good first pass - perhaps we can mark the api is in development - and if someone can spec out a more flexible api we can evolve it.

I see a lot of ways to improve this feature but it wont break anything to merge it and it might be a few weeks before @ept can look at it again and if we dont merge it it'll fall too far behind.  I'm going to merge it and we can treat it as a feature under development.

I noticed patches didn't "trigger" when using transactions.
I made the following changes, I'm not sure if they're "good" though:
impl TransactionInner {
    /// Commit the operations performed in this transaction, returning the hashes corresponding to
    /// the new heads.
    pub fn commit(
        mut self,
        doc: &mut Automerge,
        message: Option<String>,
        time: Option<i64>,
    ) -> ChangeHash {
        if message.is_some() {
            self.message = message;
        }

        if let Some(t) = time {
            self.time = t;
        }

        let change = export_change(self, &doc.ops.m.actors, &doc.ops.m.props);
        let hash = change.hash;
        // CHANGED: call `apply_change` here instead of manually updating the history
        doc.apply_change(change);
        debug_assert_eq!(doc.get_heads(), vec![hash]);
        hash
    }
}

Indeed. I ended up with a bad change head. I fixed it in my PR: #331


[SP-3644] Backport of PDI-14764 - Jaro algorithm glitch (6.1 Suite)

Build Completed
:white_check_mark: This pull request has passed all validations.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f core/build.xml clean-all resolve jacoco && ant -f core/build.xml checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  core/ivy.xml

@mchen-len-son @mbatchelor please review

@stanislau-strelchanka same here

@mchen-len-son updated, thanks

Build Completed
:white_check_mark: This pull request has passed all validations.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f core/build.xml clean-all resolve jacoco && ant -f core/build.xml checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  core/ivy.xml


x/tools/gopls: move away from defaulting to serve command

Running gopls on the command-line directly currently defaults to serve mode, which is unhelpful for users of the CLI and unintuitive. We should add a log message indicating that gopls is serving and how to get help text.

@findleyr and @ianthehat have discussed that most language servers do default to serve, but we can improve the UX by adding a log statement. So I will repurpose this issue to add a log statement indicating that gopls is serving.

FYI, as far as that I have looked over 70 language servers in my project https://github.com/mattn/vim-lsp-settings, most language server does not provide serve command.


Request: Support for raw IR LED

After typing up a whole troubleshooting statement, I realized that the IR module you are using generates the 38kHz carrier signal for you, which is why my transmit setup is not working (IR receiver I'm using works great).
My IR transmitter schematic:
GND ------ IR LED ------ resistor ------ Uno Pin 3
A good expansion to this project would be to let the Arduino generate the carrier signal so the extra hardware is not needed.
Perhaps the timing of the on/off signals from the sith holocron can be captured and sent with an existing IR library?

I think this is a good idea. I will see what I can do!

My latest update adds support for the Arduino-IRremote library which will allow you to use an IR LED. I've tested it and it seems to work. Let me know if it works for you.

Nicely done, works great!
I tested on an Uno (as described in my first post) as well as on an ESP32 powered badge from a conference that has IR LEDs and an IR receiver, as well as several touch sensitive pads in lieu of tactile buttons. I made a few tweaks to the button_press function to support one of those touch pads and it too works great. I'm happy to share those tweaks to support this board.
P.S. Love your work and your videos! :smiley:


Images are rendered at low quality at master branch

Steps to Reproduce

create a widget to show one image(asset network images are all ok).
run app with stable and master branch of flutter
the image quality of stable branch is higher than master branch

left: built with some early version of flutter 1.26 (master), maybe one month ago
right: built with latest master branch 1.27.0-5.0.pre.90

(the shadow is because of macOS application window)
We can see the left one looks more smooth and text in image is more clear, all settings for Image widget are left default. This happens on all platforms including macOS/windows/android.
I checked these two months' commits of flutter/lib/src/widgets/image.dart, the only change maybe related is filterQuality. But changing to FilterQuality.high takes no sense.

flutter doctor -v
[✓] Flutter (Channel master, 1.27.0-5.0.pre.90, on Mac OS X 10.15.7 19H512
    darwin-x64, locale en-CN)
    • Flutter version 1.27.0-5.0.pre.90 at /Users/narumi/Library/flutter-master
    • Framework revision 371dd87aa0 (2 days ago), 2021-02-20 13:11:58 +0100
    • Engine revision b793775d2a
    • Dart version 2.13.0 (build 2.13.0-52.0.dev)
    • Pub download mirror https://mirrors.tuna.tsinghua.edu.cn/dart-pub
    • Flutter download mirror https://mirrors.tuna.tsinghua.edu.cn/flutter

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/narumi/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Users/narumi/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.6953283/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.2, Build version 12B45b
    • CocoaPods version 1.10.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio
    • Android Studio at /Users/narumi/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-1/202.7094744/Android
      Studio 4.2 Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] Android Studio (version 4.1)
    • Android Studio at /Users/narumi/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.6953283/Android
      Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 9F3B098B-85CD-4BBA-BC49-ABA7752723E7 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-2 (simulator)
    • macOS (desktop)        • macos                                • darwin-x64
      • Mac OS X 10.15.7 19H512 darwin-x64
    • Chrome (web)           • chrome                               •
      web-javascript • Google Chrome 88.0.4324.182

• No issues found!

I can notice some quality difference between the Master and stable channel.
Tip: you may want to open the image to better notice the difference!

Stable channel
Master channel

flutter doctor -v
[✓] Flutter (Channel master, 1.27.0-5.0.pre.94, on macOS 11.2.1 20D74 darwin-x64, locale en-AO)
    • Flutter version 1.27.0-5.0.pre.94 at /Users/pedromassango/Code/flutter_master
    • Framework revision 5642bed237 (4 hours ago), 2021-02-21 21:41:03 -0500
    • Engine revision b793775d2a
    • Dart version 2.13.0 (build 2.13.0-52.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.1, Build version 12A7403
    ! CocoaPods 1.9.3 out of date (1.10.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 53.1.5
    • Dart plugin version 203.6912

[✓] VS Code (version 1.52.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.18.1

[✓] Connected device (3 available)
    • sdk gphone x86 64 (mobile) • emulator-5554 • android-x64    • Android 11 (API 30) (emulator)
    • macOS (desktop)            • macos         • darwin-x64     • macOS 11.2.1 20D74 darwin-x64
    • Chrome (web)               • chrome        • web-javascript • Google Chrome 88.0.4324.182

! Doctor found issues in 1 category.

  ╔════════════════════════════════════════════════════════════════════════════╗
  ║                 Welcome to Flutter! - https://flutter.dev                  ║
  ║                                                                            ║
  ║ The Flutter tool uses Google Analytics to anonymously report feature usage ║
  ║ statistics and basic crash reports. This data is used to help improve      ║
  ║ Flutter tools over time.                                                   ║
  ║                                                                            ║
  ║ Flutter tool analytics are not sent on the very first run. To disable      ║
  ║ reporting, type 'flutter config --no-analytics'. To display the current    ║
  ║ setting, type 'flutter config'. If you opt out of analytics, an opt-out    ║
  ║ event will be sent, and then no further information will be sent by the    ║
  ║ Flutter tool.                                                              ║
  ║                                                                            ║
  ║ By downloading the Flutter SDK, you agree to the Google Terms of Service.  ║
  ║ Note: The Google Privacy Policy describes how data is handled in this      ║
  ║ service.                                                                   ║
  ║                                                                            ║
  ║ Moreover, Flutter includes the Dart SDK, which may send usage metrics and  ║
  ║ crash reports to Google.                                                   ║
  ║                                                                            ║
  ║ Read about data we send with crash reports:                                ║
  ║ https://flutter.dev/docs/reference/crash-reporting                         ║
  ║                                                                            ║
  ║ See Google's privacy policy:                                               ║
  ║ https://policies.google.com/privacy                                        ║
  ╚════════════════════════════════════════════════════════════════════════════╝

[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2.1 20D74 darwin-x64, locale en-AO)
    • Flutter version 1.22.6 at /Users/pedromassango/Code/flutter_stable
    • Framework revision 9b2d32b605 (4 weeks ago), 2021-01-22 14:36:39 -0800
    • Engine revision 2f0af37152
    • Dart version 2.10.5

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.1, Build version 12A7403
    • CocoaPods version 1.9.3

[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin installed
    • Dart plugin version 203.6912

[✓] VS Code (version 1.52.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.18.1

[✓] Connected device (1 available)
    • sdk gphone x86 64 (mobile) • emulator-5554 • android-x64 • Android 11 (API 30) (emulator)

! Doctor found issues in 1 category.

Actually I have already searched that issue/PR, but image quality is significantly reduced and cannot improve its quality by pass FilterQuality.high. Since I already use the master branch with  74854 merged, I wonder this is still a bug now or just I miss-understood something? Thanks.

This should be fixed by https://github.com/flutter/engine/commit/5dc0408e6c79f2e39f3ac6888ef216b665d9786c.

Sadly, the problem is still here :(
Image(
  image: AssetImage("res/img/chaldea.png"),
  filterQuality: FilterQuality.high,
),

flutter doctor -v
[✓] Flutter (Channel master, 1.27.0-5.0.pre.106, on Mac OS X 10.15.7 19H512
    darwin-x64, locale en-CN)
    • Flutter version 1.27.0-5.0.pre.106 at /Users/narumi/Library/flutter-master
    • Framework revision d69e2f10d8 (46 minutes ago), 2021-02-22 14:46:04 -0800
    • Engine revision 07afcf7d0f
    • Dart version 2.13.0 (build 2.13.0-52.0.dev)
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/narumi/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Users/narumi/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.6953283/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.2, Build version 12B45b
    • CocoaPods version 1.10.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio
    • Android Studio at /Users/narumi/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-1/202.7094744/Android
      Studio 4.2 Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] Android Studio (version 4.1)
    • Android Studio at /Users/narumi/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.6953283/Android
      Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • Mac OS X 10.15.7 19H512
      darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 88.0.4324.182

• No issues found!

The engine revision has not rolled into the framework yet. Your doctor log shows the framework using an engine revision from 3 days ago. The patch I referenced landed 6 hours ago.

Got it, I was unaware of the relations of framework and engine before. Thanks for your quick reply 👍


Lord to Baron Branch

Unironically finishing up Knight in this commit.
Prepping the branch for LtB for the coming weekdays. time to pump the content.

Do NOT merge until Baron is done.


[ffi/analyzer] False positive non_native_function_type_argument_to_pointer

There are many errors being reported by the analysis server on https://github.com/robertbastian/icu4x/blob/dart/ffi/capi/dart/package/, all complaining about usages of asFunction. For example at https://github.com/robertbastian/icu4x/blob/dart/ffi/capi/dart/package/lib/lib.dart#L483:
Can't invoke 'asFunction' because the function signature 'NativeFunction<Uint64 Function(Pointer<Opaque>)>' for the pointer isn't a valid C function signature.
Try changing the function argument in 'NativeFunction' to only use NativeTypes.

The code works fine despite the errors, so this is probably a bug.
cc @dcharkes @robertbastian

If I read this code correctly I think this is not the problem: https://github.com/dart-lang/sdk/blob/b5c31d0806e7f56d07b45cbd482e21b87183a83f/pkg/analyzer/lib/src/generated/ffi_verifier.dart#L550

@robertbastian checking out the last version of the repo, I do not see any analysis errors locally. Did you fix something in the generator?
@mosuem the links at the top are not permalinks, the referenced file doesn't exist anymore. What was the code snippet causing the analysis error?

I added ignores

https://github.com/unicode-org/icu4x/tree/main/ffi/capi/dart/package

the links at the top are not permalinks, the referenced file doesn't exist anymore. What was the code snippet causing the analysis error?

Sorry about that. Basically every invocation of asFunction shows an error.


Enhance print layout

Currently the print layout, the first heading still has exessive amounts of top-margin, this should be changed so the page looks more connected.
Additionally, we should add a possible break-point before all headings, to ensure they are not ripped from their content.

Just to drop some ideas, as we are writing an beforeprint hook anyway:
Maybe we should allow the user to configure other settings for the pdf, like margins (for notes) and offer templates for those settings. This could go well with other settings that configure to hide specific blocks like alerts or to automagically open details elements.


fix bugs for litellm==1.1.1

Description
Currently, LiteLLM class in llama-index must be fixed due to breaking changes in litellm.
This PR fixes it with minimal changes.
Fixes https://github.com/run-llama/llama_index/issues/8906
Fixes https://github.com/BerriAI/litellm/issues/816
Type of Change
Please delete options that are not relevant.

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

How Has This Been Tested?
Current tests pass.
cc: @krrishdholakia @ishaan-jaff @logan-markewich

lgtm


growthCodeRtdProvider Docs

New Growthcode RTD module for delivering real-time contextual and audience segmentation capabilities.
🏷 Type of documentation

[x] new bid adapter

📋 Checklist

[x] Related pull requests in prebid.js or server are linked -> https://github.com/prebid/Prebid.js/pull/9852
[x] For new adapters check submitting your adapter docs

@southern-growthcode aside from a small question, this could be merge. Can you clarify?


Fix Config

Coverage increased (+0.03%) to 93.417% when pulling 6ff0dbc6f6c021cc6b722f7c076881af8620f825 on feature/config-fixes into 7c34dc7d35f81a0d26671fd8ccc621ca9ec21396 on master.


[FEATURE] Get all metadata of AiService & Tool when the Spring Boot starts

First of all, I really like our framework!
Here are my specific needs:
I want to obtain the metadata of all @AiService annotations and their associated toolsets when the Spring Boot service starts. For example:

Information about the chat method in AiService.
Metadata of the tool list in AiService, such as List.

The reason is that I might need to register this metadata to a management platform at service startup for reference and sharing.
Currently, I have already retrieved the methods related to AiService at startup,
but I am unable to get the tool-related content through reflection.
They should be stored in the AiServiceContext within each original AiService.
Is there a good way to achieve this? Thank you very much.

Hi @catofdestruction, thank you for kind words!
Right now there is no way to do so, but you can take a look at these classes, maybe it will help somehow:

https://github.com/langchain4j/langchain4j-spring/blob/main/langchain4j-spring-boot-starter/src/main/java/dev/langchain4j/service/spring/AiServicesAutoConfig.java
https://github.com/langchain4j/langchain4j-spring/blob/main/langchain4j-spring-boot-starter/src/main/java/dev/langchain4j/service/spring/AiServiceFactory.java

Would you like to implement this feature?
BTW, there is a related issue: https://github.com/langchain4j/langchain4j/issues/924

Hi @catofdestruction, thank you for kind words!
Right now there is no way to do so, but you can take a look at these classes, maybe it will help somehow:

https://github.com/langchain4j/langchain4j-spring/blob/main/langchain4j-spring-boot-starter/src/main/java/dev/langchain4j/service/spring/AiServicesAutoConfig.java
https://github.com/langchain4j/langchain4j-spring/blob/main/langchain4j-spring-boot-starter/src/main/java/dev/langchain4j/service/spring/AiServiceFactory.java

Would you like to implement this feature?
BTW, there is a related issue: #924

Thank you for your response. It would be an honor for me to have the opportunity to contribute code to the framework! I am also very eager to become a contributor to langchain4j.
Unfortunately, I currently lack experience in submitting code to open-source repositories on GitHub. Are there any detailed contribution steps I could refer to? I will follow the steps and try to contribute.
Here is the idea I have for implementing this feature:

Before the getObject method in the AiServiceFactory class returns, publish a Spring Event, for example, AiServiceContextReadyEvent.
The callback properties in AiServiceContextReadyEvent might include Class<?> aiServiceClass and List toolSpecifications, or directly return AiServiceContext.
AiServiceFactory implements ApplicationEventPublisherAware to publish AiServiceContextReadyEvent, and users can listen to AiServiceContextReadyEvent in their own projects.

@catofdestruction that's great! You can find the contribution guidelines here.
Regarding the implementation, sounds good, although I have a few comments:

I am not sure about exposing AiServiceContext directly, it is meant to be an internal implementation detail that I (as a maintainer) would like to have the flexibility to change any time. So perharps we could add all the required data to the AiServiceReadyEvent?
I am not that familiar with Spring events, so it is hard to comment. Are there any other alternatives?

Thank you!

@catofdestruction that's great! You can find the contribution guidelines here.那太棒了！您可以在此处找到贡献指南。
Regarding the implementation, sounds good, although I have a few comments:关于实施，听起来不错，但我有一些评论：

I am not sure about exposing AiServiceContext directly, it is meant to be an internal implementation detail that I (as a maintainer) would like to have the flexibility to change any time. So perharps we could add all the required data to the AiServiceReadyEvent?我不确定是否直接公开AiServiceContext ，它是一个内部实现细节，我（作为维护者）希望能够随时灵活更改。那么我们可以将所有必需的数据添加到AiServiceReadyEvent中吗？
I am not that familiar with Spring events, so it is hard to comment. Are there any other alternatives?我对Spring事件不太熟悉，所以很难发表评论。还有其他选择吗？

Thank you! 谢谢你！

非常感谢，我准备好了代码，也会在这里回复

@catofdestruction that's great! You can find the contribution guidelines here.
Regarding the implementation, sounds good, although I have a few comments:

I am not sure about exposing AiServiceContext directly, it is meant to be an internal implementation detail that I (as a maintainer) would like to have the flexibility to change any time. So perharps we could add all the required data to the AiServiceReadyEvent?
I am not that familiar with Spring events, so it is hard to comment. Are there any other alternatives?

Thank you!

Hi, I followed the steps in the contribution guide and first forked a repository.
Currently, my solution is to publish a Spring Event after registering the AiService Bean in AiServicesAutoConfig.
This event contains the AiService class and its corresponding tools description information.
Once a user implements the AiServiceRegisteredEventListener to listen for this event, they can receive the event during the Spring Boot startup phase and handle their business logic as needed.
For example, in the test class AiServiceWithToolsApplication, the onApplicationEvent method
will receive the event at startup and print the following information:
`
@SpringBootApplication
class AiServiceWithToolsApplication implements AiServiceRegisteredEventListener {
public static void main(String[] args) {
    SpringApplication.run(AiServiceWithToolsApplication.class, args);
}

@Override
public void onApplicationEvent(AiServiceRegisteredEvent event) {
    Class<?> aiServiceClass = event.getAiServiceClass();
    List<ToolSpecification> toolSpecifications = event.getToolSpecifications();
    for (int i = 0; i < toolSpecifications.size(); i++) {
        System.out.printf("[%s]: [Tool-%s]: %s%n", aiServiceClass.getSimpleName(), i + 1, toolSpecifications.get(i));
    }
}

}
`
[AiServiceWithTools]: [Tool-1]: ToolSpecification { name = "getCurrentDate", description = null, parameters = null, toolParameters = null } [AiServiceWithTools]: [Tool-2]: ToolSpecification { name = "getCurrentTime", description = null, parameters = null, toolParameters = null }
You should be able to see my code changes through this link

Have a nice weekend! :)

Hi @catofdestruction, great, looks good from the first glance! I will be able to look deeper next week. BTW do we really need AiServiceRegisteredEventListener or can user declare their own classes that extends ApplicationListener<AiServiceRegisteredEvent>?
Once you will be ready, please submit a PR.
Thank you, have a nice weekend as well!

@catofdestruction that's great! You can find the contribution guidelines here.
Regarding the implementation, sounds good, although I have a few comments:

I am not sure about exposing AiServiceContext directly, it is meant to be an internal implementation detail that I (as a maintainer) would like to have the flexibility to change any time. So perharps we could add all the required data to the AiServiceReadyEvent?
I am not that familiar with Spring events, so it is hard to comment. Are there any other alternatives?

Thank you!

Hi, I followed the steps in the contribution guide and first forked a repository.
Currently, my solution is to publish a Spring Event after registering the AiService Bean in AiServicesAutoConfig. This event contains the AiService class and its corresponding tools description information.
Once a user implements the AiServiceRegisteredEventListener to listen for this event, they can receive the event during the Spring Boot startup phase and handle their business logic as needed.
For example, in the test class AiServiceWithToolsApplication, the onApplicationEvent method will receive the event at startup and print the following information:
@SpringBootApplication
class AiServiceWithToolsApplication implements AiServiceRegisteredEventListener {

    public static void main(String[] args) {
        SpringApplication.run(AiServiceWithToolsApplication.class, args);
    }

    @Override
    public void onApplicationEvent(AiServiceRegisteredEvent event) {
        Class<?> aiServiceClass = event.getAiServiceClass();
        List<ToolSpecification> toolSpecifications = event.getToolSpecifications();
        for (int i = 0; i < toolSpecifications.size(); i++) {
            System.out.printf("[%s]: [Tool-%s]: %s%n", aiServiceClass.getSimpleName(), i + 1, toolSpecifications.get(i));
        }
    }
}

[AiServiceWithTools]: [Tool-1]: ToolSpecification { name = "getCurrentDate", description = null, parameters = null, toolParameters = null }
[AiServiceWithTools]: [Tool-2]: ToolSpecification { name = "getCurrentTime", description = null, parameters = null, toolParameters = null }

You should be able to see my code changes through this link langchain4j/langchain4j-spring@main...catofdestruction:langchain4j-spring:aiservice_created_event
Have a nice weekend! :)

From your requirements, you want to get all the extension services related to @AiService to access to the external management platform, Spring event mechanism is able to get some meta information and data asynchronously in the process of spring service initialization, but I think that these data are not enough in terms of completeness and credibility, in addition, if we look at it from the point of view of the external management platform, there must be not only the need to view but also the need for some control class operations. In addition, if you look at it from the perspective of an external management platform, there must be not only the need to view , there must be some control operation needs . I have two ideas : 1、whether you can extend the BeanFactoryPostProcessor to achieve their own specific needs . 2、if you just need to read the class, can you use spring-boot-actuator's Endpoints to satisfy your needs, this kind of AiServiceContext will not have an impact.

Currently, based on the langchain4j framework, my requirement is just to obtain the metadata for AiService and Tools.
I believe that the external management platform may have more registration information for AiService and Tools, such as URI, status, and so on. Those pieces of information do not seem to belong in the framework itself but should be extended within the business application and associated with the information defined by annotations in the framework. For example, the extension based on BeanFactoryPostProcessor that you mentioned.
Additionally, using Spring Boot Actuator’s Endpoints to obtain information about AiService is a good suggestion, and I will look into it further. Thank you!

Hi @catofdestruction, great, looks good from the first glance! I will be able to look deeper next week. BTW do we really need AiServiceRegisteredEventListener or can user declare their own classes that extends ApplicationListener<AiServiceRegisteredEvent>? Once you will be ready, please submit a PR. Thank you, have a nice weekend as well!

Hi, I removed the AiServiceRegisteredEventListener and placed it into the test case. Additionally, I added a test method in the AiServicesAutoConfigIT class to verify the reception of the event, and it has passed the test.
The code can be viewed here:
https://github.com/langchain4j/langchain4j-spring/compare/main…catofdestruction:langchain4j-spring:aiservice_created_event
Should I submit a PR to the main branch, or to another branch? Thank you!

@catofdestruction please submit a PR to the main branch, thank you!


Recover cart after payment errors

1. Why is this change necessary?
Currently the cart is lost if anything goes wrong during payments (be it actual errors or a customer cancellation on async payments). This PR recovers the cart from the created order. If the customer then retries the order, the previous order ID and order number will be transparently reused (thanks to the OrderConverter).
2. What does this change do, exactly?
It restores the cart from the cancelled order and redirects the customer back to the checkout (on Storefront sales channels).
3. Describe each step to reproduce the issue or behaviour.

Add product to cart and go to checkout
Force an error during payment (either by throwing it in DefaultPaymentHandler or cancelling e.g. in PayPal)
Be sad because your cart is now gone

4. Please link to the relevant issues (if any).
5. Checklist

[ ] I have written tests and verified that they fail without my change
[x] I have squashed any insignificant commits
[x] I have written or adjusted the documentation according to my changes
[x] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

Hey @kleinmann,
great work! Could you provide some unit tests for this behavior?

@OliverSkroblin I added two tests for recovery on payment errors :-)

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-5835
Please use this issue to track the state of your pull request.

Hi @kleinmann,
I imported your pull request and it's being tested off the pipeline right now. We are still discussing whether it will be merged into the 6.1.1 version or whether it will only be available from 6.2.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-5962
Please use this issue to track the state of your pull request.

Hi @kleinmann,
as discussed on the phone, I close the pull request. As a background for other people who stumble over this pull request:
It is not intended that the same order is placed several times via the storefront. If an error occurs in the payment process, it should be possible to restart this process without having to repeat the order process.
The order is already registered in the system and all business events have expired (stock refresh, mails, ...).
We have already planned to redirect the customer, in the future, to his account where he can resume the payment process with another, or the same, payment method. Due to a lack of resources we have unfortunately not been able to do so yet.


Adding role member in Power BI desktop.

It used to be able to add role members in Power BI desktop. Why that function is gone and is there a plan to bring it back?

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

ID: d5505062-94f3-e15d-a52f-ce1ac7f8cb69
Version Independent ID: 34076b73-0ded-2111-ed44-2a31e07deb53
Content: Row-level security (RLS) with Power BI - Power BI
Content Source: powerbi-docs/admin/service-admin-rls.md
Service: powerbi
Sub-service: powerbi-admin
GitHub Login: @kfollis
Microsoft Alias: kfollis

Hi, @johnyuan10 -- thanks for asking! Referring to the author to investigate.

Role members are now added in the Power BI service by configuring security for the dataset. This is shown in the article.


Name Registry: interface bullet point style

Motivation
The interface of the .template uses a * before each parameter and a : after it.
Update the interface in the application to follow the same style.

This issue has been resolved by the SRC-2 standard


2 modals work but not more

I know this is a rehash of issue #18403 but I didn't see a solution. I've been able to get as many as 4 working but not more and then only when in a specific order. Each of them will work when I reduce their total number to one or two. I've even tried c/p a working modal and changing only the linked button and it still doesn't work if more than 2.

Please post a JS Bin or JS Fiddle that demonstrates the problem.

I'm not sure how to post it in JS Fiddle. How about if I send you a link to
the website?
On Mon, Feb 8, 2016 at 4:47 PM, Chris Rebert<EMAIL_ADDRESS>wrote:

Please post a JS Bin or JS Fiddle that demonstrates the problem.
—
Reply to this email directly or view it on GitHub
https://github.com/twbs/bootstrap/issues/19131#issuecomment-181566247.

--
Tim Quinn
Owner/CEO
Total Realty Solutions, LLC
614-407-TRS7 (8877)
<EMAIL_ADDRESS>www.YourTotalRealtySolution.com http://www.yourtotalrealtysolution.com/

Here's the temporary website: http://www.yourtotalrealtysolution.com/agents/bootstrap/Bootstrap_layout/template.html
The first two buttons work.

the first two work because the
 elements they refer to actually exist in markup

 ...

 ...

the other ones refer to
s that aren't actually there in your markup...

All the referenced s are there. I c/p the entire working code to make the new modals then change the reference tags to match the buttons.

Why is this case closed? It's not closed. All the s are there in the
markup. I've checked it a hundred times. I've c/p the working code and
changed only the reference name to match the button name and it still won't
open more than 2.
The code is there.
On Mon, Feb 8, 2016 at 5:44 PM, Patrick H. Lauke<EMAIL_ADDRESS>wrote:

the first two work because the  elements they refer to actually
exist in markup
 ...
 ...
the other ones refer to s that aren't actually there in your
markup...
—
Reply to this email directly or view it on GitHub
https://github.com/twbs/bootstrap/issues/19131#issuecomment-181601283.

--
Tim Quinn
Owner/CEO
Total Realty Solutions, LLC
614-407-TRS7 (8877)
<EMAIL_ADDRESS>www.YourTotalRealtySolution.com http://www.yourtotalrealtysolution.com/

I found the problem. It was not that the referenced tags were missing as
you suggested. There was one missing div tag at the bottom.
Thanks for your help.
On Mon, Feb 8, 2016 at 5:59 PM, Tim Quinn<EMAIL_ADDRESS>wrote:

Why is this case closed? It's not closed. All the s are there in the
markup. I've checked it a hundred times. I've c/p the working code and
changed only the reference name to match the button name and it still won't
open more than 2.
The code is there.
On Mon, Feb 8, 2016 at 5:44 PM, Patrick H. Lauke<EMAIL_ADDRESS>
wrote:

the first two work because the  elements they refer to actually
exist in markup
 ...
 ...
the other ones refer to s that aren't actually there in your
markup...
—
Reply to this email directly or view it on GitHub
https://github.com/twbs/bootstrap/issues/19131#issuecomment-181601283.

--
Tim Quinn
Owner/CEO
Total Realty Solutions, LLC
614-407-TRS7 (8877)
<EMAIL_ADDRESS>www.YourTotalRealtySolution.com http://www.yourtotalrealtysolution.com/

--
Tim Quinn
Owner/CEO
Total Realty Solutions, LLC
614-407-TRS7 (8877)
<EMAIL_ADDRESS>www.YourTotalRealtySolution.com http://www.yourtotalrealtysolution.com/

There was one missing div tag at the bottom.

You should really check for that sort of thing yourself (e.g. via http://validator.w3.org/nu/) prior to filing an issue.

Right you are. Thanks for your help.
On Mon, Feb 8, 2016 at 6:32 PM, Chris Rebert<EMAIL_ADDRESS>wrote:

There was one missing div tag at the bottom.
You should really check for that sort of thing yourself (e.g. via
http://validator.w3.org/nu/) prior to filing an issue.
—
Reply to this email directly or view it on GitHub
https://github.com/twbs/bootstrap/issues/19131#issuecomment-181621075.

--
Tim Quinn
Owner/CEO
Total Realty Solutions, LLC
614-407-TRS7 (8877)
<EMAIL_ADDRESS>www.YourTotalRealtySolution.com http://www.yourtotalrealtysolution.com/


⚠ Cioos Pacific CKAN has degraded performance

In 18f4dc8, Cioos Pacific CKAN (https://catalogue.cioospacific.ca) experienced degraded performance:

HTTP code: 200
Response time: 8002 ms

Resolved: Cioos Pacific CKAN performance has improved in fd30907 after 5 minutes.


Add "hard delete" mode

Is your feature request related to a problem? Please describe.

At the moment, posts are only "soft deleted". In order to free up the database, or for privacy concerns, posts can be hard deleted using the plugin database access.
Describe the solution you'd like

A (configurable) --hard-delete flag to also suppress the posts from the database

Great plugin! I get all my mails send in a direct message channel. So this needs a cleanup once in a while. It would also be cool to get rid of the "Message deleted" text...

Hi @jprusch, thanks for your feedback!
I'm not sure to understand, do you need to have a "hard" delete of your mails in the channel (hard refers to deleting the posts in the Mattermost database), or is the current & default "soft" delete (posts are not deleted in DB but they are marked as deleted, so they are not shown in the app) enough for your use case?
For the "Message deleted" text, it's not possible to remove it without changing the front-end code, which I don't plan to do for the moment (but any pull request is welcomed!). You can still get rid of them by doing a refresh of the app (F5, ctrl+R or killing and relaunching the app depending on your platform).

Hi @nathanaelhoun
all fine. This was a misunderstanding on how deletes work in MM & how the "Message deleted" text is generated. Hard-delete would be a good idea regarding DSGVO /GDPR.


fix: unpackaging error in Custom Mixture of Experts model when aux_loss_enabled is set to True.

What does this PR do?
This PR is designed to address this issue: https://github.com/huggingface/trl/issues/2038.
Fix unpackaging error due to additional aux_loss returned by concatenated_forward function when aux_loss_enabled=True.

Before submitting

[x] Did you read the contributor guideline,
Pull Request section?
[x] Was this discussed/approved via a GitHub issue? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes? Here are the
documentation guidelines.
[ ] Did you write any new necessary tests?

Who can review?
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

thanks @Jonathanjordan21
perhaps its more ellegant to do:
reference_chosen_logps, reference_rejected_logps = self.concatenated_forward(self.ref_model, padded_batch)[:2]

what do you think?

@kashif seems good. I actually just followed the earlier code which calculate the policy losses in get_batch_loss_metrics function.
1440        forward_output = self.concatenated_forward(model, batch)
1441        (
1442            policy_chosen_logps,
1443            policy_rejected_logps,
1444            policy_chosen_logits,
1445            policy_rejected_logits,
1446            policy_nll_loss,
1447       ) = forward_output[:5]
1448       if self.aux_loss_enabled:
1449            aux_loss = forward_output[5]

yeah... i should have just done the above but happy if you do it!

you might need to run pre-commit run --all-files in the root of the TRL folder fix any formatting issues

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Obsolete GO:0005430 synaptic vesicle amine transmembrane transporter activity

Dear all,
The proposal has been made to obsolete  'GO:0005430 synaptic vesicle amine transmembrane transporter activity ’.
The reason for obsoletion is that this the cellular location of a function should not be part of the term name. We propose replacing the annotations by the parent 'GO:0005275 amine transmembrane transporter activity’-
There are 4 EXP annotations by FlyBase.
We are opening a comment period for this proposed obsoletion. We’d like to proceed and obsolete this term on Nov 23, 2017. Unless objections are received by Nov 23, 2017, we will assume that you agree to this change.
Thanks, Pascale

@hattrill

Hi @pgaudet
I am not sure about this. What if the curvature of the synaptic vesicle membrane is necessary for the  'GO:0005430 synaptic vesicle amine transmembrane transporter activity’ to be able to occur?
Then, if you expressed a protein, which has this specific activity, in a membrane, which is not curved (or not to such a degree as the synaptic vesicle membrane is), then you would lose this activity.
This is purely hypothetical, but I think the type of environment that is necessary for an activity to happen should not be disregarded. There are proteins, which preferentially bind to curved membranes (e.g. #13916), so I think we should not exclude the possibility that there will be proteins, which will be active only in curved membranes. I do not know whether this is true for the proteins annotate by Flybase, but it may as well be.
So I would be very reluctant to obsolete this and lose the extra specificity that the 'synaptic vesicle' part of this term adds.
Thanks,
Barbara

We can't make terms based on hypothetical functions, only ones that have been experimentally supported.
If we want to specify that a function occurs in the synaptic vesicle membrane, that's what CC annotations are for.  To express the combination of function and location, the ontology can't support all possible combinations.  But you can combine them in an annotation, either with a simple GO-CAM annotation, or using extensions.

All knocked back to parent MF. There is a BP that covers this aspect sufficiently for me.

Hi @thomaspd , I agree we cannot make terms based on hypothetical functions. I meant that my comment was only hypothetical, because I was not familiar with the experimental details supporting the current  annotations to this term (now previous, since @hattrill moved them). I was just thinking that if an activity was shown to occur in a curved membrane, but not a flattened one (or the opposite), this might be an important distinction to keep. But of course only if there was experimental evidence for this distinction. And then I suppose it would not be the case of a parent-child relation between the terms, but they would probably be more like 'siblings'.


Using array to generate TaskStatusBar content

Putting variables outside of export default function TaskStatusBar(props) { will prevent the app from allocating the memory again (whenever the Status bar is re-rendered).
Using the array StatusItems to generate the HTML content will make the code shorter, testable & scalable

Thanks for these valuable pull requests, I couldn't see that by myself.
Do you have any advice on contributing to others' projects? I find this is a great way to learn even more for beginner.
Like is it necessary to leave the old code in comments or just replace it?

No it's not necessary to leave the old code in there. It's one of my bad habit. I used to work with a Playcanvas codebase & I was mentoring my co-workers on writing cleaner code. Playcanvas doesn't have a way to show diff between 2 commits so I always commented their code (not removed).
Most large & complex projects have conducts for contributing code. Some require certain tests to be passed, some don't accept style fix (I was cleaning up code of a project called DefiLlama but got denied). If you're just starting & likely will be making mistakes, try contributing to your friends' repos. It's extremely valueable to have friends that share the same interest in this field. I didn't have any and that set me back for years. Another important thing is to find your strength and focus on that. I'm terrible with algorithms & I love building UI - so front-end devlopment is a perfect fit.
This is one of the OS repo that I once helped. The complexity is relatively low so you may give it a try: https://github.com/farisaziz12/cryptoicon-api
Also you might have missed this comment: https://github.com/phuc1nguyen/react-to-do-list/commit/b7cb4b7f6dbc39b992297ce4ad4dad7d012144d2#commitcomment-79933006

I've been doing this for only over a year so it feels like I'm still at a exploring stage where I want to wrap my head around anything I find interesting (which is mostly time-wasting). I'm working on being a full-stack developer but like to be more specialized on the backend side. So I'm still finding my strength and what I'm interested in, but fortunately the more I do the more I like it.
Also it might be too ambitious but I strive to be a well-rounded engineer, pick up any tool when the needs arise so I must have solid fundamentals (I guess).
Yeah I did miss that comment, working on it now.


Feature Suggestion: Disable line break

Hey @kitten, thanks for this project, it's been helping me out a lot (dealing with contentEditable was a pain before I found your package :)
So I wanted to suggest that a user could pass an option to prevent the content from breaking lines... This would be particularly useful for my project, since I don't want the users to add break lines, and if you don't mind, I'd like to open a PR to add it to your main package.
My current "fix" for this looks something like this:
useEditable(titleRef, (txt) => {
    setData({
      ...data,
      title: txt.replace(/\n/g, '')
    })
  })

That's not working so great because whenever I hit ENTER, the caret loses the position, and the line break kinda blinks for a milisecond, so I imagine there might be a smarter way to disable that if I dig into your code a little bit, probably an if around here: https://github.com/kitten/use-editable/blob/main/src/useEditable.ts#L406
Thanks :)

This actually isn't well documented yet (due to a lack of examples) but the keydown handler is attached on window and checks for event.defaultPrevented 👀
What that means is that you can try to add an onKeyDown handler to your element and simply detect the enter key and prevent it using event.preventDefault which will abort that automatic behaviour in useEditable and the browser's default behaviour.
So the idea in having all of these event handlers is that you can still layer your own logic onto event handlers on your own elements on top ✨

Wow, yeah I didn't figure that, just tried it here and it worked like a charm!
Thanks for the explanation, and also for the prompt response 🤘


Content update - Handle events in Visual Basic (user story 1878475)

@adegeo, this (third event article) PR is ready for your review. I've added code snippets.
I've also updated a note in the first events article to sync it with a similar note in the second events article.
Internal preview

Thanks Andy!


[REQUEST] Install new themes from bludit admin panel

The site administrator can now install the theme by uploading it and activating it from the admin panel.
But perhaps the best way is for the webmaster to install the templates directly through his own admin panel. (Something like installing templates in WordPress)

there's already a plugin for that: https://github.com/philippd1/bludit-theme-download
and it's on the roadmap for Bludit v4 😉

@theuser17 let's close this issue in favor of the dedicated #1140 thread heh? 🙂


A Fatal Error Has Occurred

Describe the bug
Status: Internal Server Error
Response: {"error":"Declaration of verbb\\buttonbox\\fields\\Colours::translatedOptions(): array should be compatible with craft\\fields\\BaseOptionsField::translatedOptions(bool $encode = false): array","exception":"yii\\base\\ErrorException","file":"/app/vendor/verbb/buttonbox/src/fields/Colours.php","line":148,"trace":[]}
Steps to reproduce

Update Craft from 3.7.43 -> <IP_ADDRESS>
--

Craft CMS version
<IP_ADDRESS>
Plugin version
3.0.2
Multi-site?
no
Additional context
No response

Sheesh. Never mind. "Fixed in 3.1.0"


Use Web Translate It for managing localizations?

To manage the localization process for our apps, we use a service called Web Translate It. It provides a nice web UI for translators to add and update their translations and a very handy cli tool for developers to mange their locale files. We've been using it for a few years now and have been very happy with it.
We're currently internationalizing a padrino app for localisation into Hindi, which I see isn't yet a supported language in padrino.
WTI is free for open source projects. Would you consider using WTI for managing localizations of the framework instead of your current process of having users email localisations to you? And if so, could I help you with this process?

on this subject, are pull-requests for translation files accepted? email feels a bit weird.

Hey @fractious, thanks for your suggestion!
I guess the question is: is it a tool we can use to generate the locales and have them exported to static yml files as we have it right now? If it is then I guess there shouldn't be any issue in using it to generate locales on demand and add them to the code as needed.
I'd be careful about adding a third-party dependency on something that should be distributed as a simple static file.

I guess the question is: is it a tool we can use to generate the locales and have them exported to static yml files as we have it right now?

Yes, exactly that. Take a look at the documentation for the wti cli tool. Basically only the developer in charge of locales for Padrino need install the wti gem. They can then push the master (English) locale files whenever they change, up to WTI, add new languages (either via the cli tool e.g. wti addlocale fr-CA or via the web UI) and then once the strings have been translated via the Web UI, simply pull down the newly created locale files for that language wti pull -l fr-CA. No other users need to know anything about how the locale files are managed.

If it is then I guess there shouldn't be any issue in using it to generate locales on demand and add them to the code as needed.

Yup, there's a little bit of one-off setup to configure API keys and specify which locale files to sync with WTI but after that it's a very smooth workflow.
If you want me to fork the repo and get WTI set up for you so you can try it out I'd be happy to. I'll just need your email address to invite you to the WTI project.

@brnrds yes, of course.
Closing as looks like overkill for Padrino.
Also, I updated localization guide to mention Github PRs.


"Sounds" slowly rise up to 247 for no Reason in 1.18.2

The Sounds Thingy slowly rises up to 247 by Time (after maybe half an Hour it reaches 247). U can also just stand still and do nothing and it would still happen. I also removed all my other Mods so it gotta be something wrong with Primal Winter
ill also post some Pictures

Before

After

Also sorry for my English, ik its not that good

I have the same problem

Cannot reproduce on latest, after an hour of waiting in-game. Assuming it's been fixed since 1.18 as that version isn't being maintained.


[SPARK-43671][PS][FOLLOWUP] Refine CategoricalOps functions

What changes were proposed in this pull request?
This PR follow-up for SPARK-43671, to refine functions to use pyspark_column_op util for clean-up the code.
Why are the changes needed?
To avoid is_remote in too many places for future maintenance.
Does this PR introduce any user-facing change?
No, it's code cleanup
How was this patch tested?

The existing CI should pass

merged to master


Error: Prop href did not match. Server

Hi! I'm getting on the built version of my react-static app.
Prop href did not match. Server

I found a SO issue: https://stackoverflow.com/questions/47336589/warning-prop-href-did-not-match-using-react-server-side-rendering
But the solution that they present doesn't apply to my case. All my links are properly formatted.
Thanks (I ❤ react-static btw!)

Looks like that's because of the siteRoot prefixing. I'm not sure how to alleviate this just yet.

Ok, it's not really affecting navigation but it's there. Let me know if you have some ideas on how to fix it. I can play around with it.
Thanks!

This may not be an error we can get away from if you use the siteRoot option :( In reality, it's just react warning that the html was altered in some way after the render was performed, which, if you use siteRoot, it totally is :) haha. I'm open to suggestions, but the effort that would go into engineering the siteRoot into the react runtime (and applying it only in production builds) would be a non-trivial task at the moment.

All good then 👍


Meta-issue: Blockers to bracket-terminal 0.8.2

This meta-issue consolidates the issues I'm tracking for 0.8.2 terminal release.
Blockers:

#40 (fixed)
#75 (fixed)
#80 (fixed)
#109 (fixed)
#123 (fixed)
#145 (fixed)
#172 (fixed)
#173 (fixed)
#188 (fixed)

I needed a way to keep these straight.

The important issues for this build now appear resolved. I'll start on getting bracket-terminal 0.8.2 posted.

0.8.2 released!


Update Cloud Beta and GA version in build.gradle.

EDIT: unfortunately Exemplar is still not supported in this version :(

Codecov Report

Merging #1312 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #1312   +/-   ##
=========================================
  Coverage     82.72%   82.72%
  Complexity     1307     1307
=========================================
  Files           199      199
  Lines          6391     6391
  Branches        585      585
=========================================
  Hits           5287     5287
  Misses          943      943
  Partials        161      161

Continue to review full report at Codecov.

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


i18n(zh-cn): Update getting-started.mdx

Description (required)
Update getting-started.mdx

Related issues & labels (optional)

#8410

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

Locale
File
Note

zh-cn
getting-started.mdx
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


GPII-2865: Implement Network policies - pt. 2

This PR is the second part of implementing Network Policies for services in GPII namespace - GPII-2865.
This PR implements default "deny" and should only be merged after #485.
This PR:

Adds default deny Ingress Network Policy for GPII namespace

Thanks @amatas for review,

I'm a bit worried about the fact that part of the code is in the chart and the other part is in TF code, could this affect in the future when both parts are executed at the same time?, now we avoid this because we are merging the solution in two separate tickets.

This won't be an issue. The Network Policies are tightly coupled with the application that needs those, in the same Helm chart, so they will get deployed when the application is getting deployed.
The 2 PRs are required only for no-downtime migration of the existing clusters - the applications are currently deployed without any Network Policies so there would be a brief window when the default deny policy would be applied, but the individual application Policies wouldn't be applied until the corresponding Helm Chart is processed. This is not an issue for newly created clusters.

I like the plan for no-downtime migration!
LGTM

Thanks for reviews.

it would be nice if the flowmanager test exercised the connection between flowmanager and preferences

It is already exercised as part of healthcheck, even if it's missing in our tests.

For the negative side, spin up an interactive container in the gpii namespace and verify that we can't connect to anything?

I'm planning to explore this and look at some tooling as part of the GPII-2865 ticket, namely https://github.com/controlplaneio/netassert, but possibly others. I agree it would be good to test this.

This PR was deployed, but the resulting effect is not as expected and traffic is not blocked by default. 👎 Will follow-up in another PR.


Private preview

Problem
There are lot of merge conflict
Solution
Sybase ASE installation
Tests
We have tested the code and its working
Notes

conflicts are  fixed


Build with existing SDK

When I run build.sh it wants to download the dotnet SDK even though I have it already installed in my build environment.
Is there some way to prevent downloading the SDK / force the build to be with the existing dotnet SDK?

If you set an environment variable DisableArcade to 1 and then clean your repo, you can use dotnet build normally and don't need the scripts.


CHFIDEAL

Changes Made In Pull Request

Added CHFIDEAL.java
Updated README.md

Please have a look  at this PR


Add the ability to record / playback multiple versions

To support AzureStack we want to be able to certify the SDK with multiple versions without needing to rewrite test cases.  There was already a mechanism that allowed for multiple versions in live mode here .  This PR extends that functionality in a few ways.

Allows for the version to be either an Enum convertible to Int (previous behavior) OR a string (new behavior)
Adds one new parameter to the ClientTestFixture constructor to indicate if you want the versions to apply to record / playback (default being false which maintains previous behavior)
Adds a new qualifier to the filename to differentiate between which recording belongs to which version

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.ResourceManager

Overall approach looks good. Added a couple comments for things we discussed offline.
Here are the list of the test classes/patterns that can be moved to a new Azure.Core.TestFramework.Tests project that @m-nash offered to create:

ClientTestBase*
RecordedTestBaseTests
TestEnvironmentTests
ManagementRecordedTestBaseTests
IgnoreServiceErrorAttributeTests