updating instance size does not work

Issue: The Update Instance size doesn't work properly. The cf command fails but the operation is successfully carried out on Atlas UI
Command: cf update-service testosb15 -c '{"cluster":{"ProviderSettings":{"InstanceSizeName":"M20"}}}'
Error: Updating service instance testosb15 as
admin...
FAILED
Server error, status code: 502, error code: 10001, message: Service broker error: {"error":"value not found: '66fb9133-9f0d-4d99-a287-4cfbb1c497d6'"}
Logs:
2020-08-25T15:07:58.09-0700 [APP/PROC/WEB/0] OUT {"level":"error","ts":1598393278.098033,"caller":"broker/instance_operations.go:243","msg":"Error delete from state","func":"Update","err":"{"error":"value
not found: '66fb9133-9f0d-4d99-a287-4cfbb1c497d6'"}","errVerbose":"{"error":"value not found: '66fb9133-9f0d-4d99-a287-4cfbb1c497d6'"}\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.CheckResponse\n\t/tmp/app/pkg/mongodbrealm/mongodbrealm.go:417\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.(*Client).do\n\t/tmp/app/pkg/mongodbrealm/mongodbrealm.go:377\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.(*Client).Do\n\t/tmp/app/pkg/mongodbrealm/mongodbrealm.go:328\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.(*RealmValuesServiceOp).Delete\n\t/tmp/app/pkg/mongodbrealm/realm_values.go:184\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker/statestorage.(*RealmStateStorage).DeleteOne\n\t/tmp/app/pkg/broker/statestorage/statestorage.go:208\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker.Broker.Update\n\t/tmp/app/pkg/broker/instance_operations.go:241\ngithub.com/pivotal-cf/brokerapi/handlers.APIHandler.Update\n\t/home/vcap/go/pkg/mod/github.com/pivotal-cf/brokerapi@v5.1.0+incompatible/handlers/update.go:43\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker.authMiddleware.func1.1\n\t/tmp/app/pkg/broker/auth.go:42\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/gorilla/mux.(*Router).ServeHTTP\n\t/home/vcap/go/pkg/mod/github.com/gorilla/mux@v1.7.4/mux.go:210\nnet/http.serverHandler.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2802\nnet/http.(*conn).serve\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:1890\nruntime.goexit\n\t/tmp/contents622812680/deps/0/go1.13.12/src/runtime/asm_amd64.s:1357","instanceID":"66fb9133-9f0d-4d99-a287-4cfbb1c497d6","stacktrace":"github.com/mongodb/mongodb-atlas-service-broker/pkg/broker.Broker.Update\n\t/tmp/app/pkg/broker/instance_operations.go:243\ngithub.com/pivotal-cf/brokerapi/handlers.APIHandler.Update\n\t/home/vcap/go/pkg/mod/github.com/pivotal-cf/brokerapi@v5.1.0+incompatible/handlers/update.go:43\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker.authMiddleware.func1.1\n\t/tmp/app/pkg/broker/auth.go:42\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/gorilla/mux.(*Router).ServeHTTP\n\t/home/vcap/go/pkg/mod/github.com/gorilla/mux@v1.7.4/mux.go:210\nnet/http.serverHandler.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2802\nnet/http.(*conn).serve\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:1890"}
2020-08-25T15:07:58.09-0700 [APP/PROC/WEB/0] OUT {"level":"error","ts":1598393278.098206,"caller":"app/logger.go:75","msg":"unknown-error","error":"{"error":"value not found: '66fb9133-9f0d-4d99-a287-4cfbb1c497d6'"}","errorVerbose":"{"error":"value
not found: '66fb9133-9f0d-4d99-a287-4cfbb1c497d6'"}\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.CheckResponse\n\t/tmp/app/pkg/mongodbrealm/mongodbrealm.go:417\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.(*Client).do\n\t/tmp/app/pkg/mongodbrealm/mongodbrealm.go:377\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.(*Client).Do\n\t/tmp/app/pkg/mongodbrealm/mongodbrealm.go:328\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/mongodbrealm.(*RealmValuesServiceOp).Delete\n\t/tmp/app/pkg/mongodbrealm/realm_values.go:184\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker/statestorage.(*RealmStateStorage).DeleteOne\n\t/tmp/app/pkg/broker/statestorage/statestorage.go:208\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker.Broker.Update\n\t/tmp/app/pkg/broker/instance_operations.go:241\ngithub.com/pivotal-cf/brokerapi/handlers.APIHandler.Update\n\t/home/vcap/go/pkg/mod/github.com/pivotal-cf/brokerapi@v5.1.0+incompatible/handlers/update.go:43\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker.authMiddleware.func1.1\n\t/tmp/app/pkg/broker/auth.go:42\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/gorilla/mux.(*Router).ServeHTTP\n\t/home/vcap/go/pkg/mod/github.com/gorilla/mux@v1.7.4/mux.go:210\nnet/http.serverHandler.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2802\nnet/http.(*conn).serve\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:1890\nruntime.goexit\n\t/tmp/contents622812680/deps/0/go1.13.12/src/runtime/asm_amd64.s:1357","stacktrace":"main.(*LagerZapLogger).Error\n\t/tmp/app/logger.go:75\ngithub.com/pivotal-cf/brokerapi/handlers.APIHandler.Update\n\t/home/vcap/go/pkg/mod/github.com/pivotal-cf/brokerapi@v5.1.0+incompatible/handlers/update.go:50\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/mongodb/mongodb-atlas-service-broker/pkg/broker.authMiddleware.func1.1\n\t/tmp/app/pkg/broker/auth.go:42\nnet/http.HandlerFunc.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2007\ngithub.com/gorilla/mux.(*Router).ServeHTTP\n\t/home/vcap/go/pkg/mod/github.com/gorilla/mux@v1.7.4/mux.go:210\nnet/http.serverHandler.ServeHTTP\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:2802\nnet/http.(*conn).serve\n\t/tmp/contents622812680/deps/0/go1.13.12/src/net/http/server.go:1890"}
2020-08-25T15:07:58.09-0700 [RTR/2] OUT mongodb-atlas-osb.apps.use.sandbox.pcf.manulife.com - [2020-08-25T22:07:53.858682992Z] "PATCH /v2/service_instances/66fb9133-9f0d-4d99-a287-4cfbb1c497d6?accepts_incomplete=true
HTTP/1.1" 500 748 90 "-" "HTTPClient/1.0 (2.8.3, ruby 2.5.5 (2019-03-15))" "<IP_ADDRESS>:59964" "<IP_ADDRESS>:61074" x_forwarded_for:"<IP_ADDRESS>, <IP_ADDRESS>" x_forwarded_proto:"https" vcap_request_id:"e96c9457-fe45-4d0d-79ba-f33925d37192" response_time:4.240590
gorouter_time:0.000843 app_id:"f9337735-3092-4b72-980b-a8cde7cec038" app_index:"0" x_cf_routererror:"-" x_b3_traceid:"16d91c508f42ef65" x_b3_spanid:"16d91c508f42ef65" x_b3_parentspanid:"-" b3:"16d91c508f42ef65-16d91c508f42ef65"

Hi-
We've completed initial triage of this issue and will be able to provide a fix first thing tomorrow morning.
The error is coming from a failure to clean up an obsolete state from the broker instance state store. This does not effect any aspect of the actual Atlas cluster and should not cause any further issues.
The scope/impact of this issue should be minimal, since the fix will be isolated to this background state mgmt and not effect the main broker workflows.

THis is the status of the cf service after the error (the cluster is indeed updated on atlas)
Showing status of last operation from service test-osb-small...
status:    update failed
message:   Service broker error: {"error":"value not found: '25ddd637-7e63-47e5-b35c-34cfe1cc08ee'"}

Update-
We're still actively working on this issue. It seems that the update-service call has uncovered some nuances in the format of the JSON we get back from the Realm app which stores the state for each service instance. The issue cause's the golang parsers to fail to decode things properly, as extJSON is returned rather than regular JSON.
We have a patch test in progress and will provide updates soon as possible.


Update kubeconfig in helm.ts

Task name: HelmDeploy
Description: kubeConfig changes related to this issue (https://github.com/microsoft/azure-pipelines-tasks/issues/18666)
Support mulitple HelmDeployV0 tasks with external authentication scenarios. Stop cleaning out kubeconfig files once a task is ended, so that later HelmDeployV0 tasks can be run using the same kube config file.
Documentation changes required: (Y/N)
Added unit tests: (Y/N)
Attached related issue: (Y/N)
Checklist:

[ ] Task version was bumped - please check instruction how to do it
[ ] Checked that applied changes work as expected

After removing externalAuth from the if statement, multiple HelmDeployV0 tasks are supported without removing kubeconfig file from the config file path.

/azp run

Issue solved ? Why this MR is closed ?
Thank in advance

@asen-nex - yes issue is resolved and released in 0.226.7.  #18683 #18517
Please let us know if you see any issues.
@qianz2 @YevheniiKholodkov


[LLVMCPU] Enable tileDispatchUsingForall as default

@ScottTodd This patch enables some of the tests in iree-test-suites. Shall I merge this and then update xfails from there?

@ScottTodd This patch enables some of the tests in iree-test-suites. Shall I merge this and then update xfails from there?

For onnx ops? I'm actually thinking about removing all the xfails for onnx ops in the iree-org/iree-test-suites repo, so we don't have tracking in two places: https://github.com/iree-org/iree-test-suites/pull/35. This repo should definitely update the config file(s).


draggable="true" doesn't seem to work

adding draggable="true" to an HTML element inside a CEP panel doesn't seem to have any effect.
Anyone here knows how this works?
Adobe CEP docs states that it is supported.
Thanks!

This shouldn't have anything to do with Bolt CEP, likely a behavior in your framework of choice (e.g. vue, react, svelte). If you have something that works in a vanilla CEP project but not in a Bolt CEP project, feel free to re-open this issue.

This seems to be a general CEP issue, as even native HTML draggable doesn't seem to work.
I thought people here might be able to help, but you're right, nothing to do with Bolt.

@Yiddishe-Kop this is really just for Bolt-CEP issues, but you can join our Discord and ask the community:
https://discord.gg/BnwHbakb


Tests for file upload in progress error in sendbox

What
Tests for file upload in progress error in sendbox
Why
https://skype.visualstudio.com/SPOOL/_workitems/edit/2783424
How Tested
Process & policy checklist

[ ] I have updated the project documentation to reflect my changes if necessary.
[ ] I have read the CONTRIBUTING documentation.

Is this a breaking change?

[ ] This change causes current functionality to break.

Why has this file been deleted?

Flaky test Alert
@edwardlee-msft  @dmceachernmsft @prprabhu-ms


Variable bubbles for user to select while editing the status in the UI

While there's a readme.md set with all available variables, it is hard for people to memorise all of them, causing them to read the documentation again when they plan to modify the status.
Having a list of available variables as a bubble would benefit the end user, as they no longer have to find the repository's readme documentation every time when they want to make changes.
My suggestion is to add a tiny bottom bar in the status textbox, which will be visible if the textbox is focused, then there will be a set of variables, presented with the corresponding symbol. If the user do not know one of the icons' actual meaning, they can hover at it, which a tooltip will show up just at top of the icon.

Like this, for instance.

Thank you for your suggestion, this will be added in the next update.


TS generic: TypeError: i is not a function

The non-GeoJSON flatgeobuf distribution fails for me (flatgeobuf-geojson.min.js works):
var flatgeobuf_generic = require('flatgeobuf/dist/flatgeobuf.min.js')
var {readFileSync} = require('fs')
var path = '../test/data/ca_a.fgb'
var buf = readFileSync(path)
flatgeobuf_generic.deserialize(buf)

TypeError: i is not a function
    at /Users/kyle/unfolded/sandbox/flatgeobuf-parser/js-test/node_modules/flatgeobuf/dist/flatgeobuf.min.js:1:31696
    at Object.t.deserialize (/Users/kyle/unfolded/sandbox/flatgeobuf-parser/js-test/node_modules/flatgeobuf/dist/flatgeobuf.min.js:1:31720)
    at evalmachine.<anonymous>:1:20
    at Script.runInThisContext (vm.js:120:20)
    at Object.runInThisContext (vm.js:311:38)
    at run ([eval]:1054:15)
    at onRunRequest ([eval]:888:18)
    at onMessage ([eval]:848:13)
    at process.emit (events.js:310:20)
    at emit (internal/child_process.js:876:12)

Tested with this file, with geometry type LINESTRING Z:
ca_a.fgb.zip

That's not a valid call to the generic deserialize function. It requires not only input but also a second parameter fromFeature. See<EMAIL_ADDRESS>and<EMAIL_ADDRESS>The idea is that the fromFeature funtion act as a callback that recieves the raw feature data as it is parsed and it's up to you implement it as the target is unknown in this case. The GeoJSON module uses the generic module and implements the fromFeature function at https://github.com/bjornharrtell/flatgeobuf/blob/7d9d5d59ee1da99d44da1dddebf2d57c38433e3c/src/ts/geojson/feature.ts#L16-L27 and uses it through the generic deserialize at https://github.com/bjornharrtell/flatgeobuf/blob/7d9d5d59ee1da99d44da1dddebf2d57c38433e3c/src/ts/geojson/featurecollection.ts#L43.
I can see this not being at all straight forward... but the generic module is a lower level abstraction than the GeoJSON module, so it requires more lower level knowledge.
Please reopen if you can demonstrate a valid use of the generic API that still fails.

I now see that the arrow function in the geojson source isn't needed, thanks. :) So the use there is now simply:
https://github.com/bjornharrtell/flatgeobuf/blob/78d98ec88db394d7f251085058f9b6fc63f65900/src/ts/geojson/featurecollection.ts#L43

Fun trivia - the removal of arrow function reduces flatgeobuf-geojson.min.js by 36 bytes and likely improves performance too. :D

I see. I find that auto-generated documentation very hard to read so I've been reading the code directly instead and missed that the generic deserialize expected another argument. (Also reading the code as I'm exploring a pure-Python decoding implementation).
Now that I understand how the generic deserialize works, I see that implementing extraction to typed arrays (https://github.com/bjornharrtell/flatgeobuf/issues/51) would be straightforward by writing a custom fromFeature argument.

Great. I'd like to expand on docs and examples but don't know when I can find time/priority for it. A pure Python reference impl. would be welcome.

Essentially only pure-Python decoding is currently of interest to me, for environments where I don't want to have a full GDAL dependency (I also made an issue on Fiona to connect the Python ecosystem to reading/writing through the FlatGeobuf GDAL driver: https://github.com/Toblerity/Fiona/issues/917). I'm not sure if you're interested in including a decoding-only Python implementation?

Decoding is half way to a full implementation, so yes. 🙂
In the end you might need encoding anyway to be able to write roundtrip tests, without those it might be very difficult to ensure that the decoding is bug free.


@intlify/vite-plugin-vue-i18n unmet peer dependencies with fresh Vitesse project

As per https://github.com/antfu/vitesse#clone-to-local I setup a fresh Vitesse project:
npx degit antfu/vitesse my-vitesse-app
cd my-vitesse-app
pnpm i # If you don't have pnpm installed, run: npm install -g pnpm

Then tried installing Starport:
pnpm i vue-starport
Packages: +1
+
Progress: resolved 953, reused 933, downloaded 0, added 1, done

dependencies:
+ vue-starport 0.2.8

 ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies

.
└─┬ @intlify/vite-plugin-vue-i18n
  └── ✕ unmet peer vue-i18n@next: found 9.1.9

So I tried installing vue-i18n@next as suggested:
pnpm i vue-i18n@next
Packages: +6 -11
++++++-----------
Progress: resolved 948, reused 928, downloaded 0, added 6, done

dependencies:
- vue-i18n 9.1.9
+ vue-i18n 9.2.0-beta.35
- vue-starport 0.2.8

devDependencies:
- @intlify/vite-plugin-vue-i18n 4.0.0
+ @intlify/vite-plugin-vue-i18n 4.0.0

 ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies

.
└─┬ @intlify/vite-plugin-vue-i18n
  └── ✕ unmet peer vue-i18n@next: found 9.2.0-beta.35

Found this issue that seems related: https://github.com/intlify/bundle-tools/issues/83
So I then tried:
pnpm i -D<EMAIL_ADDRESS>pnpm i vue-starport

And there were no errors 😄

Not related to this project.


Error Fail to load resource from 'https://acme-v02.api.letsencrypt.org/acme/new-acct'. urn:ietf:params:acme:error:serverInternal: failed check for existing account - at Certes.Acme.IAcmeHttpClientExtensions

Hello,
I use .NET based program to renew our certificates (IIS on Windows Server 2019, Certes 3.0.3). It worked well for many months. Last 2 months running from scheduler falls into error:
Exception line: myAccount = Await myAcme.NewAccount(My.Settings.acmeEmail, True)
Error: Fail to load resource from 'https://acme-v02.api.letsencrypt.org/acme/new-acct'.
urn:ietf:params:acme:error:serverInternal: failed check for existing account - at Certes.Acme.IAcmeHttpClientExtensions.
If it is run by Task Sheduler timer, it returns error.
If I run it manualy by Run button in Task Scheduler, it works well.
I cannot find any difference. Same user, same rights (highest privilege).
Thank you for your help
Miroslav

I am seeing this as well running create account from a linqopad script using latest Certes (3.0.3)
it returns a key, but when I later use the key, I get the same error message.

I think I have a similar issue, on either NewAccount or after using a acmeAccountKey on this line
var account = await acme.Account();
I get this stacktrace:
Object reference not set to an instance of an object.
   at Certes.Acme.AccountContext.<>c.<NewAccount>b__4_0(Directory d)
   at Certes.IAcmeContextExtensions.<GetResourceUri>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certes.Acme.AccountContext.<NewAccount>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certes.AcmeContext.<Account>d__17.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

@mmsw-git Did you find a solution for this? My solution also worked fine for several years, but soon my SSL certs will expire... :/

Check that your machine is able to use TLS 1.2 when making https requests as Let's Encrypt recently retired support for previous TLS versions. Some old versions of windows (server 2012 for example) don't enable this by default, you can us IIS Crypto in Best Practices mode to auto configure windows. https://www.nartac.com/Products/IISCrypto/

My problem was related to wrong login in Windows Service.
Miroslav

@webprofusion-chrisc Thank you, that was it! Enabled TLS 1.2 on the machine running my software and then it started to work again! It's an old win7 installation.


ESCU - Previously Seen Cloud Instance Modifications By User - Update - Error in 'outputlookup' command: The lookup table 'previously_seen_cloud_instance_modificationss_by_user' is invalid.

ESCU version - https://repo.splunk.com/artifactory/webapp/#/artifacts/browse/tree/General/Solutions/DA/da-ess-contentupdate/builds/escu_mustang/bugfix/0.0.5/DA-ESS-ContentUpdate-3.0.9.tar.gz
Looks like a typo in outputlookup previously_seen_cloud_instance_modificationss_by_user which must be outputlookup previously_seen_cloud_instance_modifications_by_user
The current spl errors out - Error in 'outputlookup' command: The lookup table 'previously_seen_cloud_instance_modificationss_by_user' is invalid.

Thanks for filing this: currently tracking this fix in this branch: mustang_beta_drop3


Ability to keep a backup from being garbage collected

Add the ability to preserve a backup. This could mean one of a few things:

be able to specify a ttl of 0 == never expire
be able to change a backup's expiration after it's been created
be able to mark a backup as pinned/preserved so that the expiration is ignored

Personally I like the UX of pin/unpin. We might want to reset the expiration upon unpin, otherwise unpinning an expired backup could result in a near-immediate GC, which might not be desirable.

Feature request: The ability to ship a preserved backup to a source of record separate from the primary backup location for audits/reference.

That will be covered by #103

Yes! Simple is best here.
I think the key flag here is the “Pin / Unpin” action.  Pinning a backup should apply a label to the backup, such that a replication policy can be configured to match pinned backups.
Specifying a ttl of 0 automatically sets the Pin flag
Changing a backup’s expiration after it’s been created feels like a different feature/issue to me.

Is there any update on the pin/unpin front? I'm curious if I can change or delete the TTL and expiration from deBackup CRD?

@bastoker we haven't implemented this feature yet, no.
You can always manually edit the TTL/expiration of a backup, e.g. kubectl -n velero edit backup.velero.io <NAME>. Note that the status.expiration field is the one that Velero will actually look at to determine when to delete expired backups.


Add Epic Games HTTP CDNs

What CDN does this PR relate to
Epic Games :tada:
Does this require running via sniproxy
No
Capture method
Vendor supplied
Testing Scenario
Home instance
Testing Configuration
docker-compose.yml:
version: '2'
services:
  dns:
    image: steamcache/steamcache-dns:localdomains
    env_file: .env
    ports:
      - ${DNS_IP}:53:53/udp
    volumes:
      - ../cache-domains/:/opt/cache-domains/

  sniproxy:
    image: steamcache/sniproxy:latest
    env_file: .env
    ports:
      - 443:443/tcp

  monolithic:
    image: steamcache/monolithic:latest
    env_file: .env
    volumes:
      - ${CACHE_ROOT}/cache:/data/cache
      - ${CACHE_ROOT}/logs:/data/logs
    ports:
      - ${LANCACHE_IP}:80:80/tcp

(Some other minor hacks required on monolithic to get the new names in the map file.)
Downloaded Unreal Tournament through the cache server, reported misses.
Sniproxy output
     33 epicgames-download1.akamaized.net

Likely from the launcher download.

I'd be tempted to make it sniproxy required, to catch the probable Launcher download, otherwise, thumbs up from me.

Good catch, will do so.

Changed.

can u make one video step by step configure catch server for epic games?

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/uklans/cache-domains/pull/89?email_source=notifications&email_token=AML7UVF27JVZKWB6363DKPTP25CL3A5CNFSM4HRI5O32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODX2M5ZI#issuecomment-502583013,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AML7UVH5A7PXEW2MCAPFDD3P25CL3ANCNFSM4HRI5O3Q
.


Console Does not respond, no error message given

I am very new at Julia.I am having a problem with Atom/Julia. I think a similar one has been reported in https://github.com/JunoLab/atom-julia-client/issues/126. I installed it this week and it was working until today.
The console does not give anything. It seem to be "thinking" but does not give an error. I am using Mac El Capitan. This is what appears in when I do Cmd-Alt-I. Thank you very much.
/Applications/Atom.app/Contents/Resources/app.asar/src/text-editor-component.js:957 /deep/ combinator is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details./deep/ combinator is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details.
/Applications/Atom.app/Contents/Resources/app.asar/src/text-editor-component.js:957 ::shadow pseudo-element is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details.
events.js:141 Uncaught Error: getaddrinfo ENOTFOUND localhost
events.js:141 Uncaught Error: getaddrinfo ENOTFOUND localhosterrnoException @ dns.js:25onlookup @ dns.js:76

I think we're finding the julia binary correctly here, but there's a problem with communication. Can you try something like ping localhost in a terminal?

You were right!
ping localhost did not respond. So I went to look to me etc/hosts file. It seems that the problem was there.
It works now! Thank you very much!!

Is this something we can/should guard against, e.g. by connecting to <IP_ADDRESS> directly?

Yeah, I guess we could do that, but I'm not sure if it'd be worth it. The wiki article for localhost says that <IP_ADDRESS> isn't always the IP of the loopback device (it is "for most devices").
But tbh, I've never seen a system where localhost behaved strangely. or <IP_ADDRESS> wasn't the loopback device.


[SDA-6965] Add validation to path ocm/user roles

Related issue: https://issues.redhat.com/browse/SDA-6965
What
A validation to the path was done to acc roles, but not for ocm/user roles
Why
Making sure client knows what is happening if he inputs a wrong path

lgtm

/lgtm


'calcium activated cation channel activity' is unsatisfiable in CL

Whilst reviewing CL release v2022-12-15, many unsatisfiable classes were discovered. All but one can be resolved by removing a range restriction.
The remaining unsatisfiable class is GO:0005227 'calcium activated cation channel activity'. I think this needs to be fixed on the GO side.
As proposed by @gouttegd:

This one seems to be caused by regulated by (RO:0002334), which has both a domain and a range restriction to process (BFO:0000015) (so, a process is regulated by another process), where process is an occurrent.

calcium activated cation channel activity is defined as gated channel activity (a process, OK) that is regulated by some calcium(2+) (not a process).

Can an editor please review and resolve?

Think instead this is a RO issue, see this comment: https://github.com/obophenotype/cell-ontology/issues/1782#issuecomment-1363995278

Proposal by @gouttegd:

There is another set of relations intended for causal relations between a process on one side and a material entity on another side (RO:0002595 and its subclasses), the definition of calcium activated cation channel activity should probably use one of those instead.

Of note, my comment above is misleading. According to @dosumis the proper fix would be to keep using the regulated_by relation (RO:0002334), but to change the object to calcium ion binding (GO:0005509), which is ultimately a BFO process and would therefore satisfy the range constraint of RO:0002334.

Thanks, I changed the definition as suggested.
I also added a logical definition to GO:0015269 calcium-activated potassium channel activity
'gated channel activity'
and ('positively regulated by' some 'calcium ion binding')
and ('has primary input' some 'potassium(1+)')
, and removed asserted classes:
-is_a: GO:0005227 ! calcium activated cation channel activity
-is_a: GO:0005267 ! potassium channel activity
-relationship: has_primary_input CHEBI:29103 ! potassium(1+)
and changed the logical definitions of GO:0070089 'chloride-activated potassium channel activity'
from
'gated channel activity' and ('regulated by' some 'potassium(1+)') and ('has primary input' some chloride)
to 'gated channel activity' and ('regulated by' some 'potassium ion binding') and ('has primary input' some chloride)


Bullk job creation URI error

Hi Dev's,
I'm trying to use jsForce for bulk operations. I'm creating a conn using accessToken, instanceUrl and passing it to this function, but it is trowing Error: Invalid URI "/services/async/42.0/job". I have tried other operations, everything returns me same wherever I use conn.bulk.
I have checked the API version using postman it is working. Everything works perfectly, I was able create Job and run the batch through postman.
Can you check and confirm whether it is function or repo has this issue
export const writeAccounts= async (conn) => {
 var accounts = [
    { Name: "Account #1" },
    { Name: "Account #2" },
    { Name: "Account #3" }
  ];
  // Create job and batch
  var job = conn.bulk.createJob("Account", "insert");
  var batch = job.createBatch();
  // start job
  batch.execute(accounts);
  // listen for events
  batch.on("error", function(batchInfo) {
    // fired when batch request is queued in server.
    console.log("Error, batchInfo:", batchInfo);
  });
  batch.on("queue", function(batchInfo) {
    // fired when batch request is queued in server.
    console.log("queue, batchInfo:", batchInfo);
    batch.poll(1000 /* interval(ms) */, 20000 /* timeout(ms) */); // start polling - Do not poll until the batch has started
  });
  batch.on("response", function(rets) {
    // fired when batch finished and result retrieved
    for (var i = 0; i < rets.length; i++) {
      if (rets[i].success) {
        console.log("#" + (i + 1) + " loaded successfully, id = " + rets[i].id);
      } else {
        console.log(
          "#" +
            (i + 1) +
            " error occurred, message = " +
            rets[i].errors.join(", ")
        );
      }
    }
    // ...
  });
}

Console error.
Error: Invalid URI "/services/async/42.0/job"
Thanks in advance.

Sorry my fault I was calling it out of conn scope


STEP-25: Create unit and integration tests for "Lighting information"

Create unit and integration tests for "Lighting information"
Acceptance criteria:

unit test created
integration test created

Implements in https://github.com/EllsaG/power-supply-design/pull/67 pull request.

Implements in https://github.com/EllsaG/power-supply-design/pull/73 pull request.
Added new tests.


Help me please

"New Terminal" and "New Terminal with Profile"
Can't work
https://user-images.githubusercontent.com/59216475/103476743-fbf8ba80-4dea-11eb-80ad-5bf65b8002cf.mp4
https://user-images.githubusercontent.com/59216475/103476757-103cb780-4deb-11eb-851d-6fa6ec6b1a94.mp4
Version: 1.0.123
Platform: darwin 20.2.0
Plugins: none

Same issue on Big Sure 11.1 (intel CPU)
Reverting to 1.0.122 fixes the issue.

Same issue on Big Sure 11.1 (intel CPU)
Reverting to 1.0.122 fixes the issue.

Version: 1.0.125  Still unable to use

Version: 1.0.125  Still unable to use

@suban1597 can you edit your post's title for a more explicit one please?

@suban1597 can you edit your post's title for a more explicit one please?

@suban1597 can you modify your post's title for a more explicit one please?

@suban1597 can you modify your post's title for a more explicit one please?

I'm confirming what's @DucretJe is saying
I'm also on Big Sure 11.11 (intel CPU)
Reverting to 1.0.122 also fixes the issue for me.

I'm confirming what's @DucretJe is saying
I'm also on Big Sure 11.11 (intel CPU)
Reverting to 1.0.122 also fixes the issue for me.

Same problem here.
MacOS BigSur 11.1 (MBA mid 2020, intel i5)

Same problem here.
MacOS BigSur 11.1 (MBA mid 2020, intel i5)

Same like problem on Win10 19042.685  (intel CPU)
Reverting to 1.0.122 also fixes the issue for me.
https://user-images.githubusercontent.com/29157472/104265063-be212380-54c7-11eb-96ed-a4d907ef9139.mp4

Same like problem on Win10 19042.685  (intel CPU)
Reverting to 1.0.122 also fixes the issue for me.
https://user-images.githubusercontent.com/29157472/104265063-be212380-54c7-11eb-96ed-a4d907ef9139.mp4


Testing falling

Tests fail after merging the Nepal work.

This is apparently related to the tests not running in order in the GitHub workflow as the error implies that the data was not found in the model preparation test. This, however, worked well locally.
I will try a fix adding test order with pytest-order


Convert mysql syntax to query builder laravel

i have some problem, the problem is i can't to understand how to convert sql syntax to laravel query builder. The example :
in my sql query :
SELECT *, REPLACE(SenderNumber,'+62','0') AS rep FROM inbox
im trying to make a query builder like this:
DB::select("SELECT *, REPLACE(SenderNumber,'+62','0') AS rep FROM inbox")
But its give me an error! maybe you can help me

Hi @azzario .  Thanks for your interest in Laravel!  The Github issue tracker is for bug reporting only.  There are many tools available for you to find help learning Laravel, such as the Laravel Slack channel, StackOverflow, Laracasts Forum, and Laravel.io.  I would suggest closing this issue, and asking in one of those sites.
Thanks


Release v1.2.5

Also updated changelog and added a new section for the next release.

@jafingerhut and @jnfoster, since neither Ryan or I have done this before, I'd like approval from you too before merging (though I'll update the date I say it's released to the date we actually do the release once I've got the approvals).


can you please update nuget package

Hi,
you update [Added support for https and a second option for the constructor], the sourcecode, but you never updated the nuget package... can u please update the nuget package?

I'm away from my box for most of today so will do this either later today or tomorrow

Actually I've taken a closer look at this and I did not do this change. I did the change for adding a timeout to the constructor. When I did that change you updated the package version for that shortly after I made the pull request. You need to contact https://github.com/o-e

It was such a simple change I decided to do it myself. You should get a pull request

Published 1.1.55


requireSemicolons: check for ClassProperty

Ref https://github.com/babel/babel/pull/3225

Wow, didn't even know you could do that.
LGTM

It's going to be hilarious when the babel people figure out this is a bug and the semicolon-free people need a semicolon remover.

Oh right, we need the same action for disallowSemicolons )

When prop without semicolon will became a correct syntax that is

Well when that happens it sounds like a good first bug/beginner friendly issue to me! :smile:

@markelog It is already valid to omit semicolons after class properties in most cases.

@michaelficarra
Really?

semicolons are required always.

Really.

Don't see any clarification on the ASI in original link i provided, but judging by the interesting original discussion and rules of ASI you should be right.
Which means babel pr was indeed falsy (not this pr though) and that we can add same opposite logic to disallowSemicolons rule.
Thanks for playing!

You're welcome. Don't forget about this case which I hadn't thought of at first.

here’s the ASI clarification


Restore Shout behavior in private windows

@astorije you may say "it's a feature" as much as you like, but for me it's a bug, which needs to be fixed :blush:
So this PR:

restores Shout behavior and sends user back to the previous channel when closing current one (window.history is used)
restores Shout's close button in private window only

Conflicts with #1148, #1117
Related: #1099, #489, #503

indifferent on close button, :+1: on previous window

So, these are 2 different things.
In terms of the close button on private windows, I don't really care about that. I will just hide it in css. I definitely don't want the button, but if others want it, that's fine.
But in terms of moving back to the previous channel, I am very strongly against this.  When I close, and it takes me back to the previous channel, it clears the unread in that channel, and that's not always what I want to do. If I want to go to a specific channel, I want to go to a specific channel, and the idea that we will assume that the user wants to go back to the previous one? I really don't like that. Massive 👎 to that.

the idea that we will assume that the user wants to go back to the previous one?

This PR focuses on private chats (which are combined with whois atm). When you open a whois window to check user, it's obvious to returnt to previous chat on close. If you don't like it as a general idea - it's fine, but for private chats it's a must have feature.
Also this history clear on every time init is called, so channels will be unaffected by this PR in most cases.

This PR focuses on private chats (which are combined with whois atm).

Right, well I feel like you are combining issues.
To have different behaviour for PMs and rooms is confusing.
Now, I think the issue you are coming across is that to see whois, you have to be moved to the user's pm, which is a bit confusing. I accept this issue. But the best way to solve it is (imho) to show the whois in a modal, rather than a chat window. I think that would solve this issue.

but for private chats it's a must have feature.

Just a quick point, is that when people tell us something is a "must have feature" it really puts us off interacting with them. Clearly it's not a must have feature, because we have hundreds of people using the lounge on a daily basis, and they haven't left because of it. So please don't be so hyperbolic.

because we have hundreds of people using the lounge on a daily basis, and they haven't left because of it. So please don't be so hyperbolic.

It's really pointless to argue, when someone mentions thousands/millions/billions of users. Just look at M$ with Win10.

My point is just that hyperbolic "must have feature" is a term that really annoys people, and is unnecessary. I'm trying to help you not come across as abrasive, and trying to improve the communication, that's all.

the best way to solve it is (imho) to show the whois in a modal, rather than a chat window

I'd say putting whois output in a modal is just changing the problem, from unnecessarily creating and focusing a new chat window that must be closed to unnecessarily creating and focusing a modal that must be dismissed. Putting whois responses inline in the current chat window would be my ideal solution, but I won't get too far into that here. It's been discussed.

I have a few issues with this PR.
First off, being called out as the first statement of a PR makes me want to run away from it and never review it. Please please avoid making things personal, it's not the place, and even if it was, it's not desired and will always play against you.
I have noticed a few of these, and this is my way of asking you once and for all to stay respectful, before things go out of proportion.
The other thing that does not work well here is calling something a bug because it had a different behavior on Shout. This project is The Lounge. It is not Shout. There have been 1263 commits (+244%), 30 releases, 506 PR merged since the fork from Shout. Things are different, and in almost all cases, there was a good reason they are.
We may disagree on the changes, but you have to realize that even if in the end we agreed on a change, starting with "Restore Shout behavior" or calling something a bugfix because it brings back a direction change from Shout, it's the best way of getting 👎 :)
Anyway, I fully agree with @YaManicKill on all points that he exposed.
UX-wise, this is bad. As an example, Slack does that and is subject to the issue @YaManicKill mentioned, as well as moving the scrollbar all the way each time. Terrible user experience.
An interesting idea (because I understand the underlying statement, don't get me wrong) is what Chrome does: if you open a tab and close it without switching to another tab, your focus will go back to the active tab before opening a new tab. If you open a tab, switch tab, go back, then close, your focus will go to the closest tab.
For us, that couldn't work as is because of the unread messages @YaManicKill mentioned, but we could have an hybrid: when opening / closing a private DM, bring back to the previous window if there was no switch between windows and if that was done within some time (like 30 seconds or something), or to the server window otherwise.
This probably sounds like a stretch saying it like that, but it actually feels so natural that most people don't even realize Chrome does that :)

Closing this as well.


Is there an existing issue for the same bug?

[X] I have checked the existing issues.

Branch name
main
Commit ID
674d342761d7f03df5c58854f9c9309fb5cf40f2
Other environment information
以前的版本有源码启动的介绍，现在新的版本没有，是因为源码启动本来就有问题吗？？

Actual behavior
以前的版本中有介绍源码启动，我的步骤是按照源码启动的步骤来的，先成功启动了四个基础容器

根据.env的实际情况设置service_conf.yaml，
我的.env文件：
# Version of Elastic products
STACK_VERSION=8.11.3

# Port to expose Elasticsearch HTTP API to the host
ES_PORT=1200

# Set the Elasticsearch password
ELASTIC_PASSWORD=infini_rag_flow

# Port to expose Kibana to the host
KIBANA_PORT=6601
KIBANA_USER=rag_flow
KIBANA_PASSWORD=infini_rag_flow

# Increase or decrease based on the available host memory (in bytes)

MEM_LIMIT=8073741824

MYSQL_PASSWORD=infini_rag_flow
MYSQL_PORT=5455

# Port to expose minio to the host
MINIO_CONSOLE_PORT=9001
MINIO_PORT=9000

MINIO_USER=rag_flow
MINIO_PASSWORD=infini_rag_flow

REDIS_PORT=6379
REDIS_PASSWORD=infini_rag_flow

SVR_HTTP_PORT=9380

RAGFLOW_VERSION=v0.11.0

TIMEZONE='Asia/Shanghai'

# Inside GFW, we need the following huggingface.co mirror:
HF_ENDPOINT=https://hf-mirror.com

######## OS setup for ES ###########
# sysctl vm.max_map_count
# sudo sysctl -w vm.max_map_count=262144
# However, this change is not persistent and will be reset after a system reboot.
# To make the change permanent, you need to update the /etc/sysctl.conf file.
# Add or update the following line in the file:
# vm.max_map_count=262144

我的service_conf.yaml文件：
ragflow:
  host: localhost
  http_port: 9380
mysql:
  name: 'rag_flow'
  user: 'root'
  password: 'infini_rag_flow'
  host: 'localhost'
  port: 5455
  max_connections: 100
  stale_timeout: 30
minio:
  user: 'rag_flow'
  password: 'infini_rag_flow'
  host: 'minio:9000'
es:
  hosts: 'http://localhost:1200'
  username: 'elastic'
  password: 'infini_rag_flow'
redis:
  db: 1
  password: 'infini_rag_flow'
  host: 'http://localhost:6379'

# postgres:
#   name: 'rag_flow'
#   user: 'rag_flow'
#   password: 'infini_rag_flow'
#   host: 'postgres'
#   port: 5432
#   max_connections: 100
#   stale_timeout: 30
# s3:
#   endpoint: 'endpoint'
#   access_key: 'access_key'
#   secret_key: 'secret_key'
#   region: 'region'
# azure:
#   auth_type: 'sas'
#   container_url: 'container_url'
#   sas_token: 'sas_token'
# azure:
#   auth_type: 'spn'
#   account_url: 'account_url'
#   client_id: 'client_id'
#   secret: 'secret'
#   tenant_id: 'tenant_id'
#   container_name: 'container_name'
# user_default_llm:
#   factory: 'Tongyi-Qianwen'
#   api_key: 'sk-xxxxxxxxxxxxx'
#   base_url: ''
# oauth:
#   github:
#     client_id: xxxxxxxxxxxxxxxxxxxxxxxxx
#     secret_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
#     url: https://github.com/login/oauth/access_token
#   feishu:
#     app_id: cli_xxxxxxxxxxxxxxxxxxx
#     app_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
#     app_access_token_url: https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal
#     user_access_token_url: https://open.feishu.cn/open-apis/authen/v1/oidc/access_token
#     grant_type: 'authorization_code'
# authentication:
#   client:
#     switch: false
#     http_app_key:
#     http_secret_key:
#   site:
#     switch: false
# permission:
#   switch: false
#   component: false
#   dataset: false

bash ./entrypoint.sh 之后报错如下：
(ragflow-py3.12) ly@BOE:~/SPACE_SDD/Projects/ragflow$ bash ./entrypoint.sh
[WARNING] Load term.freq FAIL!
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 14:42:54,675] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
[WARNING] [2024-09-29 14:42:54,676] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
[WARNING] Load term.freq FAIL!
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 14:42:54,680] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
[WARNING] [2024-09-29 14:42:54,680] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/site-packages/pypdf/_crypt_providers/_cryptography.py:32: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  from cryptography.hazmat.primitives.ciphers.algorithms import AES, ARC4
[WARNING] [2024-09-29 14:42:55,537] [redis_conn.__open__] [line:44]: Redis can't be connected.
/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/site-packages/pypdf/_crypt_providers/_cryptography.py:32: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  from cryptography.hazmat.primitives.ciphers.algorithms import AES, ARC4
[WARNING] [2024-09-29 14:42:58,609] [redis_conn.__open__] [line:44]: Redis can't be connected.

    ____                 ______ __
   / __ \ ____ _ ____ _ / ____// /____  _      __
  / /_/ // __ `// __ `// /_   / // __ \| | /| / /
 / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/
              /____/

[WARNING] [2024-09-29 14:43:01,989] [redis_conn.set_obj] [line:80]: [EXCEPTION]set_objTASKEXE||'NoneType' object has no attribute 'set'
[WARNING] [2024-09-29 14:43:01,989] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:01,989] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:01,990] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:01,990] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:02,991] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:02,992] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:02,992] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:03,993] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:03,993] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:03,993] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:04,994] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:04,994] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:04,994] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:05,995] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:05,995] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:05,995] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:06,996] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:06,997] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:06,997] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:07,998] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:07,998] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:07,998] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:08,999] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:08,999] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:09,000] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:10,000] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:10,001] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:10,001] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:11,001] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:11,001] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:11,001] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:12,002] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:12,003] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:12,003] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:13,004] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:13,004] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:13,004] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
Start to insert 2 OpenAI embedding models...
init web data success:11.787681102752686
[INFO] [2024-09-29 14:43:13,719] [_internal._log] [line:97]: WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://localhost:9380
[INFO] [2024-09-29 14:43:13,720] [_internal._log] [line:97]: Press CTRL+C to quit
[WARNING] [2024-09-29 14:43:14,005] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:14,005] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:14,005] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:15,006] [redis_conn.get_unacked_for] [line:163]: [EXCEPTION]xpending_range: task_consumer_0||'NoneType' object has no attribute 'xinfo_groups'
[WARNING] [2024-09-29 14:43:15,006] [redis_conn.__open__] [line:44]: Redis can't be connected.
[WARNING] [2024-09-29 14:43:15,007] [redis_conn.queue_consumer] [line:146]: [EXCEPTION]consumer: rag_flow_svr_queue||'NoneType' object has no attribute 'xinfo_groups'
^CTraceback (most recent call last):
  File "/home/ly/SPACE_SDD/Projects/ragflow/rag/svr/task_executor.py", line 420, in <module>
    main()
  File "/home/ly/SPACE_SDD/Projects/ragflow/rag/svr/task_executor.py", line 320, in main
    rows = collect()
           ^^^^^^^^^
  File "/home/ly/SPACE_SDD/Projects/ragflow/rag/svr/task_executor.py", line 116, in collect
    time.sleep(1)
KeyboardInterrupt
^CException ignored in: <module 'threading' from '/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py'>
Traceback (most recent call last):
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py", line 1553, in _shutdown
Exception ignored in: <module 'threading' from '/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py'>
Traceback (most recent call last):
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py", line 1553, in _shutdown
    atexit_call()
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/concurrent/futures/thread.py", line 31, in _python_exit
    t.join()
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py", line 1112, in join
    atexit_call()
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/concurrent/futures/thread.py", line 31, in _python_exit
    t.join()
    self._wait_for_tstate_lock()
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py", line 1112, in join
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py", line 1132, in _wait_for_tstate_lock
    if lock.acquire(block, timeout):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt:
    self._wait_for_tstate_lock()
  File "/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/threading.py", line 1132, in _wait_for_tstate_lock
    if lock.acquire(block, timeout):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt:
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 14:43:18,272] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 14:43:18,277] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/site-packages/pypdf/_crypt_providers/_cryptography.py:32: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  from cryptography.hazmat.primitives.ciphers.algorithms import AES, ARC4
[WARNING] [2024-09-29 14:43:22,064] [redis_conn.__open__] [line:44]: Redis can't be connected.

    ____                 ______ __
   / __ \ ____ _ ____ _ / ____// /____  _      __
  / /_/ // __ `// __ `// /_   / // __ \| | /| / /
 / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/
              /____/

Start to insert 2 OpenAI embedding models...
init web data success:11.938937902450562
[INFO] [2024-09-29 14:43:36,955] [_internal._log] [line:97]: WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://localhost:9380
[INFO] [2024-09-29 14:43:36,956] [_internal._log] [line:97]: Press CTRL+C to quit

Expected behavior
No response
Steps to reproduce
1、cp docker/entrypoint.sh ./
2. 添加如下两行
PY=/home/ly/SPACE_SDD/miniconda3/envs/ragflow/bin/python
export PYTHONPATH=/home/ly/SPACE_SDD/Projects/ragflow
3. docker compose -f docker-compose-base.yml up -d
4. cd .. && chmod +x entrypoint.sh
5. bash ./entrypoint.sh

Additional information
No response

刚找到了开发者的文档，在“docs/guides/develop/launch_ragflow_from_source.md”，按照新的文档启动ragflow
bash docker/entrypoint.sh

报如下错误：
ModuleNotFoundError: No module named 'api'

刚找到了开发者的文档，在“docs/guides/develop/launch_ragflow_from_source.md”，按照新的文档启动ragflow
bash docker/entrypoint.sh

报如下错误：
ModuleNotFoundError: No module named 'api'

为了防止上述错误，得按照之前版本的做法，要把entrypoint.sh 放到工程根目录，然后运行。
同样的，修改“service_conf.yaml” 和 .env一致。最后运行bash ./entrypoint.sh ，没有报错，但是网页登录不进去....
终端日志如下：
(ragflow-py3.12) ly@BOE:~/SPACE_SDD/Projects/ragflow$ bash ./entrypoint.sh
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 15:53:54,531] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 15:53:54,536] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 15:53:54,554] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
[WARNING] Load term.freq FAIL!
[WARNING] [2024-09-29 15:53:54,559] [synonym.__init__] [line:40]: Realtime synonym is disabled, since no redis connection.
/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/site-packages/pypdf/_crypt_providers/_cryptography.py:32: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  from cryptography.hazmat.primitives.ciphers.algorithms import AES, ARC4
/home/ly/SPACE_SDD/miniconda3/envs/ragflow/lib/python3.11/site-packages/pypdf/_crypt_providers/_cryptography.py:32: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  from cryptography.hazmat.primitives.ciphers.algorithms import AES, ARC4

    ____                 ______ __
   / __ \ ____ _ ____ _ / ____// /____  _      __
  / /_/ // __ `// __ `// /_   / // __ \| | /| / /
 / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/
              /____/

Start to insert 2 OpenAI embedding models...
init web data success:44.41947340965271
[INFO] [2024-09-29 15:54:51,229] [_internal._log] [line:97]: WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://<IP_ADDRESS>:9380
[INFO] [2024-09-29 15:54:51,230] [_internal._log] [line:97]: Press CTRL+C to quit

最后经过一番摸索，终于成功了，感觉“launch_ragflow_from_source.md”这个文档写的不是很完善，
有几个重要的点没有写，但是以前的版本写了：

比如“entrypoint.sh”这个启动文件应该拷贝到项目根目录
在“entrypoint.sh”要添加

PY=/home/ly/SPACE_SDD/miniconda3/envs/ragflow/bin/python
export PYTHONPATH=/home/ly/SPACE_SDD/Projects/ragflow

service_conf.yaml 和 .env 中的实际环境要对应
node的版本必须是v18.20.4   #2426

我启动./entrypoint.sh以后报下下面的错：
requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NewConnectionError('<urllib3.contrib.socks.SOCKSHTTPSConnection object at 0x7f083f100ed0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
Traceback (most recent call last):
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn
conn = socks.create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/socks.py", line 180, in create_connection
for r in socket.getaddrinfo(proxy_addr, proxy_port, 0, socket.SOCK_STREAM):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/socket.py", line 974, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno -3] Temporary failure in name resolution
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/urllib3/connectionpool.py", line 789, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/urllib3/connectionpool.py", line 490, in _make_request
raise new_e
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/urllib3/connectionpool.py", line 466, in _make_request
self._validate_conn(conn)
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1095, in _validate_conn
conn.connect()
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/urllib3/connection.py", line 693, in connect
self.sock = sock = self._new_conn()
^^^^^^^^^^^^^^^^
File "/home/lenovo/anaconda3/envs/ragflow/lib/python3.11/site-packages/urllib3/contrib/socks.py", line 150, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.contrib.socks.SOCKSHTTPSConnection object at 0x7f1e4f94acd0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution
The above exception was the direct cause of the following exception:

@jdx2099 你这个看上去是网络问题，你的电脑能科学上网吗，不行的话尝试一下

需要将ragflow源代码的根目录添加到PYTHONPATH，即在ragflow根目录执行 export PYTHONPATH=$(pwd)，然后再执行bash docker/launch_backend_service.sh


Fix race condition on containers retrieval

As the code is using forEach, containers needs to be protected against concurrent access.

Please sign your commits following these rules:
https://github.com/moby/moby/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "master" git@github.com:exekias/libcompose.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.


Update Additional channels article

Better to clarify which channel adapters are found in which repositories.
Clean up links: we should start with the table in the SDK README., then include a very small number of links into to the Botkit and Community repos.

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

ID: 6dab6cb1-d601-d9c3-a7a2-7f29f0c21fe4
Version Independent ID: c2a81b49-88e6-8718-5cd1-64c0eb8f07e6
Content: Additional channels - Bot Service
Content Source: articles/bot-service-channel-additional-channels.md
Service: bot-service
GitHub Login: @ivorb
Microsoft Alias: kamrani

Partially solved.


Account for repatriate_reserved

repatriate_reserved gets called in a few places (e.g. reaping a preimage, reaping an inactive voter, providing judgement, closing social recovery) and transfers some balance between two accounts. Since this is called internally, you can't see the parameters to this function and there's no way to reconcile the account balances externally.
Also, the amount transferred might not equal the amount passed in. Here in democracy we discard the leftover amount but report the param in the event. However, if the account had been slashed, that's not the actual amount transferred.
We should emit an event here with the addresses involved, actual amount transferred, and free/reserved status.
Likewise, unreserve transfers some amount between reserved and free balance, and the amount might not equal the param passed into it. An event here with who, value would account for this.
Always open to non-event-based solutions as I understand the overhead, but these functions are not called regularly, they tend to be things that happen a few times per month.

I am fine with adding events as well since they have been optimised lately, but doing this stuff offchain is also rather easy (better to say: easier than things like fee calculation).


Add support for oneOf in openapi3 documents

It fails while trying to access getAllOf which is null (tested with version 0.44.0)
        m.getAllOf.asScala.toList.get(1).flatMap {

OpenApi doc:
  "openapi": "3.0.0",
  "info": {
    "title": "---",
    "version": "0.1.0"
  },
  "components": {
    "schemas": {
      "TypeB": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "description": "TypeB",
        "required": [
          "type"
        ]
      },
      "TypeA": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "description": "TypeA",
        "required": [
          "type"
        ]
      },
      "Foo": {
        "type": "object",
        "description": "Foo",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TypeA"
          },
          {
            "$ref": "#/components/schemas/TypeB"
          }
        ]
      }
    }
  },
  "paths": {
    "/foobar": {
      "get": {
        "operationId": "getFoo",
        "responses": {
          "200": {
            "description": "Response 200: FOO",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Foo"
                }
              }
            }
          }
        }
      }
    }
  }
}

However, it does not fail if the oneOf is surrounded by a allOf, like so:
      "Foo": {
        "type": "object",
        "description": "Foo",
        "allOf": [{
          "type": "object",
          "oneOf": [
            {
              "$ref": "#/components/schemas/TypeA"
            },
            {
              "$ref": "#/components/schemas/TypeB"
            }
          ]
        }]
      }

Thanks for the report! We currently don't have support for oneOf, only allOf.
That being said, I suspect most of the allOf infrastructure could be generalized to support the oneOf case, likely by generating a sealed trait representing all options withAnyVal members

@blast-hardcheese thanks for the feedback, I thought it was supported.

I run into the same issue, one note, the wrapping in allOf only works in that it does not end with an NPE, the generated code is incorrect, repeating arguments in the generated case class if there are repeated names in the "oneOf" member schemas.
Are you planning to put this enhancement in the backlog of the project?

@jmpicnic Pull requests in this direction are entirely welcome! Other than that, I can't promise when it'll be triaged by us.
If you're interested in contributing, I'd love to brainstorm some directions we can take!

We would like to add support for oneOf in the best case via sealed types so the generated types can be used for exhaustive pattern matching.
This is our current plan.
Given this schema:
openapi: 3.0.0
info:
  description: "This is a sample server Petstore server.  You can find out more about     Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).      For this sample, you can use the api key `special-key` to test the authorization     filters."
  version: "1.0.0"
  title: "Swagger Petstore"
components:
  schemas:
    Pet:
      oneOf:
        - $ref: '#/components/schemas/Dog'
        - $ref: '#/components/schemas/Cat'
      discriminator:
        propertyName: case
        mapping:
          dog: '#/components/schemas/Dog'
          cat: '#/components/schemas/Cat'
    Dog:
      type: object
      properties:
        bark:
          type: boolean
        breed:
          type: string
          enum: [Dingo, Husky, Retriever, Shepherd]
    Cat:
      type: object
      properties:
        hunts:
          type: boolean
        age:
          type: integer
paths:
  /pet/{id}:
    post:
      summary: "Add a new pet to the store"
      description: ""
      operationId: "addPet"
      parameters:
      - name: id
        in: path
        description: "Pet object that needs to be added to the store"
        required: true
        schema:
          $ref: "#/components/schemas/Pet"
      responses:
        405:
          description: "Invalid input"

We would like to produce:
/*
 * This file was generated by Guardrail (https://github.com/twilio/guardrail).
 * Modifications will be overwritten; instead edit the OpenAPI/Swagger spec file.
 */
package swagger.definitions
import io.circe._
import io.circe.syntax._
import io.circe.generic.semiauto._
import cats.syntax.either._
sealed trait Pet
object Pet {
  val discriminator: String = "case"
  implicit val encoder: Encoder[Pet] = Encoder.instance({
    case e: Dog =>
      e.asJsonObject.add(discriminator, "Dog".asJson).asJson
    case e: Cat =>
      e.asJsonObject.add(discriminator, "Cat".asJson).asJson
  })
  implicit val decoder: Decoder[Pet] = Decoder.instance { c =>
    val discriminatorCursor = c.downField(discriminator)
    discriminatorCursor.as[String].flatMap({
      case "Dog" =>
        c.as[Dog]
      case "Cat" =>
        c.as[Cat]
      case tpe =>
        Left(DecodingFailure("Unknown value " ++ tpe ++ " (valid: Dog, Cat)", discriminatorCursor.history))
    })
  }
}

case class Cat(hunts: Option[Boolean] = None, age: Option[BigInt] = None) extends Pet
object Cat {
  implicit val encodeCat: ObjectEncoder[Cat] = {
    val readOnlyKeys = Set[String]()
    Encoder.forProduct2("hunts", "age") { (o: Cat) => (o.hunts, o.age) }.mapJsonObject(_.filterKeys(key => !(readOnlyKeys contains key)))
  }
  implicit val decodeCat: Decoder[Cat] = Decoder.forProduct2("hunts", "age")(Cat.apply _)
}

case class Dog(bark: Option[Boolean] = None, breed: Option[String] = None) extends Pet
object Dog {
  implicit val encodeDog: ObjectEncoder[Dog] = {
    val readOnlyKeys = Set[String]()
    Encoder.forProduct2("bark", "breed") { (o: Dog) => (o.bark, o.breed) }.mapJsonObject(_.filterKeys(key => !(readOnlyKeys contains key)))
  }
  implicit val decodeDog: Decoder[Dog] = Decoder.forProduct2("bark", "breed")(Dog.apply _)
}

All necessery pieces seem to be already in place, we only have to add a sealed modifier on the base type & put all subtypes into the same file.
If a case appears in multiple oneOf statements, all super types including their sub types should be rendered into the same file. Having this makes it possible to even support the rare cases where multiple inheritance of sealed traits is needed.
Does sound reasonable, any hints, suggestions or pointers?

@realvictorprm This sounds very reasonable. The one challenge is going to be coming up with a good way to model "all super types including their sub types should be rendered into the same file".
The strategy we come up with here in order to do this object graph and relocation could also be used for another issue (Unify identical objects, #77) since if we have this introspective power over the generated structures it may be possible to unify inlined object literals or even structures from different clients and servers, permitting client.getFoo().fold(handleOK = respond.OK(_), ...), which is currently not possible because there are different JVM paths to the objects, despite having the same structure.
My assumption was that the only way to implement that generally would be to implement shapeless record datatypes instead of emitting case classes, but I haven't thought too much about the implementation.

As far as first steps towards implementation, we need to consider:

Delaying full file render until after required components have been gathered
Flexible grouping and ordering infrastructure that isn't too tailored to Scala (ie: The Java impl would put the classes into a file named identically to the only public interface in the file)
Using NonEmptyList[<Component>] to ensure we don't end up with empty files

Additional complexity comes from how references currently exist in the namespace of currently generated objects. If possible, it would be great to move towards a uniquely descriptive identifier system that we could use to uniquely track parent-child relationships:
case class Component(id: UniquePointer, defn: Defn, parents: List[UniquePointer])

would likely need to translate into something similar to
val parent: (UniquePointer, FileName, NonEmptyList[(UniquePointer, Defn)])

This is still fairly abstract in my mind currently, but just thinking about where we'd need to go here, this is how I see it. Is this enough to go on for now, or do you have any further clarifying questions?

@blast-hardcheese is there any progress with this ticket? Is there a possibility that I can contribute to it?

@jantoebes I don't think anyone is working on this right now.  Not sure if @realvictorprm  has had a chance to start on this.  If you're game to take a look yourself, that would be awesome!

Would also like to see this feature added! We're able to hack around it at the moment because it seems like when Guardrail encounters a oneOf in a schema, it gracefully degrades to a definition of io.circe.Json. You can then manually (de)serialize in the handler. It's not my favourite but it seems to work, and most importantly the API users are none the wiser - they just see oneOf in the spec/docs as usual.
At some point I may have time to try and help out here, not sure when though. I agree with the direction proposed above.

Would also like to see this feature added! We're able to hack around it at the moment because it seems like when Guardrail encounters a oneOf in a schema, it gracefully degrades to a definition of io.circe.Json. You can then manually (de)serialize in the handler. It's not my favourite but it seems to work, and most importantly the API users are none the wiser - they just see oneOf in the spec/docs as usual.
At some point I may have time to try and help out here, not sure when though. I agree with the direction proposed above.

Can you expand on that? :D
Btw I would like this feature added too, it's a shame that I cannot model my datatypes in Scala using GADTs but using a lot of optional fields to manually check for existence or not.

@TonioGela not much to say besides that! The hack only works at the top-level request or response IIRC.
I haven't worked on this at all, and ultimately we moved to Tapir because of this and a few other pain points.

I haven't worked on this at all, and ultimately we moved to Tapir because of this and a few other pain points.

Tapir doesn't generate code from an open-api definition but generates the definition once you define the endpoints with his DSL as far as I know, so sadly is not an option for me :(

Hi!
Any progress on this issue? I can generate code for simple cases, but unfortunately I can't generate code for production specs 😞

Hi! Any progress on this issue? I can generate code for simple cases, but unfortunately I can't generate code for production specs (we use oneOf a lot to describe tagged unions ) 😞

No progress on this so far, but if all the branches of your oneOf are defined as components you could do a workaround like:
x-scala-type: Either[Either[C, B], A]
oneOf:
  - $ref: .../A
  - $ref: .../B
  - $ref: .../C

which isn't the best, but it could help get unblocked for the time being. You'll need to be sure to order the types sensibly, as if one is able to be represented as a subset of another, you won't be able to decode successfully without discriminator support.
A better solution would be to write something along the lines of:
sealed trait MyOneOf3[+A, +B, +C] {
  def fold[Z](fromA: A => Z, fromB: B => Z, fromC: C => Z): Z // implement this in the branches
}
final case class MyOneOf3A[A](value: A) extends MyOneOf3[A, Nothing, Nothing]
final case class MyOneOf3B[B](value: B) extends MyOneOf3[Nothing, B, Nothing]
final case class MyOneOf3C[C](value: C) extends MyOneOf3[Nothing, Nothing, C]

object MyOneOf3 {
  implicit def encoder[A, B, C](implicit A: Encoder[A], B: Encoder[B], C: Encoder[C]): Encoder[MyOneOf3[A, B, C]] =
    Encoder.instance[MyOneOf3[A, B, C]] {
      case MyOneOf3A(value) => A(value)
      // ... etc
    }
  implicit def decoder[A, B, C](implicit A: Decoder[A], B: Decoder[B], C: Decoder[C]): Decoder[MyOneOf3[A, B, C]] =
    A.map(MyOneOf3A.apply).or(B.map(MyOneOf3B.apply).or(C.map(MyOneOf3C.apply)))
}

... and stick that into a package somewhere, then use the imports configuration parameter in your sbt file like imports=List("com.example.foo.hacks._") which will add that import to all generated files. Then you can improve things like:
x-scala-type: MyOneOf3[A, B, C]
oneOf:
  - $ref: .../A
  - $ref: .../B
  - $ref: .../C

You'd still need to be aware of the ordering, but it would give you better ergonomics for use

To that end, what I have written above is very similar to how the response type mappers are managed, and generating this on-the-fly where we need oneOf support seems pretty reasonable.
One of the hard problems here (one of the reasons this is not currently implemented) is that object literals would need to be represented as nested case classes, with their own codecs and so on. Similarly, the oneOf itself would need to be defined as a child of wherever it is used.
A simplifying first step would be to just restrict oneOf to named components, both in which components it references and that it only occurs in top-level component definitions, which at least gives the required functionality for those that are able to accept this restriction.

Sorry for the delay in response.
oneOf is not currently supported natively, though
x-scala-type: Either[CreateLinkedClientSuccessIndividual, CreateLinkedClientSuccessBusiness]

may get you what you need.

Hello 👋
Any news on this?
The suggested workaround above doesn't seem to work.
I tried:
schemas:
  A:
    type: string
  B:
    type: number
  C:
    x-scala-type: Either[String, Long]
    oneOf:
    - $ref: #/components/schemas/A
    - $ref: #/components/schemas/B

but the definition for C isn't getting generated at all.

I would expect any reference to C to just be replaced with the Either[A, B], is that not happening?

sadly no, it's not

Hello,
Is there any progress on this issue?
WBR

Thanks again for this super useful library. Checking in to see what the current thinking on support for oneOf and anyOf is. Prior to full-fledged support, is it possible/desirable to have the generated code fall back to just i.e. io.circe.Json?  Would love to assist, just not sure I would know where to begin. Thanks!

I've been struggling with this one for a while, unfortunately, due to inherent complexity and modeling. io.circe.Json is exposed and accepted, and I'm leaning towards just using Either[A, Either[B, C]] as the underlying representation.
One of the unsolved problems that could use some assistance is ordering A,B, and C. String or Boolean are simple enough, but case class Foo(a: String) and case class Bar(a: String, b: Long) should attempt Bar before Foo, no matter the ordering in the specfile.
I'll push up a partial branch shortly once I've got the basic plumbing situated, if I've got time to finish it I'm happy to, if somebody else gets to it first then that would be more than appreciated.

@blast-hardcheese Cool, looking forward to trying it, and  happy to help test it out.

Ok, https://github.com/guardrail-dev/guardrail/pull/1881/ is an extraordinarily rough draft that gets close to where we need to be for this feature.
Concerns raised above pertaining to ordering are important to solve before merge, and also whether a single type representing Foo as an enumeration of the branches would be more ergonomic.
I don't have time to pursue this further at the moment, but the groundwork is done at least. I'm happy to collaborate if someone wants to take this over.

#1881 is now closer. From the following specification,

Spec is basically to support: oneOf: [TypeA, TypeB, TypeC, TypeD, TypeE]

openapi: 3.0.0
info:
  title: '---'
  version: 0.1.0
components:
  schemas:
    TypeA:
      type: object
      properties: { type: { type: string } }
      required: [ type ]
    TypeB:
      type: object
      properties: { type: { type: string } }
      required: [ type ]
    TypeC:
      type: object
      properties: { type: { type: string } }
      required: [ type ]
    TypeD:
      type: object
      properties: { type: { type: string } }
      required: [ type ]
    TypeE:
      type: object
      properties: { type: { type: string } }
      required: [ type ]
    Foo:
      type: object
      description: Foo
      x-scala-type: Bogus
      oneOf:
        - $ref: '#/components/schemas/TypeD'
        - $ref: '#/components/schemas/TypeA'
        - $ref: '#/components/schemas/TypeB'
        - $ref: '#/components/schemas/TypeC'
        - $ref: '#/components/schemas/TypeE'
paths:
  /foobar:
    get:
      operationId: getFoo
      responses:
        '200':
          description: 'Response 200: FOO'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Foo'

I was able to generate the following:
/*
 * This file was generated by guardrail (https://github.com/guardrail-dev/guardrail).
 * Modifications will be overwritten; instead edit the OpenAPI/Swagger spec file.
 */
package issues.issue195.server.akkaHttp.definitions
import cats.syntax.either._
import io.circe.syntax._
import cats.instances.all._
import _root_.issues.issue195.server.akkaHttp.Implicits._
sealed abstract class Foo
object Foo {
  implicit def encodeFoo: _root_.io.circe.Encoder[Foo] = _root_.io.circe.Encoder.instance({
    case members.TypeD(member) =>
      member.asJson
    case members.TypeA(member) =>
      member.asJson
    case members.TypeB(member) =>
      member.asJson
    case members.TypeC(member) =>
      member.asJson
    case members.TypeE(member) =>
      member.asJson
  })
  implicit def decodeFoo: _root_.io.circe.Decoder[Foo] = _root_.io.circe.Decoder[TypeD].map[_root_.issues.issue195.server.akkaHttp.definitions.Foo](members.TypeD.apply _).or(_root_.io.circe.Decoder[TypeA].map[_root_.issues.issue195.server.akkaHttp.definitions.Foo](members.TypeA.apply _)).or(_root_.io.circe.Decoder[TypeB].map[_root_.issues.issue195.server.akkaHttp.definitions.Foo](members.TypeB.apply _)).or(_root_.io.circe.Decoder[TypeC].map[_root_.issues.issue195.server.akkaHttp.definitions.Foo](members.TypeC.apply _)).or(_root_.io.circe.Decoder[TypeE].map[_root_.issues.issue195.server.akkaHttp.definitions.Foo](members.TypeE.apply _))
  object members {
    case class TypeD(value: _root_.issues.issue195.server.akkaHttp.definitions.TypeD) extends Foo
    case class TypeA(value: _root_.issues.issue195.server.akkaHttp.definitions.TypeA) extends Foo
    case class TypeB(value: _root_.issues.issue195.server.akkaHttp.definitions.TypeB) extends Foo
    case class TypeC(value: _root_.issues.issue195.server.akkaHttp.definitions.TypeC) extends Foo
    case class TypeE(value: _root_.issues.issue195.server.akkaHttp.definitions.TypeE) extends Foo
  }
}

No discriminator support currently, but that should be straightforward now that the rest of this is in place. Note the order of attempts to decode matches the order of $ref's in oneOf.

Alright. Found some more time to push this over the line.
oneOf is now supported, including discriminators and mapping. If anyone is interested in giving it a shot,
sbt> runIssue scala akka-http modules/sample/src/main/resources/issues/issue195.yaml

from the guardrail repo. That alias expands to (basically) the following:
sbt> cli scala --defaults --specPath modules/sample/src/main/resources/issues/issue195.yaml --outputPath modules/sample-akkaHttp/target/generated --framework akka-http --client --packageName issues.issue195.client.akkaHttp --server --packageName issues.issue195.server.akkaHttp

... which you can use to point at your own project in case you want to experiment in something more real.

Considering that the original specifications that required allOf have been merged for some time and oneOf has been merged, I'm going to close this issue. If there's any follow-up to what has been merged, please open a new issue.
Thank you.

Thank you!

Indeed, this is awesome . Thank you so much !!! I will try it out within the next few days. I cannot thank you enough! Sent from my iPhoneOn Dec 12, 2023, at 11:49, danielporterda @.***> wrote:
Thank you!
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

Closing the loop, as communication channels are fractured currently:
1.0.0-SNAPSHOT request for feedback: Tweet, Matrix channel
If you have capacity to test any of the recent stuff, it would really be appreciated. Thanks to everyone who has helped get us to this point 🙂

Thanks 👏
Will this be coming to the CLI?

@sammy-da Already available, if you're using coursier:
cs launch -r https://s01.oss.sonatype.org/content/repositories/snapshots \
    dev.guardrail:guardrail-{core,cli,scala-support,scala-akka-http}_2.13:1.0.0-SNAPSHOT \
  -- \
    scala \
      --defaults --specPath modules/sample/src/main/resources/issues/issue195.yaml --outputPath modules/sample-akkaHttp/target/generated --framework akka-http \
      --client --packageName issues.issue195.client.akkaHttp \
      --server --packageName issues.issue195.server.akkaHttp

**NB:** The `{...}` shorthand is a bash expansion which is only possible currently because the specified modules all have the same version number.
The long-form of that command is...

cs launch -r https://s01.oss.sonatype.org/content/repositories/snapshots \
    dev.guardrail:guardrail-core_2.13:1.0.0-SNAPSHOT \
    dev.guardrail:guardrail-cli_2.13:1.0.0-SNAPSHOT \
    dev.guardrail:guardrail-scala-support_2.13:1.0.0-SNAPSHOT \
    dev.guardrail:guardrail-scala-akka-http_2.13:1.0.0-SNAPSHOT \
  -- \
    scala \
      --defaults --specPath modules/sample/src/main/resources/issues/issue195.yaml --outputPath modules/sample-akkaHttp/target/generated --framework akka-http \
      --client --packageName issues.issue195.client.akkaHttp \
      --server --packageName issues.issue195.server.akkaHttp

Hello,
Most of my usage is via sbt-guardrail. How can I get sbt-guardrail to use the snapshot core and scala-akka-http dependendcies? Sorry, I know that’s more of an sbt question …
Thanks!

On Dec 18, 2023, at 13:08, Devon Stewart @.***> wrote:
@sammy-da https://github.com/sammy-da Already available, if you're using coursier:
cs launch -r https://s01.oss.sonatype.org/content/repositories/snapshots
dev.guardrail:guardrail-{core,cli,scala-support,scala-akka-http}_2.13:1.0.0-SNAPSHOT
--
scala
--defaults --specPath modules/sample/src/main/resources/issues/issue195.yaml --outputPath modules/sample-akkaHttp/target/generated --framework akka-http
--client --packageName issues.issue195.client.akkaHttp
--server --packageName issues.issue195.server.akkaHttp
NB: The {...} shorthand is a bash expansion which is only possible currently because the specified modules all have the same version number.
The long-form of that command is...
—
Reply to this email directly, view it on GitHub https://github.com/guardrail-dev/guardrail/issues/195#issuecomment-1861643029, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABMTCAO3S5LG4CUQWSIOYYTYKCWD5AVCNFSM4G4E7XS2U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOBWGE3DIMZQGI4Q.
You are receiving this because you commented.

@djm1329 https://github.com/guardrail-dev/guardrail-sample-sbt-pekkohttp/pull/1/files#diff-d84dc3c9ae70fac7b98b8b18d02323930ddb63c0a2b896a4883a886847a588d7R1-R9 is an example of how to get access to the latest sbt-guardrail SNAPSHOT.
Please know that SNAPSHOTS are not stable, and should only be used for testing. If there's a need to base production pipelines off the unreleased 1.0.0 modules, I can see what I can do to publish milestones.

Incidentally, if a company is willing to fund any of this work, I'd be more than happy to provide guarantees around either release timing or feature development. Please reach out to<EMAIL_ADDRESS>if so. Thank you for your consideration!

The reason for each module being explicitly specified in that diff is so the different guardrail components can be versioned independently instead of having all the modules hidden behind a single monolithic version number. We were burning a lot of cycles at Twilio with automatic version bumps in Scala projects because some Java module changed, or vice versa, or akka-http got bumped and triggered rebuilds of http4s projects. This should cut down on unnecessary churn in guardrail-powered projects.


why remove js version when using ionic start which make use npm packages so trouble

cli should keep the parameter to let users make the decision to use which version.

Hello! Thanks for using Ionic! We have recently decided to go all in with Typescript because of the awesome advantages it provides to you as an ionic developer. You can read more about that here. Also if you are having trouble adding libraries to your typescript project I would recommend checking this video. Thanks for using Ionic!


Where to override ENTRYPOINT ?

This is a really great project (as are all your docker builds). Thanks!
I realize this question might seem intuitive, but I would like to override the ENTRYPOINT.
I'd like to add a few laravel specific php commands ('php artisan config:cache', etc) before whatever command is provisioning php/nginx.
What is in the current entrypoint or cmd that is being used?
Thanks in advance!

I can insert what I do in some other images to accommodate for "custom scripts"
The premise would work like this:

Drop file in /assets/custom/01-artisan.sh

Inside that Script it could look like so:
#!/command/with-contenv /bin/bash

cd /www/${NGINX_WEBROOT}
sudo -u ${NGINX_USER} php artisan config:cache`
$(date) > /www/html/date.log

This would execute the script before nginx/php-fpm runs accomplishing what you are after.. I do have to watch out though as my dependent images also have this snippet for /assets/custom-scripts and we wouldn't want to run it twice.
Perhaps I can include an environment variable that can call a specific script somewhere on the filesystem as such:
PHP_FPM_POST_SCRIPT="/somewhere/yourscript.sh which would allow us to avoid the snippet in this image and let it work in the child images.

Yes PHP_FPM_POST_SCRIPT would be brilliant! I'm sure people would use it since most articles i read recommend those types of scripts.
We'll try your first method out for now and look for any more official changes if they're ever pushed.
Thanks for everything @tiredofit !!!

Thanks for the sponsor :)
I just added the following to the base images (alpine and debian)
CONTAINER_POST_INIT_SCRIPT = Put multiple scripts seperated by commas to execute before the overall container finalizes its init process.
CONTAINER_POST_INIT_COMMAND = As Above but execute a singular command without having to insert a script somewhere. Seperate by commas.
NGINX_POST_INIT_SCRIPT = Put multiple scripts seperated by commas to execute before the overall container finalizes its init process.
NGINX_POST_INIT_COMMAND = As Above but execute a singular command without having to insert a script somewhere. Seperate by commas.
PHP_FPM_POST_INIT_SCRIPT = Put multiple scripts seperated by commas to execute before the overall container finalizes its init process.
PHP_FPM_POST_INIT_COMMAND = As Above but execute a singular command without having to insert a script somewhere. Seperate by commas.
So lots and lots of flexibility here on which way you want to use it. I included these multiples here just in the event that a child image clobbers some of the parent images custom environment variables if you are looking to use the image for complex stuff. I can already see this working in so many cases for my environments.
Should be available for you by tomorrow 8am PDT - Github build process is slower than I'd like and I have to remind myself to be around to trigger the next images builds after the first ones build and its now the end of my office day. Let me know how it works out.
FWIW - If you are doing some laravel work I have some real interesting stuff in some private images that you may want to take advantage of in terms of cache and config busting and also recompiling assets in a "development" style container. One simply needs to flip an environment variable from STAGE=develop to STAGE=production to make it exit it out of this development style mode. Let me know if of interest and I can clean it up for public consumption over the next few days.

Wow you're awesome!
First off - yes i'll definitely look for the changes tomorrow!
Second - i think i'd definitely be interested IF it would work well with docker-compose and laravel sail, since that's what I've gotten used to.
BTW - How do you keep up with so many repos?

I think it should work with sail - Basically it is a series of extra scripts that run watchers when files are updated (css mostly) to recompile if you are doing things with Tailwind. Note, I know little to nothing of laravel other than maintain a few images and think its a pretty elegant framework, so I'll have to ask a couple people to find out more, but I'll definitely put this together and integrate it into the image in the near future - it may turn into it's own "laravel" image just to keep things clean but still relying on all the same functionality at this one. Lets see.
As for the amount of images, I question that myself. Things sort of grew with the first one tiredofit/wordpress in 2017 and then grew from there. I started doing some consulting for an organization that was in desperate need for disaster recovery and couldn't didn't have any instructions on how to get their applications going again, so I started down that path.. Eventually I realized it would be good to build a few base images with common functions so that I could quickly roll out images. That's where we've ended up today and while there are the tricky parts to understand the applications in question the base images and the framework is what makes it easier for me. Of course it still is maintenance, but each and everyone is used in a production environment today, so that gives me motivation. It's probably not the best use of my time overall, but its what keeps my brain ticking as opposed to being lost in the business world 100%.

... It's probably not the best use of my time overall, but its what keeps my brain ticking...

This could be said of huge parts of every moment of my life.
Also, and I'm just guessing here, but since laravel is super popular, and a lot of developers are just jumping into the docker ecosystem, you might find an audience there. I'd definitely recommend naming it laravel for search purposes if nothing else.

I'm closing this since we are able to confirm that PHP_FPM_POST_INIT_SCRIPT is working great!
Thanks!


Revert to Syft Dev

Description
Revert back to Syft dev
How has this been tested?
CI

Still, broken?

There is an error in SMPCAction in Pysyft.I am working on fix now.


Add gguf cerebras/Llama3-DocChat-1.0-8B to ollama

Can this model be added?
https://huggingface.co/bartowski/Llama3-DocChat-1.0-8B-GGUF
https://huggingface.co/bartowski/Llama3-DocChat-1.0-8B-GGUF
FROM ./Llama3-DocChat-1.0-8B.Q6_K.gguf

TEMPLATE "{{ if .System }}System: {{ .System }}

{{ end }}{{ if .Prompt }}User: {{ .Prompt }}

{{ end }}Assistant: <|begin_of_text|>{{ .Response }}
"

I tried adding but it hallucinates.

The solution was not to add remplate manually.
FROM ./Llama3-DocChat-1.0-8B.Q6_K.gguf


Add GitHub Desktop Contribution Instructions

I am interested in contributing to the project by adding detailed instructions on how to contribute using GitHub Desktop.
I believe that by providing clear and comprehensive guidance, we can encourage more contributors to participate in the project, especially those who prefer using GitHub Desktop for their contributions.
Could you please assign me the issue related to adding GitHub Desktop contribution instructions under gssoc24? I am excited about the opportunity to contribute to the project and help streamline the contribution process for others.

Please add your details in the contribute file. Do not remove any existing structures


feat: add ref to garfish sub module container element

 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.

这里的场景是什么呢

I will close this PR as it is no longer active, feel free to reopen it if you have any further progress or feedback.


Add user_id_map scripts to CLI

The scripts username_to_hash_id_reports.py and user_id_to_hash_id_reports.py scripts are used to update a given CSV report that contains username/user_id and update it with including hash_id and user_id/username. Integrate them in CLI as a subparser

skipping for now


A tool to mass tag a number of cards

E.g. it just became obvious "Insight" should be a tag, way after creating many intuition cards.
The workflow is likely something like, do a search, select multiple items in the search panel, and then show a "Add tag" or "Summarize all tags" (both union and intersection) tools.
Related to whatever issue tracks modifying multiple cards

Better covered by #174