Maintenance status

Curious if this is still being maintained and if there's any intent to address some of the current gaps the current user base has raised?
For some examples that I'd personally find valuable myself:
#64
#134
#83
#137

I also see that apparently there is a 1.3.5 release, but when I use cargo install I get 1.3.4. Is anyone planning on uploading the new version?


Missing columns in results view

Description
There are MANY missing columns in the output view. The only workaround is to download the archive containing results.
Expected
OV. COST | OP. COST | MRG. PRICE | CO2 EMIS. | NH3 EMIS. | SO2 EMIS. | NOX EMIS. | PM2_5 EMIS. | PM5 EMIS. | PM10 EMIS. | NMVOC EMIS. | OP1 EMIS. | OP2 EMIS. | OP3 EMIS. | OP4 EMIS. | OP5 EMIS. | BALANCE | ROW BAL. | PSP | MISC. NDG | LOAD | H. ROR | NUCLEAR | LIGNITE | COAL | GAS | OIL | MIX. FUEL | MISC. DTG | MISC. DTG 2 | MISC. DTG 3 | MISC. DTG 4 | WIND OFFSHORE | WIND ONSHORE | SOLAR CONCRT. | SOLAR PV | SOLAR ROOFT | RENW. 1 | RENW. 2 | RENW. 3 | RENW. 4 | H. STOR | H. PUMP | H. LEV | H. INFL | H. OVFL | H. VAL | H. COST | PSP_open_injection | PSP_open_withdrawal | PSP_open_level | PSP_closed_injection | PSP_closed_withdrawal | PSP_closed_level | Pondage_injection | Pondage_withdrawal | Pondage_level | Battery_injection | Battery_withdrawal | Battery_level | Other1_injection | Other1_withdrawal | Other1_level | Other2_injection | Other2_withdrawal | Other2_level | Other3_injection | Other3_withdrawal | Other3_level | Other4_injection | Other4_withdrawal | Other4_level | Other5_injection | Other5_withdrawal | Other5_level | UNSP. ENRG | SPIL. ENRG | LOLD | LOLP | AVL DTG | DTG MRG | MAX MRG | NP COST | NODU

Actual

https://antares-web-recette.rte-france.com/studies/994c5816-2c15-44ed-8505-dcf115018c02/explore/results/20240201-0824eco

It's due to the recent Vite migration on dev branch. Therefore it does not appear in production. It's a known bug we're trying to fix.

Je pense que cette anomalie est maintenant corrigée. @makdeuneuv, qu'en penses-tu ?

Oui @laurent-laporte-pro , je confirme que c'est corrigé.


Run brakeman in CI with custom action

This is the first pass at fixeing brakeman CI error. (#1514).

coverage: 93.654%. remained the same when pulling 1437d98b562ac41ab15469862acca9c8bf38a5c7 on jdc-ci-brakeman-6_0-185281074 into 9d47a04341bb453f616991214c2873f10c10c971 on main.

Check recent Rails release, which includes Brakeman in new ops and has CI Github action to run Brakeman stand alone.


Create ElasticSearch client via factory

What changed?

Expose creating ElasticSearch client via CLI ClientFactory.
Removed Muttley related things. Those are implementation details relevant to Uber only.

Why?
So that internally used CLI wrapper could inject modified http client with ssh tunneling.

How did you test it?
Locally with internal CLI.

Potential risks

Release notes

Documentation Changes

Pull Request Test Coverage Report for Build 8f5fb726-5b1d-47bf-96a2-609521b95fda

0 of 15 (0.0%)  changed or added relevant lines in 2 files are covered.
79 unchanged lines in 14 files lost coverage.
Overall coverage decreased (-0.04%) to 56.91%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

tools/cli/adminElasticSearchCommands.go
0
3
0.0%

tools/cli/factory.go
0
12
0.0%

Files with Coverage Reduction
New Missed Lines
%

common/task/weightedRoundRobinTaskScheduler.go
1
89.64%

client/history/client.go
2
39.33%

client/history/metricClient.go
2
46.37%

common/types/mapper/thrift/errors.go
2
36.17%

service/history/handler.go
2
48.56%

service/matching/taskListManager.go
2
74.19%

common/persistence/nosql/nosqlplugin/cassandra/workflow.go
3
55.49%

service/history/task/transfer_active_task_executor.go
4
71.47%

service/frontend/workflowHandler.go
6
59.28%

common/types/mapper/thrift/shared.go
7
63.9%

Totals

Change from base Build a439dca6-39bf-461d-8daf-d62f10fabffd:
-0.04%

Covered Lines:
82593

Relevant Lines:
145130

💛  - Coveralls


Exception in thread 'OrientDB WAL Flush Task'

OrientDB Version: 3.0.31
Java Version: java version "1.8.0_211"
OS: ubuntu
Expected behavior
Upsert success, not raise any error
Actual behavior
Exception in thread 'OrientDB WAL Flush Task'
java.nio.BufferOverflowException
	at java.nio.Buffer.nextPutIndex(Buffer.java:527)
	at java.nio.DirectByteBuffer.putInt(DirectByteBuffer.java:706)
	at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog$RecordsWriter.run(OCASDiskWriteAheadLog.java:1920)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

Can not  update/insert data any more
Steps to reproduce
My OrientDB system has over 100 classes with over 50GB data, setup in cluster mode with 6 node, on 6 different IP.
When I upsert big data into 1 master node orientdb in distributed ,
Error appear in logs
Exception in thread 'OrientDB WAL Flush Task'
java.nio.BufferOverflowException
	at java.nio.Buffer.nextPutIndex(Buffer.java:527)
	at java.nio.DirectByteBuffer.putInt(DirectByteBuffer.java:706)
	at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog$RecordsWriter.run(OCASDiskWriteAheadLog.java:1920)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

Hi, @quanghaisoft what is the WAL page size in your environment? You can find size of the WAL page in the log. Do you set any non-default settings? Thank you for the bug report.

thanks you for your answer , this is logs, recent day, this error not appear
config in server.sh
-Dstorage.wal.maxSegmentSize=128 -Dstorage.wal.maxSize=16384
2020-06-03 17:01:01:421 INFO  Allocation of 972800 pages. [OEngineLocalPaginated]
2020-06-03 17:01:03:978 INFO  WAL maximum segment size is set to 6,144 MB [OrientDBDistributed]
2020-06-03 17:01:03:978 INFO  Databases directory: /data/orientdb/databases [OServer]
2020-06-03 17:01:04:039 INFO  Direct IO for WAL located in /data/orientdb/databases/OSystem is allowed with block size 4096 bytes. [OCASDiskWriteAheadLog]
2020-06-03 17:01:04:040 INFO  Page size for WAL located in /data/orientdb/databases/OSystem is set to 4096 bytes. [OCASDiskWriteAheadLog]
2020-06-03 17:01:04:104 WARNI Storage 'OSystem' was not closed properly. Will try to recover from write ahead log [OLocalPaginatedStorage]

we have writed a very larger number of concurrent data

Hi @quanghaisoft . I am not sure that I understood you. Do you mean that now you can not reproduce this error on your tests?

this error not display again. we are runing in production, so i can not test it.if it appears i ll open this issue

this bug in my production so we copy data and rebuild cluster immediately.if it appears again,we will send it to you

I see thank, I will try to reproduce with settings which you sent to me.

Hi @quanghaisoft what amount of RAM do you have on the server ?

we using more than 150G ram , CPU 24 core on  node , with 6 node in cluster

when we using multi write upsert to one vertex in 3 master node, it slow down , can you help me a  recommend Config  to active fast upsert with bigdata
this is current config:
JAVA_OPTS_SCRIPT="-XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/orientdb/gcjava/heapdump_oom.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Xloggc:/app/orientdb/gcjava/gc_stat.txt  -Ddistributed.dbWorkerThreads=16   -Dtx.autoRetry=5000    -Ddistributed.concurrentTxMaxAutoRetry=500 -Ddistributed.concurrentTxAutoRetryDelay=200 -Ddistributed.asynchResponsesTimeout=80000    -Ddistributed.atomicLockTimeout=15000    -Dnetwork.maxConcurrentSessions=2000  -Ddistributed.localQueueSize=1000000 -Ddistributed.queueMaxSize=1000000 -Ddistributed.autoRemoveOfflineServers=13000 -Dnetwork.http.sessionExpireTimeout=15000 -Dstorage.wal.fuzzyCheckpointInterval=43200 -Dstorage.openFiles.limit=64000 -Dstorage.diskCache.bufferSize=64000 -Dstorage.wal.maxSegmentSize=128 -Dstorage.wal.maxSize=16384 -Dnetwork.maxConcurrentSessions=50000 -Duser.timezone=Asia/Ho_Chi_Minh -Djna.nosys=true -Djava.awt.headless=true -Dfile.encoding=UTF8 -Drhino.opt.level=9 -Dstorage.wal.commitTimeout=3000   -Ddistributed.commandQuickTaskTimeout=130000 -Dscript.pool.maxSize=50 -Ddb.pool.maxSize=300"

when write upsert commend on 3 node master (multiwrite) it display too many errror ,please see attactment
orient-server.log.txt

@quanghaisoft issue which you had with WAL was caused by integer overflow. It is already fixed. I can not help you with the issue with distributed storage because I am working on another set of components. Could you please create a separate issue for your problem?

I have just see this error again, i you give me a snapshot of 3.0.31 version
Jun 19 18:45:00 ograph06-76 server.sh[29054]: Exception in thread 'OrientDB WAL Flush Task'
Jun 19 18:45:00 ograph06-76 server.sh[29054]: java.nio.BufferOverflowException
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.nio.Buffer.nextPutIndex(Buffer.java:527)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.nio.DirectByteBuffer.putInt(DirectByteBuffer.java:706)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog$RecordsWriter.run(OCASDiskWriteAheadLog.java:1920)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
Jun 19 18:45:00 ograph06-76 server.sh[29054]:         at java.lang.Thread.run(Thread.java:748)

in others node have this error: Error during WAL writing
java.nio.file.NoSuchFileException: /data/orientdb/databases/OSystem
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileStore.readAttributes(UnixFileStore.java:111)
at sun.nio.fs.UnixFileStore.getUsableSpace(UnixFileStore.java:124)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.checkFreeSpace(OCASDiskWriteAheadLog.java:1439)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.access$4000(OCASDiskWriteAheadLog.java:52)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog$RecordsWriter.run(OCASDiskWriteAheadLog.java:2053)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

I see, interesting. I will fix another issue and then will be back to yours.

@quanghaisoft about directory : /data/orientdb/databases/OSystem does it really exist ?

i'm sorry, my server is running in production, so i copy dir databases in a master node to all node and restart   the distributed  cluster, all i have is logs dir

one server full of log file with text:
Exception in thread 'OrientDB WAL Flush Task'  java.nio.BufferOverflowException  at java.nio.Buffer.nextPutIndex(Buffer.java:527)....

I did not get it. Did you copy file system data under live server and put it under the replicas or did you shutdown replicas? The correct way to do that is to remove broken databases from nodes and start "empty" replicas, the system will copy all the data correctly.

I has 5 server 71,72,73,74,75,76, i writing data to a master node 71
,but it suddenly error , and all client writing error and stopped, so i login ssh and view log,
server 71,72,73,74,75 ok
server 76 has full of error: java.nio.BufferOverflowException

@quanghaisoft about directory : /data/orientdb/databases/OSystem does it really exist ?

I''m sorry this error is old,it is last 6 day before

@laa Please help me with this error , can you give me a .jar at 3.0.31
Jun 19 18:45:00 ograph06-76 server.sh[29054]: Exception in thread 'OrientDB WAL Flush Task'
Jun 19 18:45:00 ograph06-76 server.sh[29054]: java.nio.BufferOverflowException
Jun 19 18:45:00 ograph06-76 server.sh[29054]: at java.nio.Buffer.nextPutIndex(Buffer.java:527)
Jun 19 18:45:00 ograph06-76 server.sh[29054]: at

@quanghaisoft you can download https://orientdb.org/download 3.0.32 changes are minor only small fixes in few components.

@quanghaisoft could you send me log directory from the 76 node of the cluster ?

log.zip
this is logs directory after i  recopy data and restart server.

@quanghaisoft you can download https://orientdb.org/download 3.0.32 changes are minor only small fixes in few components.

OK thank you

I have upgraded to version 3.0.32 and am watching, if I run a problem again I will notify you, thanks a lot

@quanghaisoft what version of JDK do you use?

Hi, @quanghaisoft I have introduced a small fix, which should resolve your issue. Is it possible for you to apply new build which I will send to you?

Please send me new build you have fixed, thanks you very much
we using java  :
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

@quanghaisoft I am going to add more precautions, it will take couple of days, then I will provide you with new distribution.

@quanghaisoft could you try this build https://drive.google.com/file/d/1wtQpyzbfeD3w07NpurG1wmGIxScggGXI/view?usp=sharing

@quanghaisoft could you try this build https://drive.google.com/file/d/1wtQpyzbfeD3w07NpurG1wmGIxScggGXI/view?usp=sharing

Thanks you very much, please give me access to file with email bumha... or xuanhuong...

I have installed and when start service it throw an exception below
2020-07-17 22:22:43:223 INFO  Limit of open files for disk cache will be set to 64000. [OEngineLocalPaginated]
2020-07-17 22:22:43:242 INFO  Loading configuration from: /app/orientdb/config/orientdb-server-config.xml... [OServerConfigurationLoaderXml]
2020-07-17 22:22:43:436 INFO  OrientDB Server v3.0.33-SNAPSHOT - Veloce (build 2b8066106ff63f44391489f85096ab47b80b41c6, branch laa_3.0.x) is starting up... [OServer]
2020-07-17 22:22:43:456 INFO  OrientDB config DISKCACHE=120,000MB [orientechnologies]
2020-07-17 22:22:43:528 INFO  System is started under an effective user : orientdb [OEngineLocalPaginated]
2020-07-17 22:22:43:528 INFO  Allocation of 1824000 pages. [OEngineLocalPaginated]
2020-07-17 22:22:43:579 INFO  WAL maximum segment size is set to 6,144 MB [OrientDBEmbedded]
2020-07-17 22:22:43:580 INFO  Databases directory: /app/orientdb/databases [OServer]
2020-07-17 22:22:43:636 INFO  Direct IO for WAL located in /app/orientdb/databases/OSystem is allowed with block size 4096 bytes. [OCASDiskWriteAheadLog]
2020-07-17 22:22:43:636 INFO  Page size for WAL located in /app/orientdb/databases/OSystem is set to 4096 bytes. [OCASDiskWriteAheadLog]Exception 68A09ED8 in storage plocal:/app/orientdb/databases/OSystem: 3.0.33-SNAPSHOT - Veloce (build 2b8066106ff63f44391489f85096ab47b80b41c6, branch laa_3.0.x)
java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
at com.orientechnologies.common.io.OIOUtils.readByteBuffer(OIOUtils.java:368)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.readMasterRecord(OCASDiskWriteAheadLog.java:481)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.readLastCheckpointInfo(OCASDiskWriteAheadLog.java:406)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.(OCASDiskWriteAheadLog.java:286)
at com.orientechnologies.orient.core.storage.disk.OLocalPaginatedStorage.initWalAndDiskCache(OLocalPaginatedStorage.java:574)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:392)
at com.orientechnologies.orient.core.db.OrientDBEmbedded.openNoAuthorization(OrientDBEmbedded.java:259)
at com.orientechnologies.orient.core.db.OrientDBEmbedded.openNoAuthorization(OrientDBEmbedded.java:56)
at com.orientechnologies.orient.server.OSystemDatabase.openSystemDatabase(OSystemDatabase.java:97)
at com.orientechnologies.orient.server.OSystemDatabase.checkServerId(OSystemDatabase.java:174)
at com.orientechnologies.orient.server.OSystemDatabase.init(OSystemDatabase.java:162)
at com.orientechnologies.orient.server.OSystemDatabase.(OSystemDatabase.java:49)
at com.orientechnologies.orient.server.OServer.initSystemDatabase(OServer.java:1212)
at com.orientechnologies.orient.server.OServer.activate(OServer.java:421)
at com.orientechnologies.orient.server.OServerMain$1.run(OServerMain.java:48)
JVM error was thrown
java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
at com.orientechnologies.common.io.OIOUtils.readByteBuffer(OIOUtils.java:368)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.readMasterRecord(OCASDiskWriteAheadLog.java:481)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.readLastCheckpointInfo(OCASDiskWriteAheadLog.java:406)
at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.cas.OCASDiskWriteAheadLog.(OCASDiskWriteAheadLog.java:286)
at com.orientechnologies.orient.core.storage.disk.OLocalPaginatedStorage.initWalAndDiskCache(OLocalPaginatedStorage.java:574)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:392)
at com.orientechnologies.orient.core.db.OrientDBEmbedded.openNoAuthorization(OrientDBEmbedded.java:259)
at com.orientechnologies.orient.core.db.OrientDBEmbedded.openNoAuthorization(OrientDBEmbedded.java:56)
at com.orientechnologies.orient.server.OSystemDatabase.openSystemDatabase(OSystemDatabase.java:97)
at com.orientechnologies.orient.server.OSystemDatabase.checkServerId(OSystemDatabase.java:174)
at com.orientechnologies.orient.server.OSystemDatabase.init(OSystemDatabase.java:162)
at com.orientechnologies.orient.server.OSystemDatabase.(OSystemDatabase.java:49)
at com.orientechnologies.orient.server.OServer.initSystemDatabase(OServer.java:1212)
at com.orientechnologies.orient.server.OServer.activate(OServer.java:421)
at com.orientechnologies.orient.server.OServerMain$1.run(OServerMain.java:48)

I see it was built under higher JDK, the same API but now returns the current instance of the buffer. I will rebuild it next week.

I see it was built under higher JDK, the same API but now returns the current instance of the buffer. I will rebuild it next week.

OK thanks you very much .

Guys, could you try https://oss.sonatype.org/content/repositories/snapshots/com/orientechnologies/orientdb-community/3.0.33-SNAPSHOT/orientdb-community-3.0.33-20200717.164059-15.zip this build?

Guys, could you try https://oss.sonatype.org/content/repositories/snapshots/com/orientechnologies/orientdb-community/3.0.33-SNAPSHOT/orientdb-community-3.0.33-20200717.164059-15.zip this build?

OK i will try it , thanks a lot

Guys, could you try https://oss.sonatype.org/content/repositories/snapshots/com/orientechnologies/orientdb-community/3.0.33-SNAPSHOT/orientdb-community-3.0.33-20200717.164059-15.zip this build?

I have upgraded to this build and it works fine, thanks you very much .

Hi @quanghaisoft it could be one more reason why you experience this issue. It is inside the code of the distributed database. We are planning to port it soon to all the versions. I will let you know.

Hi @quanghaisoft it could be one more reason why you experience this issue. It is inside the code of the distributed database. We are planning to port it soon to all the versions. I will let you know.

Yes, thanks a lot, we'll waiting for it.

Fixed. Should be delivered in next hotfix. Please reopen if the issue will still persist on your side.


Better integration with Akka.DependencyInjection

Changes
close #144 - working on improving the accessibility of the IDependencyResolver from Akka.DependencyInjection inside all methods responsible for instantiating actors.
Checklist
For significant changes, please ensure that the following have been completed (delete if not relevant):

[x] This change follows the Akka.NET API Compatibility Guidelines.
[x] This change follows the Akka.NET Wire Compatibility Guidelines.
[ ] I have reviewed my own pull request.
[x] Design discussion issue #144
[ ] Changes in public API reviewed, if any.
[ ] I have added website documentation for this feature.

So we have some neat new APIs now to close out #144
Actors in General
// arrange
using var host = await StartHost(collection =>
{
    collection.AddAkka("MyActorSys", (builder, sp) =>
    {
        builder.WithActors((system, registry, resolver) =>
        {
            var singletonActor = system.ActorOf(resolver.Props<SingletonActor>(), "singleton");
            registry.TryRegister<SingletonActor>(singletonActor);
        });
    });
});

// act
var singletonInstance = host.Services.GetRequiredService<IMySingletonInterface>();
var singletonActor = host.Services.GetRequiredService<ActorRegistry>().Get<SingletonActor>();
var singletonFromActor =
    await singletonActor.Ask<IMySingletonInterface>(SingletonActor.GetSingleton.Instance, TimeSpan.FromSeconds(3));

// assert
singletonFromActor.Should().Be(singletonInstance);

The third parameter on this new overload for WithActors is an IDependencyResolver, so working with DI is now just a matter of picking the configuration delegate you wish to use.
Akka.Cluster.Sharding
All of the ShardRegion overloads also support IDependencyResolver now as well:
public static AkkaConfigurationBuilder WithShardRegion<TKey>(
    this AkkaConfigurationBuilder builder,
    string typeName,
    Func<ActorSystem, IActorRegistry, IDependencyResolver, Func<string, Props>> entityPropsFactory,
    IMessageExtractor messageExtractor,
    ShardOptions shardOptions)
{
    return builder.WithShardRegion<TKey>(typeName, entityPropsFactory,
        messageExtractor.ToExtractEntityId(), messageExtractor.ToExtractShardId(), shardOptions);
}

We now accept an overload for creating the entity actor Props that accesses the current ActorSystem, ActorRegistry, and the DependencyResolver.
Akka.Cluster.Tools.Singleton
We now accept an overload for creating the singleton actor Props that accesses the current ActorSystem, ActorRegistry, and the DependencyResolver.
(don't mind the testing infrastructure)
protected override void ConfigureServices(HostBuilderContext context, IServiceCollection services)
{
    services.AddSingleton<IMyThing>(new ThingImpl("foo1"));
    base.ConfigureServices(context, services);
}

protected override void ConfigureAkka(AkkaConfigurationBuilder builder, IServiceProvider provider)
{
    builder.ConfigureHost(configurationBuilder =>
    {
        configurationBuilder.WithSingleton<MySingletonDiActor>("my-singleton",
            (_, _, dependencyResolver) => dependencyResolver.Props<MySingletonDiActor>());
    },  new ClusterOptions(){ Roles = new[] { "my-host" }}, _tcs, Output!);
}

[Fact]
public async Task Should_launch_ClusterSingletonAndProxy_with_DI_delegate()
{
    // arrange
    await _tcs.Task; // wait for cluster to start

    var registry = Host.Services.GetRequiredService<ActorRegistry>();
    var singletonProxy = registry.Get<MySingletonDiActor>();
    var thing = Host.Services.GetRequiredService<IMyThing>();

    // act

    // verify round-trip to the singleton proxy and back
    var respond = await singletonProxy.Ask<string>("hit", TimeSpan.FromSeconds(3));

    // assert
    respond.Should().Be(thing.ThingId);
}

I think this should make it a lot easier to use Akka.DependencyInjection going forward. I hope you agree @kpko


Add signal handling implementation document

Description
Add a new document that explains the signal handling implementation based on code docs
Fixes #348
Relevant Issues:
#144 - native_client
#80 - Lind-GlibC

@RusherRG @rennergade
Please review and merge.

Looks great! Thanks Mayank!


Issues with skipped tests in summary and html report on V0.9.2

This is issue with respect to karate.abort() function where I am able to successfully skip the steps once my condition is met but where as I am able to see the status of the test as Failed in cucumber html reports.

sorry closing as you have not followed the instructions: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

I also said in https://stackoverflow.com/questions/55944353/karate-abort-script-failing-in-version-0-9-2 that it's expected to have a fail when abort() is used.

@MercierAdrien I just added a demo example for this, see commit above. I think the maven cucumber report has logic to mark the scenario as failed if there are skipped steps - let me know if my understanding is right. in Karate, we treat it as a pass, which is reflected in the Results object when you use the Runner.
maybe there is an opportunity to influence the 3rd party reports, but I remember we experimented with  different statuses in #416 #464 and finally decided on SKIPPED. I'm not in favor of changing it - unless someone can dig into this more. personally I have never liked abort() - you can get the same effect with a call and an eval if (condition) karate.call()

looks like this has been requested here: https://github.com/damianszczepanik/cucumber-reporting/pull/636
but looks unlikely to be fixed in the near future. I'm proposing we flip any skipped steps after an abort to "passed" - well anyway I keep saying that abort() is not the most elegant way to write tests - so here goes. reopening

for the reference of those looking for more info the developer of the 3rd party report has changed the behavior, refer https://github.com/damianszczepanik/cucumber-reporting/pull/862#issuecomment-518363338

@ptrthomas : It looks like that Cucomber-reporting fixed the issue: https://github.com/damianszczepanik/cucumber-reporting/pull/862
Would it make sense to undo this changes so Aborted-tests will get the status 'skipped' again?

@gerben86 yes. it requires some research into which version of that dependency fixes things (was not clear last I checked) and whether anything else breaks. this is one dependency that we have recommended the same old version for 2.5 years.
if anyone does the research and comes up with a recommendation, sure :)

@gerben86 how about this - we intro a * configure abortedStepsShouldPass = true option which defaults to false ? I am marking this issue as not-fixed

@ptrthomas : I think that could work, because then we can decide how to treat the abort().

implemented configure abortedStepsShouldPass which defaults to false in develop

released 0.9.5


Share the etcd watcher

Signed-off-by: shihao-thx<EMAIL_ADDRESS>
What do these changes do?

as titled.
Related issue number

Fixes #715.

Hi, @sighingnow. Sharing the etcd watcher has already done. If there are any problems, please let me know. Thanks!

Hi, @sighingnow. Sharing the etcd watcher has already done. If there are any problems, please let me know. Thanks!

Will take a review later today.

If it is possible, I suggest you consider unify the watcher handler logic in both etcd metadata service and the redis metadata service, as they share a lot of common stuffs.

Thanks for the suggestions. I'll do that as soon as possible.

I modified the way to dispatch watch events to sessions as suggested. If it's fine, I'll try to apply it to sharing redis metadata watcher in a few days.

I modified the way to dispatch watch events to sessions as suggested. If it's fine, I'll try to apply it to sharing redis metadata watcher in a few days.

Please go ahead.

I noticed the spill_test failed, but it can pass on my PC. Should I deal with it?

The crash happened inside vineyardd:

Looks caused by this pull request.

Hi, @sighingnow . Sharing the redis watcher has already done too. If there are any problems, please let me know. Thanks!

Merged. Thanks!


Modify relative path to absolute path.

Before change, below case abort for path issue.
After change -
[LISAv2 Test Results Summary]
Test Run On           : 11/22/2018 14:07:14
ARM Image Under Test  : canonical : ubuntuserver : 18.04-lts : Latest
Total Test Cases      : 1 (1 Pass, 0 Fail, 0 Abort)
Total Time (dd:hh:mm) : 0:0:25
XML File              : TestConfiguration
ID TestCaseName                                                 TestResult TestDuration(in minutes)
1 PERF-NETWORK-TCP-NETPERF-SINGLE-PPS-Synthetic                      PASS                20.79
Rx Average PPS : 4970
Rx Minimum PPS : 3890
Rx Maximum PPS : 6408

Please change the commit message to a more relevant one:
refactor: use full paths if they contain $LogDir

@ader1990 Thanks for your advice!


list_pad() is slow as written.  Using concat is much faster

I did a test on a large list and my run time was 54 s, to lengthen a large list by a small amount.
Using concat is much faster at only 3 seconds:
function list_pad(v, minlen, fill=undef) =
	concat(v,replist(fill,minlen-len(v)));

In a test of extended a short list by a large amount the existing code took 33s and the concat version takes 19s.  So the concat version is always better.  This second result was a bit of a surprise, since replist just runs a for loop, but I guess the fact that there's no conditional test in the loop is making the difference?
I also note that list_trim can be written without the maxlen<1 test by adding a step of 1 into the range.  And the documentation erroneously lists "minlen" as an argument.   And with list_pad rewritten as above, I think list_fit doesn't need the test for l==length.  That case is handled without extra run time cost by letting list_pad do it, where it pads on the empty list.  Then you can avoid the extra assignment and again the code is shorter and simpler.
I also kind of feel like it makes more sense to supply list_lengths() and let users take max or min of the result instead of list_longest and list_shortest.   Hmmm.  Is there a way to get the index of the max or min?   I guess you can run search after running min/max.

I think you are looking for min_index() and/or max_index().

Fixed in 8f2b9c4ef1977147a3ce7f2a75f23c60083976df


Correct handling for nulling TextField controller

Correctly handle the case where the TextEditingController associated
with a TextField is set to null. Due to a typo (= vs ==), previously
this was a no-op and the existing TextEditingController was retained,
rather than copied.

LGTM

Fixes #12153


Add column(s) processor

As a dpp user, I want to add a new column to my existing data with the result of various operations (like sum, avg, min, max, multiply, constant, join, format) performed on values of pre-defined columns of the same row, so that after running dpp run xxx output data has new column with value calculated for me.
Acceptance Criteria

[ ] able to add new column to data
[ ] able to perform operations like sum, avg, min, max, multiply, constant, join, format

Tasks

[ ] prepare specs
[ ] wtire tests
[ ] write processor add_columns
[ ] update README

Analysis
Spec:
run: add_colmuns
parameters:
  resources: resource_name
  operation:
    sum:
      -
        target: new_column_name
        nullas: 0 (default)
        type: any (default)
        columns
          - column1
          - column2
      -
        target: another_column_name
        columns:
          - column3
          - column1
    avg/min/max/multiply/join: same as for sum
    format:
      -
        target: new_column_name
        formated-string: '{column1} is better than {column2}'

sounds good and will be very useful I think, I also encountered some use-cases for this type of processing.
I would change the operations to be a list which will allow to use previous calculated columns as input for next operations.
run: add_colmuns
parameters:
  resources: resource_name
  fields:
    - operation: sum
      target: new_column_name
      nullas: 0 (default)
      type: any (default)
      columns
        - column1
        - column2
    - operation: sum
      target: another_column_name
      columns:
        - column3
        - column1
    - operation: sum
      target: total_sum
      columns:
        - new_column_name
        - another_column_name

@OriHoch great sounds better - updated spec and added some details about each operation. Will do PR

FIXED


Convert navigation module

This converts the vertical navigation directive to component syntax.
Example pages and tests all converted as well - pages work and tests pass.

LGTM :+1:

LGTM


DateTimePicker value update not reflected in picker

Environment

Tech
Version

@material-ui/pickers
3.1.1

material-ui
4.1.1

React
16.8.6

Browser
chrome

Peer library
<EMAIL_ADDRESS>

Steps to reproduce

Store the value of the date in this.state
Render the picker
Programmatically change the value of date, using setState
Print the value right before render() returns the element to render
New value is printed
The picker displays the old value

Expected behavior
DateTimePicker should display the new value, and not the old one.

Actual behavior
DateTimePicker value is changed programmatically, render() function is called, but the calendar keeps displaying the last selected date;

Live example
https://codesandbox.io/embed/react-example-rxbnp
Open the first picker, change the date, click 'ok', then the second one opens up, but shows the old date.

You must not be able to update state when datepicker open

Actually the picker is closed (but rendered) when I update the state. I update both the date value and the 'open' boolean to true.
Then it is re-rendered due to the change in state, but keeps using the old value.

Can you provide the codesandbox repdouction?
But seems like I understand what do you mean. There is a line of code where we updating inner state when new one is passed from the parent.

Seems like you are right. When I disable the part that opens the picker upon the change (so the only change to the state is the date), and then I open the picker manually, it looks like the new date has been accepted (while it was closed).
Is this expected behavior? Can we change it so that the check is against the current 'open' state of the picker, and not the updated one from the props?

Here is a live sandbox:
https://codesandbox.io/embed/react-example-rxbnp

I've run into this same issue.  Anything I can do to help figure it out?

I have the same issue, though on 2.2.4 (I'm not yet ready to update to mui 4.x).
The datepicker is closed, I change the date programmatically, I click on the datepicker to open it, and it shows the old date. I close the datepicker, and as it's closing I see it update to the new date.

Already fixed in some version

This issue is still occuring in the latest version of the material ui date picker

still occuring

https://stackoverflow.com/questions/51324892/unable-to-get-material-ui-datepicker-date-on-the-first-change
i guess the initial date should be in a specific format.

same issue with version 3.2.10. We should reopen this issue.

I have the same issue as well with version 3.2.10

v3 is no longer support, we are focusing on v4 now.

Updated to version 4: https://codesandbox.io/embed/young-breeze-g6xxy?fontsize=14&hidenavigation=1&theme=dark

@pasca15 Thanks for the reproduction. Shouldn't it be a new issue? It looks like a duplicate of #1709.

Yep. That's very similar. Even with the autoOk, the selected date can't be passed to the textfield


When eula not accepted, no visual feedback using Rider

Needed to manually execute ./tf eula -accept in order to get the TFS plugin up and running in Rider.
Can this be documented or be executed during install ?

Thanks for the feedback.  I agree we should have a simpler way to accept the eula, or at least document this.  Will discuss internally about the best approach.

I believe it was fixed in #152. Thanks for reporting!

Hello,
I got only "Couldn't create TFVC repository in xxx: EULA not accepted" in log without any UI feedback.
Rider 2021.3.2
TEE-CLC-14.135.3
Azure DevOps 1.162.0

Open "VCS Operations" modal window
Select "Enable Version Control Integration..."
Select from the appeared dropdown - "TFVC"
Click "OK"

Result: after a couple of popups, a notification appeared:

Do you think this is an issue with your plugin?

JetBrains Rider 2023.1.4
Windows 10.0
.NET 7.0.2 (Server GC)
Non-Bundled Plugins:
lermitage.intellij.extratci (1.26.0)
com.intellij.resharper.HeapAllocationsViewer (2023.1.0)
com.settler.rider.specflow (1.16.1)
com.tobszarny.activetabhighlighter.plugin.id (1.5.1)
BrowseWordAtCaret (3.0.5)
com.nasller.CodeGlancePro (1.6.7)
ru.adelf.idea.dotenv (2023.1)
com.mroche.JsonHelper (1.2.0)
thomas.gian.FoldSearch (2023.04.03)
com.godwin.json.parser (1.4.1)
negationhighlighter-rider (0.0.12)
cognitivecomplexity-rider (2023.1.0)
String Manipulation (9.9.0)
net.antelle.intellij-xcode-dark-theme (1.2.4)
com.yemreak.DarkCode-Theme (1.1)
net.seesharpsoft.intellij.plugins.file-preview (1.6.4)
Abc.MoqComplete.Rider (2<IP_ADDRESS>)
com.intellij.resharper.StructuredLogging (2<IP_ADDRESS>6)
intellij.prettierJS (231.8770.67)
net.seesharpsoft.intellij.plugins.csv (3.2.1-231)
com.microsoft.vso.idea (1.162.2)
zielu.gittoolbox (500.0.13+213)
mobi.hsz.idea.gitignore (4.5.1)
cn.yiiguxing.plugin.translate (3.5.1)
izhangzhihao.rainbow.brackets.lite (1.0.1)


Optimize unseen query

convert the query to arel and use a not exists subselect with unnest instead of a not in any array comparator.

LGTM although I think if/when I ever have to debug this, I'll probably have to do a .to_sql first. :P But Arel allows us to keep working on top of by_workflow, which I do like.

yeah - i was .to_sql'n a lot on this one. We need to return scopes on this so we can use it with grouping, priority / random ordering.


What happened?
I have this typescript project that is trying to load a pdf and embeds into a local Chroma DB
import { Chroma } from 'langchain/vectorstores/chroma';
export async function pdfLoader(llm: OpenAI) {
  const loader = new PDFLoader('src/pdfs/SOP.pdf');
  log(loader);
  const docs = await loader.load();
  const vectorStore = await Chroma.fromDocuments(docs, embeddings, {
    collectionName: 'AITA',
  });

  await vectorStore.ensureCollection();
...

The problem is that when I try to use the fromDocuments method is throws this huge log with this data: { error: "IndexError('list index out of range')" } error.
I have chroma set up locally, and I've tested other code to hit the DB, and it's working. Not sure what next steps are?
Versions
Chromadb v1.4.1 javascript
Relevant log output
/Users/kevin/code/src/github/kevmok/node-langchain-prompt/node_modules/.pnpm/axios@0.26.1/node_modules/axios/lib/core/createError.js:16
  var error = new Error(message);
              ^

Error: Request failed with status code 500
    at createError (/Users/kevin/code/src/github/kevmok/node-langchain-prompt/node_modules/.pnpm/axios@0.26.1/node_modules/axios/lib/core/createError.js:16:15)
    at settle (/Users/kevin/code/src/github/kevmok/node-langchain-prompt/node_modules/.pnpm/axios@0.26.1/node_modules/axios/lib/core/settle.js:17:12)
    at IncomingMessage.handleStreamEnd (/Users/kevin/code/src/github/kevmok/node-langchain-prompt/node_modules/.pnpm/axios@0.26.1/node_modules/axios/lib/adapters/http.js:322:11)
    at IncomingMessage.emit (node:events:525:35)
    at IncomingMessage.emit (node:domain:489:12)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  config: {
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    adapter: [Function: httpAdapter],
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    headers: {
      Accept: 'application/json, text/plain, */*',
      'User-Agent': 'axios/0.26.1'
    },
    method: 'get',
    url: 'http://localhost:8000/api/v1/collections/AITA/count',
    data: undefined
  },
  request: <ref *1> ClientRequest {
    _events: [Object: null prototype] {
      abort: [Function (anonymous)],
      aborted: [Function (anonymous)],
      connect: [Function (anonymous)],
      error: [Function (anonymous)],
      socket: [Function (anonymous)],
      timeout: [Function (anonymous)],
      finish: [Function: requestOnFinish]
    },
    _eventsCount: 7,
    _maxListeners: undefined,
    outputData: [],
    outputSize: 0,
    writable: true,
    destroyed: false,
    _last: true,
    chunkedEncoding: false,
    shouldKeepAlive: false,
    maxRequestsOnConnectionReached: false,
    _defaultKeepAlive: true,
    useChunkedEncodingByDefault: false,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    strictContentLength: false,
    _contentLength: 0,
    _hasBody: true,
    _trailer: '',
    finished: true,
    _headerSent: true,
    _closed: false,
    socket: <ref *2> Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'localhost',
      _closeAfterHandlingError: false,
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: true,
        constructed: true,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: false,
        autoDestroy: true,
        destroyed: false,
        errored: null,
        closed: false,
        closeEmitted: false,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: false,
        dataEmitted: true,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: false
      },
      _events: [Object: null prototype] {
        end: [Function: onReadableStreamEnd],
        free: [Function: onFree],
        close: [ [Function: onClose], [Function: socketCloseListener] ],
        timeout: [Function: onTimeout],
        agentRemove: [Function: onRemove],
        error: [Function: socketErrorListener],
        finish: [Function: bound onceWrapper] { listener: [Function: destroy] }
      },
      _eventsCount: 7,
      _maxListeners: undefined,
      _writableState: WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: true,
        needDrain: false,
        ending: true,
        ended: true,
        finished: false,
        destroyed: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        afterWriteTickInfo: null,
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 1,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: false,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      parser: null,
      _httpMessage: [Circular *1],
      [Symbol(async_id_symbol)]: 628,
      [Symbol(kHandle)]: TCP {
        reading: true,
        onconnection: null,
        [Symbol(owner_symbol)]: [Circular *2]
      },
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: true,
      [Symbol(kSetKeepAlive)]: true,
      [Symbol(kSetKeepAliveInitialDelay)]: 60,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    _header: 'GET /api/v1/collections/AITA/count HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'User-Agent: axios/0.26.1\r\n' +
      'Host: localhost:8000\r\n' +
      'Connection: close\r\n' +
      '\r\n',
    _keepAliveTimeout: 0,
    _onPendingData: [Function: nop],
    agent: Agent {
      _events: [Object: null prototype] {
        free: [Function (anonymous)],
        newListener: [Function: maybeEnableKeylog]
      },
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 80,
      protocol: 'http:',
      options: [Object: null prototype] { noDelay: true, path: null },
      requests: [Object: null prototype] {},
      sockets: [Object: null prototype] {
        'localhost:8000:': [
          <ref *2> Socket {
            connecting: false,
            _hadError: false,
            _parent: null,
            _host: 'localhost',
            _closeAfterHandlingError: false,
            _readableState: [ReadableState],
            _events: [Object: null prototype],
            _eventsCount: 7,
            _maxListeners: undefined,
            _writableState: [WritableState],
            allowHalfOpen: false,
            _sockname: null,
            _pendingData: null,
            _pendingEncoding: '',
            server: null,
            _server: null,
            parser: null,
            _httpMessage: [Circular *1],
            [Symbol(async_id_symbol)]: 628,
            [Symbol(kHandle)]: [TCP],
            [Symbol(lastWriteQueueSize)]: 0,
            [Symbol(timeout)]: null,
            [Symbol(kBuffer)]: null,
            [Symbol(kBufferCb)]: null,
            [Symbol(kBufferGen)]: null,
            [Symbol(kCapture)]: false,
            [Symbol(kSetNoDelay)]: true,
            [Symbol(kSetKeepAlive)]: true,
            [Symbol(kSetKeepAliveInitialDelay)]: 60,
            [Symbol(kBytesRead)]: 0,
            [Symbol(kBytesWritten)]: 0
          }
        ]
      },
      freeSockets: [Object: null prototype] {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      scheduling: 'lifo',
      maxTotalSockets: Infinity,
      totalSocketCount: 1,
      [Symbol(kCapture)]: false
    },
    socketPath: undefined,
    method: 'GET',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/api/v1/collections/AITA/count',
    _ended: true,
    res: IncomingMessage {
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: true,
        ended: true,
        endEmitted: true,
        reading: false,
        constructed: true,
        sync: true,
        needReadable: false,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        destroyed: true,
        errored: null,
        closed: true,
        closeEmitted: true,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: true,
        dataEmitted: true,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: false
      },
      _events: [Object: null prototype] {
        end: [ [Function: responseOnEnd], [Function: handleStreamEnd] ],
        data: [Function: handleStreamData],
        aborted: [Function: handlerStreamAborted],
        error: [Function: handleStreamError]
      },
      _eventsCount: 4,
      _maxListeners: undefined,
      socket: <ref *2> Socket {
        connecting: false,
        _hadError: false,
        _parent: null,
        _host: 'localhost',
        _closeAfterHandlingError: false,
        _readableState: ReadableState {
          objectMode: false,
          highWaterMark: 16384,
          buffer: BufferList { head: null, tail: null, length: 0 },
          length: 0,
          pipes: [],
          flowing: true,
          ended: false,
          endEmitted: false,
          reading: true,
          constructed: true,
          sync: false,
          needReadable: true,
          emittedReadable: false,
          readableListening: false,
          resumeScheduled: false,
          errorEmitted: false,
          emitClose: false,
          autoDestroy: true,
          destroyed: false,
          errored: null,
          closed: false,
          closeEmitted: false,
          defaultEncoding: 'utf8',
          awaitDrainWriters: null,
          multiAwaitDrain: false,
          readingMore: false,
          dataEmitted: true,
          decoder: null,
          encoding: null,
          [Symbol(kPaused)]: false
        },
        _events: [Object: null prototype] {
          end: [Function: onReadableStreamEnd],
          free: [Function: onFree],
          close: [ [Function: onClose], [Function: socketCloseListener] ],
          timeout: [Function: onTimeout],
          agentRemove: [Function: onRemove],
          error: [Function: socketErrorListener],
          finish: [Function: bound onceWrapper] {
            listener: [Function: destroy]
          }
        },
        _eventsCount: 7,
        _maxListeners: undefined,
        _writableState: WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: true,
          needDrain: false,
          ending: true,
          ended: true,
          finished: false,
          destroyed: false,
          decodeStrings: false,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: false,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          afterWriteTickInfo: null,
          buffered: [],
          bufferedIndex: 0,
          allBuffers: true,
          allNoop: true,
          pendingcb: 1,
          constructed: true,
          prefinished: false,
          errorEmitted: false,
          emitClose: false,
          autoDestroy: true,
          errored: null,
          closed: false,
          closeEmitted: false,
          [Symbol(kOnFinished)]: []
        },
        allowHalfOpen: false,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: null,
        _server: null,
        parser: null,
        _httpMessage: [Circular *1],
        [Symbol(async_id_symbol)]: 628,
        [Symbol(kHandle)]: TCP {
          reading: true,
          onconnection: null,
          [Symbol(owner_symbol)]: [Circular *2]
        },
        [Symbol(lastWriteQueueSize)]: 0,
        [Symbol(timeout)]: null,
        [Symbol(kBuffer)]: null,
        [Symbol(kBufferCb)]: null,
        [Symbol(kBufferGen)]: null,
        [Symbol(kCapture)]: false,
        [Symbol(kSetNoDelay)]: true,
        [Symbol(kSetKeepAlive)]: true,
        [Symbol(kSetKeepAliveInitialDelay)]: 60,
        [Symbol(kBytesRead)]: 0,
        [Symbol(kBytesWritten)]: 0
      },
      httpVersionMajor: 1,
      httpVersionMinor: 1,
      httpVersion: '1.1',
      complete: true,
      rawHeaders: [
        'date',
        'Fri, 21 Apr 2023 14:33:00 GMT',
        'server',
        'uvicorn',
        'content-length',
        '49',
        'content-type',
        'application/json',
        'connection',
        'close'
      ],
      rawTrailers: [],
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 500,
      statusMessage: 'Internal Server Error',
      client: <ref *2> Socket {
        connecting: false,
        _hadError: false,
        _parent: null,
        _host: 'localhost',
        _closeAfterHandlingError: false,
        _readableState: ReadableState {
          objectMode: false,
          highWaterMark: 16384,
          buffer: BufferList { head: null, tail: null, length: 0 },
          length: 0,
          pipes: [],
          flowing: true,
          ended: false,
          endEmitted: false,
          reading: true,
          constructed: true,
          sync: false,
          needReadable: true,
          emittedReadable: false,
          readableListening: false,
          resumeScheduled: false,
          errorEmitted: false,
          emitClose: false,
          autoDestroy: true,
          destroyed: false,
          errored: null,
          closed: false,
          closeEmitted: false,
          defaultEncoding: 'utf8',
          awaitDrainWriters: null,
          multiAwaitDrain: false,
          readingMore: false,
          dataEmitted: true,
          decoder: null,
          encoding: null,
          [Symbol(kPaused)]: false
        },
        _events: [Object: null prototype] {
          end: [Function: onReadableStreamEnd],
          free: [Function: onFree],
          close: [ [Function: onClose], [Function: socketCloseListener] ],
          timeout: [Function: onTimeout],
          agentRemove: [Function: onRemove],
          error: [Function: socketErrorListener],
          finish: [Function: bound onceWrapper] {
            listener: [Function: destroy]
          }
        },
        _eventsCount: 7,
        _maxListeners: undefined,
        _writableState: WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: true,
          needDrain: false,
          ending: true,
          ended: true,
          finished: false,
          destroyed: false,
          decodeStrings: false,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: false,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          afterWriteTickInfo: null,
          buffered: [],
          bufferedIndex: 0,
          allBuffers: true,
          allNoop: true,
          pendingcb: 1,
          constructed: true,
          prefinished: false,
          errorEmitted: false,
          emitClose: false,
          autoDestroy: true,
          errored: null,
          closed: false,
          closeEmitted: false,
          [Symbol(kOnFinished)]: []
        },
        allowHalfOpen: false,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: null,
        _server: null,
        parser: null,
        _httpMessage: [Circular *1],
        [Symbol(async_id_symbol)]: 628,
        [Symbol(kHandle)]: TCP {
          reading: true,
          onconnection: null,
          [Symbol(owner_symbol)]: [Circular *2]
        },
        [Symbol(lastWriteQueueSize)]: 0,
        [Symbol(timeout)]: null,
        [Symbol(kBuffer)]: null,
        [Symbol(kBufferCb)]: null,
        [Symbol(kBufferGen)]: null,
        [Symbol(kCapture)]: false,
        [Symbol(kSetNoDelay)]: true,
        [Symbol(kSetKeepAlive)]: true,
        [Symbol(kSetKeepAliveInitialDelay)]: 60,
        [Symbol(kBytesRead)]: 0,
        [Symbol(kBytesWritten)]: 0
      },
      _consuming: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'http://localhost:8000/api/v1/collections/AITA/count',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: {
        date: 'Fri, 21 Apr 2023 14:33:00 GMT',
        server: 'uvicorn',
        'content-length': '49',
        'content-type': 'application/json',
        connection: 'close'
      },
      [Symbol(kHeadersCount)]: 10,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    host: 'localhost',
    protocol: 'http:',
    _redirectable: Writable {
      _writableState: WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: true,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        afterWriteTickInfo: null,
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 0,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      _events: [Object: null prototype] {
        response: [Function: handleResponse],
        error: [Function: handleRequestError],
        socket: [Function: handleRequestSocket]
      },
      _eventsCount: 3,
      _maxListeners: undefined,
      _options: {
        maxRedirects: 21,
        maxBodyLength: 10485760,
        protocol: 'http:',
        path: '/api/v1/collections/AITA/count',
        method: 'GET',
        headers: {
          Accept: 'application/json, text/plain, */*',
          'User-Agent': 'axios/0.26.1'
        },
        agent: undefined,
        agents: { http: undefined, https: undefined },
        auth: undefined,
        hostname: 'localhost',
        port: '8000',
        nativeProtocols: {
          'http:': {
            _connectionListener: [Function: connectionListener],
            METHODS: [Array],
            STATUS_CODES: [Object],
            Agent: [Function],
            ClientRequest: [Function: ClientRequest],
            IncomingMessage: [Function: IncomingMessage],
            OutgoingMessage: [Function: OutgoingMessage],
            Server: [Function: Server],
            ServerResponse: [Function: ServerResponse],
            createServer: [Function: createServer],
            validateHeaderName: [Function: __node_internal_],
            validateHeaderValue: [Function: __node_internal_],
            get: [Function: get],
            request: [Function: request],
            setMaxIdleHTTPParsers: [Function: setMaxIdleHTTPParsers],
            maxHeaderSize: [Getter],
            globalAgent: [Getter/Setter]
          },
          'https:': {
            Agent: [Function: Agent],
            globalAgent: [Agent],
            Server: [Function: Server],
            createServer: [Function: createServer],
            get: [Function: get],
            request: [Function: request]
          }
        },
        pathname: '/api/v1/collections/AITA/count'
      },
      _ended: true,
      _ending: true,
      _redirectCount: 0,
      _redirects: [],
      _requestBodyLength: 0,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'http://localhost:8000/api/v1/collections/AITA/count',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(kEndCalled)]: true,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [ 'Accept', 'application/json, text/plain, */*' ],
      'user-agent': [ 'User-Agent', 'axios/0.26.1' ],
      host: [ 'Host', 'localhost:8000' ]
    },
    [Symbol(kUniqueHeaders)]: null
  },
  response: {
    status: 500,
    statusText: 'Internal Server Error',
    headers: {
      date: 'Fri, 21 Apr 2023 14:33:00 GMT',
      server: 'uvicorn',
      'content-length': '49',
      'content-type': 'application/json',
      connection: 'close'
    },
    config: {
      transitional: {
        silentJSONParsing: true,
        forcedJSONParsing: true,
        clarifyTimeoutError: false
      },
      adapter: [Function: httpAdapter],
      transformRequest: [ [Function: transformRequest] ],
      transformResponse: [ [Function: transformResponse] ],
      timeout: 0,
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      validateStatus: [Function: validateStatus],
      headers: {
        Accept: 'application/json, text/plain, */*',
        'User-Agent': 'axios/0.26.1'
      },
      method: 'get',
      url: 'http://localhost:8000/api/v1/collections/AITA/count',
      data: undefined
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype] {
        abort: [Function (anonymous)],
        aborted: [Function (anonymous)],
        connect: [Function (anonymous)],
        error: [Function (anonymous)],
        socket: [Function (anonymous)],
        timeout: [Function (anonymous)],
        finish: [Function: requestOnFinish]
      },
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: false,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: false,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      strictContentLength: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: <ref *2> Socket {
        connecting: false,
        _hadError: false,
        _parent: null,
        _host: 'localhost',
        _closeAfterHandlingError: false,
        _readableState: ReadableState {
          objectMode: false,
          highWaterMark: 16384,
          buffer: BufferList { head: null, tail: null, length: 0 },
          length: 0,
          pipes: [],
          flowing: true,
          ended: false,
          endEmitted: false,
          reading: true,
          constructed: true,
          sync: false,
          needReadable: true,
          emittedReadable: false,
          readableListening: false,
          resumeScheduled: false,
          errorEmitted: false,
          emitClose: false,
          autoDestroy: true,
          destroyed: false,
          errored: null,
          closed: false,
          closeEmitted: false,
          defaultEncoding: 'utf8',
          awaitDrainWriters: null,
          multiAwaitDrain: false,
          readingMore: false,
          dataEmitted: true,
          decoder: null,
          encoding: null,
          [Symbol(kPaused)]: false
        },
        _events: [Object: null prototype] {
          end: [Function: onReadableStreamEnd],
          free: [Function: onFree],
          close: [ [Function: onClose], [Function: socketCloseListener] ],
          timeout: [Function: onTimeout],
          agentRemove: [Function: onRemove],
          error: [Function: socketErrorListener],
          finish: [Function: bound onceWrapper] {
            listener: [Function: destroy]
          }
        },
        _eventsCount: 7,
        _maxListeners: undefined,
        _writableState: WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: true,
          needDrain: false,
          ending: true,
          ended: true,
          finished: false,
          destroyed: false,
          decodeStrings: false,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: false,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          afterWriteTickInfo: null,
          buffered: [],
          bufferedIndex: 0,
          allBuffers: true,
          allNoop: true,
          pendingcb: 1,
          constructed: true,
          prefinished: false,
          errorEmitted: false,
          emitClose: false,
          autoDestroy: true,
          errored: null,
          closed: false,
          closeEmitted: false,
          [Symbol(kOnFinished)]: []
        },
        allowHalfOpen: false,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: null,
        _server: null,
        parser: null,
        _httpMessage: [Circular *1],
        [Symbol(async_id_symbol)]: 628,
        [Symbol(kHandle)]: TCP {
          reading: true,
          onconnection: null,
          [Symbol(owner_symbol)]: [Circular *2]
        },
        [Symbol(lastWriteQueueSize)]: 0,
        [Symbol(timeout)]: null,
        [Symbol(kBuffer)]: null,
        [Symbol(kBufferCb)]: null,
        [Symbol(kBufferGen)]: null,
        [Symbol(kCapture)]: false,
        [Symbol(kSetNoDelay)]: true,
        [Symbol(kSetKeepAlive)]: true,
        [Symbol(kSetKeepAliveInitialDelay)]: 60,
        [Symbol(kBytesRead)]: 0,
        [Symbol(kBytesWritten)]: 0
      },
      _header: 'GET /api/v1/collections/AITA/count HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'User-Agent: axios/0.26.1\r\n' +
        'Host: localhost:8000\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: Agent {
        _events: [Object: null prototype] {
          free: [Function (anonymous)],
          newListener: [Function: maybeEnableKeylog]
        },
        _eventsCount: 2,
        _maxListeners: undefined,
        defaultPort: 80,
        protocol: 'http:',
        options: [Object: null prototype] { noDelay: true, path: null },
        requests: [Object: null prototype] {},
        sockets: [Object: null prototype] { 'localhost:8000:': [ [Socket] ] },
        freeSockets: [Object: null prototype] {},
        keepAliveMsecs: 1000,
        keepAlive: false,
        maxSockets: Infinity,
        maxFreeSockets: 256,
        scheduling: 'lifo',
        maxTotalSockets: Infinity,
        totalSocketCount: 1,
        [Symbol(kCapture)]: false
      },
      socketPath: undefined,
      method: 'GET',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/api/v1/collections/AITA/count',
      _ended: true,
      res: IncomingMessage {
        _readableState: ReadableState {
          objectMode: false,
          highWaterMark: 16384,
          buffer: BufferList { head: null, tail: null, length: 0 },
          length: 0,
          pipes: [],
          flowing: true,
          ended: true,
          endEmitted: true,
          reading: false,
          constructed: true,
          sync: true,
          needReadable: false,
          emittedReadable: false,
          readableListening: false,
          resumeScheduled: false,
          errorEmitted: false,
          emitClose: true,
          autoDestroy: true,
          destroyed: true,
          errored: null,
          closed: true,
          closeEmitted: true,
          defaultEncoding: 'utf8',
          awaitDrainWriters: null,
          multiAwaitDrain: false,
          readingMore: true,
          dataEmitted: true,
          decoder: null,
          encoding: null,
          [Symbol(kPaused)]: false
        },
        _events: [Object: null prototype] {
          end: [ [Function: responseOnEnd], [Function: handleStreamEnd] ],
          data: [Function: handleStreamData],
          aborted: [Function: handlerStreamAborted],
          error: [Function: handleStreamError]
        },
        _eventsCount: 4,
        _maxListeners: undefined,
        socket: <ref *2> Socket {
          connecting: false,
          _hadError: false,
          _parent: null,
          _host: 'localhost',
          _closeAfterHandlingError: false,
          _readableState: ReadableState {
            objectMode: false,
            highWaterMark: 16384,
            buffer: [BufferList],
            length: 0,
            pipes: [],
            flowing: true,
            ended: false,
            endEmitted: false,
            reading: true,
            constructed: true,
            sync: false,
            needReadable: true,
            emittedReadable: false,
            readableListening: false,
            resumeScheduled: false,
            errorEmitted: false,
            emitClose: false,
            autoDestroy: true,
            destroyed: false,
            errored: null,
            closed: false,
            closeEmitted: false,
            defaultEncoding: 'utf8',
            awaitDrainWriters: null,
            multiAwaitDrain: false,
            readingMore: false,
            dataEmitted: true,
            decoder: null,
            encoding: null,
            [Symbol(kPaused)]: false
          },
          _events: [Object: null prototype] {
            end: [Function: onReadableStreamEnd],
            free: [Function: onFree],
            close: [Array],
            timeout: [Function: onTimeout],
            agentRemove: [Function: onRemove],
            error: [Function: socketErrorListener],
            finish: [Function]
          },
          _eventsCount: 7,
          _maxListeners: undefined,
          _writableState: WritableState {
            objectMode: false,
            highWaterMark: 16384,
            finalCalled: true,
            needDrain: false,
            ending: true,
            ended: true,
            finished: false,
            destroyed: false,
            decodeStrings: false,
            defaultEncoding: 'utf8',
            length: 0,
            writing: false,
            corked: 0,
            sync: false,
            bufferProcessing: false,
            onwrite: [Function: bound onwrite],
            writecb: null,
            writelen: 0,
            afterWriteTickInfo: null,
            buffered: [],
            bufferedIndex: 0,
            allBuffers: true,
            allNoop: true,
            pendingcb: 1,
            constructed: true,
            prefinished: false,
            errorEmitted: false,
            emitClose: false,
            autoDestroy: true,
            errored: null,
            closed: false,
            closeEmitted: false,
            [Symbol(kOnFinished)]: []
          },
          allowHalfOpen: false,
          _sockname: null,
          _pendingData: null,
          _pendingEncoding: '',
          server: null,
          _server: null,
          parser: null,
          _httpMessage: [Circular *1],
          [Symbol(async_id_symbol)]: 628,
          [Symbol(kHandle)]: TCP {
            reading: true,
            onconnection: null,
            [Symbol(owner_symbol)]: [Circular *2]
          },
          [Symbol(lastWriteQueueSize)]: 0,
          [Symbol(timeout)]: null,
          [Symbol(kBuffer)]: null,
          [Symbol(kBufferCb)]: null,
          [Symbol(kBufferGen)]: null,
          [Symbol(kCapture)]: false,
          [Symbol(kSetNoDelay)]: true,
          [Symbol(kSetKeepAlive)]: true,
          [Symbol(kSetKeepAliveInitialDelay)]: 60,
          [Symbol(kBytesRead)]: 0,
          [Symbol(kBytesWritten)]: 0
        },
        httpVersionMajor: 1,
        httpVersionMinor: 1,
        httpVersion: '1.1',
        complete: true,
        rawHeaders: [
          'date',
          'Fri, 21 Apr 2023 14:33:00 GMT',
          'server',
          'uvicorn',
          'content-length',
          '49',
          'content-type',
          'application/json',
          'connection',
          'close'
        ],
        rawTrailers: [],
        aborted: false,
        upgrade: false,
        url: '',
        method: null,
        statusCode: 500,
        statusMessage: 'Internal Server Error',
        client: <ref *2> Socket {
          connecting: false,
          _hadError: false,
          _parent: null,
          _host: 'localhost',
          _closeAfterHandlingError: false,
          _readableState: ReadableState {
            objectMode: false,
            highWaterMark: 16384,
            buffer: [BufferList],
            length: 0,
            pipes: [],
            flowing: true,
            ended: false,
            endEmitted: false,
            reading: true,
            constructed: true,
            sync: false,
            needReadable: true,
            emittedReadable: false,
            readableListening: false,
            resumeScheduled: false,
            errorEmitted: false,
            emitClose: false,
            autoDestroy: true,
            destroyed: false,
            errored: null,
            closed: false,
            closeEmitted: false,
            defaultEncoding: 'utf8',
            awaitDrainWriters: null,
            multiAwaitDrain: false,
            readingMore: false,
            dataEmitted: true,
            decoder: null,
            encoding: null,
            [Symbol(kPaused)]: false
          },
          _events: [Object: null prototype] {
            end: [Function: onReadableStreamEnd],
            free: [Function: onFree],
            close: [Array],
            timeout: [Function: onTimeout],
            agentRemove: [Function: onRemove],
            error: [Function: socketErrorListener],
            finish: [Function]
          },
          _eventsCount: 7,
          _maxListeners: undefined,
          _writableState: WritableState {
            objectMode: false,
            highWaterMark: 16384,
            finalCalled: true,
            needDrain: false,
            ending: true,
            ended: true,
            finished: false,
            destroyed: false,
            decodeStrings: false,
            defaultEncoding: 'utf8',
            length: 0,
            writing: false,
            corked: 0,
            sync: false,
            bufferProcessing: false,
            onwrite: [Function: bound onwrite],
            writecb: null,
            writelen: 0,
            afterWriteTickInfo: null,
            buffered: [],
            bufferedIndex: 0,
            allBuffers: true,
            allNoop: true,
            pendingcb: 1,
            constructed: true,
            prefinished: false,
            errorEmitted: false,
            emitClose: false,
            autoDestroy: true,
            errored: null,
            closed: false,
            closeEmitted: false,
            [Symbol(kOnFinished)]: []
          },
          allowHalfOpen: false,
          _sockname: null,
          _pendingData: null,
          _pendingEncoding: '',
          server: null,
          _server: null,
          parser: null,
          _httpMessage: [Circular *1],
          [Symbol(async_id_symbol)]: 628,
          [Symbol(kHandle)]: TCP {
            reading: true,
            onconnection: null,
            [Symbol(owner_symbol)]: [Circular *2]
          },
          [Symbol(lastWriteQueueSize)]: 0,
          [Symbol(timeout)]: null,
          [Symbol(kBuffer)]: null,
          [Symbol(kBufferCb)]: null,
          [Symbol(kBufferGen)]: null,
          [Symbol(kCapture)]: false,
          [Symbol(kSetNoDelay)]: true,
          [Symbol(kSetKeepAlive)]: true,
          [Symbol(kSetKeepAliveInitialDelay)]: 60,
          [Symbol(kBytesRead)]: 0,
          [Symbol(kBytesWritten)]: 0
        },
        _consuming: false,
        _dumped: false,
        req: [Circular *1],
        responseUrl: 'http://localhost:8000/api/v1/collections/AITA/count',
        redirects: [],
        [Symbol(kCapture)]: false,
        [Symbol(kHeaders)]: {
          date: 'Fri, 21 Apr 2023 14:33:00 GMT',
          server: 'uvicorn',
          'content-length': '49',
          'content-type': 'application/json',
          connection: 'close'
        },
        [Symbol(kHeadersCount)]: 10,
        [Symbol(kTrailers)]: null,
        [Symbol(kTrailersCount)]: 0
      },
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'localhost',
      protocol: 'http:',
      _redirectable: Writable {
        _writableState: WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: false,
          needDrain: false,
          ending: false,
          ended: false,
          finished: false,
          destroyed: false,
          decodeStrings: true,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: true,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          afterWriteTickInfo: null,
          buffered: [],
          bufferedIndex: 0,
          allBuffers: true,
          allNoop: true,
          pendingcb: 0,
          constructed: true,
          prefinished: false,
          errorEmitted: false,
          emitClose: true,
          autoDestroy: true,
          errored: null,
          closed: false,
          closeEmitted: false,
          [Symbol(kOnFinished)]: []
        },
        _events: [Object: null prototype] {
          response: [Function: handleResponse],
          error: [Function: handleRequestError],
          socket: [Function: handleRequestSocket]
        },
        _eventsCount: 3,
        _maxListeners: undefined,
        _options: {
          maxRedirects: 21,
          maxBodyLength: 10485760,
          protocol: 'http:',
          path: '/api/v1/collections/AITA/count',
          method: 'GET',
          headers: {
            Accept: 'application/json, text/plain, */*',
            'User-Agent': 'axios/0.26.1'
          },
          agent: undefined,
          agents: { http: undefined, https: undefined },
          auth: undefined,
          hostname: 'localhost',
          port: '8000',
          nativeProtocols: { 'http:': [Object], 'https:': [Object] },
          pathname: '/api/v1/collections/AITA/count'
        },
        _ended: true,
        _ending: true,
        _redirectCount: 0,
        _redirects: [],
        _requestBodyLength: 0,
        _requestBodyBuffers: [],
        _onNativeResponse: [Function (anonymous)],
        _currentRequest: [Circular *1],
        _currentUrl: 'http://localhost:8000/api/v1/collections/AITA/count',
        [Symbol(kCapture)]: false
      },
      [Symbol(kCapture)]: false,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(kEndCalled)]: true,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype] {
        accept: [ 'Accept', 'application/json, text/plain, */*' ],
        'user-agent': [ 'User-Agent', 'axios/0.26.1' ],
        host: [ 'Host', 'localhost:8000' ]
      },
      [Symbol(kUniqueHeaders)]: null
    },
    data: { error: "IndexError('list index out of range')" }
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}

@kevmok how much data are you trying to load in? can you try insert only a few documents to see if that works? we have an open PR that is close to landing that will switch from axios to fetch and remove this issue, if that is indeed your issue in this case.

@jeffchuber It's a pdf that's only 2 pages long and I also tried a PDF that was only 1 page long, so not big whatsoever

@kevmok any chance you could share the file with me so I can reproduce this? I would love to help<EMAIL_ADDRESS>

Yes, thank you for looking into this @jeffchuber
SOP.pdf

thanks @kevmok - will look into this this afternoon

@kevmok could you provide me more code to reproduce this? feel free to share with<EMAIL_ADDRESS>if it is sensitive
there are a number of function here PDFLoader, how embeddings are being generated, etc. ty!

No worries, here you go:
import { PDFLoader } from 'langchain/document_loaders/fs/pdf';
import { OpenAIEmbeddings } from 'langchain/embeddings/openai';
import { Chroma } from 'langchain/vectorstores/chroma';
import chalk from 'chalk';
import { OpenAI } from 'langchain/llms/openai';
import { loadQAStuffChain } from 'langchain/chains';
import { PromptTemplate } from 'langchain/prompts';
import { promptUser, log } from '../utils/index.js';

const embeddings = new OpenAIEmbeddings({
  openAIApiKey: process.env.OPENAI_KEY,
});

export async function pdfLoader(llm: OpenAI) {
  const loader = new PDFLoader('src/pdfs/SOP.pdf');
  log(loader);
  const docs = await loader.load();
  log(docs);
  const vectorStore = await Chroma.fromDocuments(docs, embeddings, {
    collectionName: 'AITA',
  });
  await vectorStore.ensureCollection();

  const userInput = promptUser('What would like to look into: ');
  const resultDocs = vectorStore.similaritySearch(userInput);

  const chain = loadQAStuffChain(llm);

  const { result } = await chain.call({
    input_documents: resultDocs,
    question: userInput,
  });
  log(chalk.greenBright(result));
}

@jeffchuber I did something really similar in python and it works:
import openai
from dotenv import load_dotenv
import os
from langchain import OpenAI
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import Chroma
from langchain.chains.question_answering import load_qa_chain
from langchain.chat_models import ChatOpenAI

load_dotenv()

openai_api_key = os.environ.get("OPENAI_KEY")

llm = ChatOpenAI(
    temperature=0.7, openai_api_key=openai_api_key, model_name="gpt-3.5-turbo"
)

directory = "pdfss"
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)

# if not os.path.exists(directory):
print("embedding the doc now")
loader = PyPDFLoader("./SOP.pdf")
pages = loader.load_and_split()

vectordb = Chroma.from_documents(
    documents=pages, embedding=embeddings, persist_directory=directory
)

vectordb.persist()

# vectordb = Chroma(persist_directory=directory, embedding_function=embeddings)

user_input = str(input("Please enter what you are looking for: "))

result_docs = vectordb.similarity_search(user_input)
chain = load_qa_chain(llm, chain_type="stuff")
output = chain({"input_documents": result_docs, "question": user_input})

print(output["output_text"])

Closing this because it it stale and I have not been able to reproduce it.

@jeffchuber @kevmok for posterity sake: I ran into this exact issue. The problem was that I was querying a user with no collection or documents. Once I created the collection and added documents for the user everything worked.

Yep, to further clarify, a collection is created when you create the VectorStore object with a collection ID, such as:
Chroma(persist_directory=settings.persist_directory,
                      embedding_function=embeddings.sentence_transformer_ef,
                      client_settings=settings.settings, collection_name=fixed_name)

When doing that, you are initializing a vectorstore and creating the collection at the same time. If later on you decide to delete the collection, and try to use the same vectostore, it will fail.
You need to re-instantiate the vectorstore.

I had the same error. turns out that the pdf file that I uploaded includes only an image. when I used another pdf, the error was gone

same issue with some PDFs. very annoying.
def Create_Fiaas_db(chunks: List[str]) -> FAISS:

    embedding_model = OpenAIEmbeddings()

    return FAISS.from_documents(chunks, embedding_model)

File "C:\AI\UI_Faiss_Brain\myenv\Lib\site-packages\langchain\vectorstores\faiss.py", line 562, in __from
index = faiss.IndexFlatL2(len(embeddings[0]))

Has anyone found a solution to this issue? I’m encountering the same problem when using this PDF here:
https://papers.nips.cc/paper_files/paper/2020/file/0004d0b59e19461ff126e3a08a814c33-Paper.pdf
I'm using Python with ChromaDB:
from langchain_chroma import Chroma
Chroma.from_documents(documents, self.embedding_model)

chromadb==0.5.3
I'm having the same problem when doing

from langchain_chroma import Chroma

vector_store = Chroma.from_documents(
      documents=docs,
      embedding=embedding_model,
      persist_directory=vector_store_path
)

Where
docs: List[langchain_core.documents.base.Document]
embedding: langchain_google_vertexai.embeddings.VertexAIEmbeddings
vector_store_path: str

The function above gives me

This is my call stack when the error is raised

Tracing back to the origin of the error, in this file venv/lib/python3.10/site-packages/langchain_community/vectorstores/chroma.py texts [1] have len 57, but embeddings [2] have len 31.

The line embeddings = self._embedding_function.embed_documents(texts) is not returning a list of the same size as texts and this is why the error is crashing on
for idx, m in enumerate(metadata):
      [embeddings[idx] for idx in non_empty_ids] if embeddings else None`

given metadata has the same size as texts.

@matheusft, there are a number of reasons why this may fail. If you change the Embeddings do you still see the same error?
Can you try with HF embeddings and let me know if the same issue happens.
from langchain_huggingface import HuggingFaceEmbeddings

langchain_embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")

@matheusft, there are a number of reasons why this may fail. If you change the Embeddings do you still see the same error?
Can you try with HF embeddings and let me know if the same issue happens.
from langchain_huggingface import HuggingFaceEmbeddings

langchain_embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")

It works ok with HuggingFaceEmbeddings

@matheusft, excellent then, let's dig into LC's vertex AI to figure out why this is happening - https://github.com/langchain-ai/langchain-google/blob/main/libs/vertexai/langchain_google_vertexai/embeddings.py
by the way, Chroma also offers a VertexAI embedding function - https://github.com/chroma-core/chroma/blob/28b37392594dd7ba60e35c53f098d7f88a9d3988/chromadb/utils/embedding_functions/google_embedding_function.py#L84
You can use that to see if it works. We have a wrapper that turns Chroma embedding function into LC Embeddings - https://cookbook.chromadb.dev/integrations/langchain/embeddings/#chroma-built-in-langchain-adapter

@matheusft, excellent then, let's dig into LC's vertex AI to figure out why this is happening - https://github.com/langchain-ai/langchain-google/blob/main/libs/vertexai/langchain_google_vertexai/embeddings.py
by the way, Chroma also offers a VertexAI embedding function -
https://github.com/chroma-core/chroma/blob/28b37392594dd7ba60e35c53f098d7f88a9d3988/chromadb/utils/embedding_functions/google_embedding_function.py#L84
You can use that to see if it works. We have a wrapper that turns Chroma embedding function into LC Embeddings - https://cookbook.chromadb.dev/integrations/langchain/embeddings/#chroma-built-in-langchain-adapter

Thanks for the suggestion.
I can't really try that as the GoogleVertexEmbeddingFunction requires an api_key (which I don't have) and I need to define my embedding_model using GCP's project_id.
from langchain_google_vertexai import VertexAIEmbeddings

embedding_model = VertexAIEmbeddings(
    model_name=my_llm_model,
    project_id=my_project_id,
    location=my_location
)


Launch server as localhost instead of <IP_ADDRESS>

Unless there's any strong reason to prefer the IP address over localhost that I'm not privy to, I'd like to propose changing wrangler to announce the server starting as localhost instead
Browsers can't set cookies to IP addresses, so any login or session tracking that a project might want to do won't work until the user switches to localhost, which can be the cause for some confusion if the dev isn't already familiar with that behaviour.

I had this vague recollection from previous projects that there is something better about using one or the other. But I can't, for the life of me, remember what it was...
A quick Google (and StackOverflow search) turned up this comment:
https://stackoverflow.com/questions/7382602/what-is-the-difference-between-127-0-0-1-and-localhost#comment116497184_7382631

On my Windows10 system the DNS lookup is really, really slow, about 1100 milli secs. So I switched to <IP_ADDRESS> –
Wolfgang Kuehn Jan 25 '21 at 17:26

But I have not tested that theory.

One advantage to an IP address is that it can be loaded by devices on your network.
I always prefer the server start at <IP_ADDRESS>. That way, it can be served from localhost as well as your actual IP address.

One advantage to an IP address is that it can be loaded by devices on your network.

Of course Cloudflare Tunnel can solve this as well.

Browsers can't set cookies to IP addresses, so any login or session tracking that a project might want to do won't work until the user switches to localhost, which can be the cause for some confusion if the dev isn't already familiar with that behaviour.

@JacobParis , I'm not sure this is true. I just spun up a quick test:
const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
  res.setHeader("Set-Cookie", "name=value;");
  res.send("Hello World!");
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
  console.log(`Example app listening at http://<IP_ADDRESS>:${port}`);
});

And cookies were sent in the response, saved by the browser, and sent on subsequent requests when visiting both localhost and <IP_ADDRESS>.
Looking further, there's maybe some quirks if people are setting a domain for their cookie. But for both localhost, and <IP_ADDRESS>, I could't make that work.
Do you have a repro of cookies not working on <IP_ADDRESS>?
@justinnoel , I'm totally on board with changing it to <IP_ADDRESS>. @JacobParis , how do you feel about this instead?

#184 raising the point that <IP_ADDRESS> is inaccessible over ipv6. I assume the same is true for <IP_ADDRESS>, (so maybe localhost is in fact the best option) but I haven't checked yet.

Might just also add @GregBrimble it seems that ipv6 is the default network interface on M1 macs, as opposed to v4 on Intel. Can't say for fact, but starting http on Intel binds to <IP_ADDRESS>, and binding M1, to ::1. Granted 100% not related, but still pointing that I may not be an edge case, and you'll find an increasing number of v6 usecases.
On the cookie support for ips:
If you bind to an ambient ip, ::1 or <IP_ADDRESS> — then any inbound connection will be allowed on the network (provided there is an open firewall), every device also has a hostname, generally on Mac is just .local. Once again depending on your network, that'll just work if you wanna visit that cross device, without the need for an ip.
In any case, I believe there is 2 cases here. What you proxy or "upstream", and on what do start your very own local server as.
What you upstream, 100% shouldn't be automatic, and rather a --origin=http://localhost:8080 (or something to that effect). My opinion.
As for what your own server is, that is more than okay to be <IP_ADDRESS>, outside security issues (makes pc accessible on entire network) — is fine, as localhost already can forward to that. It's more just about DX, as pointed out. You can bind the server to <IP_ADDRESS> (to mitigate security), but all the cli links or auto browser opens to open "localhost".

Hello,
Having various local projects running with localhost or <IP_ADDRESS> for various reasons, I don't encounter any problems setting cookies on either set. However, as mentioned above, I think that booting on <IP_ADDRESS> might be the best idea?
Cheers

Alrighty, I've just tried localhost on my machine. I'm able to access it:

at http://<IP_ADDRESS>:8788/
at http://[::]:8788/
at http://[::1]:8788/
at http://localhost:8788/
at http://<IP_ADDRESS>:8788/
and from another device on my LAN, at http://<DEVICE_IPV4>:8788/

This was done on my M1 MacBook.
So if there are no objections in the next few of days, I'll swap this over to localhost next week.

Thanks everyone for all of your input. Merging this as soon as the tests pass :)


Settings->Other has "Starting Overkill Duration" even though Combat Spec (Doesn't skill Overkill) is selected

Describe the bug
Not sure if it's a bug or simply a mistake. "Starting Overkill duration" is available and is set to 20 seconds by default, which obviously makes sense. But that option is still there even when the Overkill Talent is not selected at all. I have tested it with multiple sims and it does not change the outcome whether 0s or 20s are selected so it's not technically impacting the sim but it does generate confusion.
To Reproduce
Steps to reproduce the behavior:

Use Rogue Sim with Assassination as starting point.
Switch talents/ gear to Combat (effectively deselecting Overkill) I use Saved Settings to switch between specs.
Under Settings -> Other "Starting Overkill duration" is still present.

Expected behavior
Whenever I deselect a talent in the "Talents" tab, its parameters or variables shouldn't show up in the "Settings" tab.
Sim Links and Screenshots
If applicable, add links to your sim settings or screenshots to help explain your problem.
Desktop (please complete the following information):

OS: Windows 10
Browser Chrome
Version 114.0.5735.201 (Official Build) (64-Bit)

Smartphone (please complete the following information):
Not used
Additional context
I hope this isn't a frivolous bug report, if so, I'm sorry.

The "Starting Overkill duration" rotation option is used for the Overkill and Master of Subtlety talents. Adjusting the option to only show when used is a reasonable enhancement. Thanks for noticing!


[Bug Report] WARN: The obs returned by the reset() method was expecting numpy array dtype to be <class 'numpy.float32'>, actual type: float64

Describe the bug
Mujoco V5 on version 1.0.0rc
/data/deploy/Gymnasium/gymnasium/utils/passive_env_checker.py:137: UserWarning: WARN: The obs returned by the `reset()` method was expecting numpy array dtype to be <class 'numpy.float32'>, actual type: float64
  logger.warn(
/data/deploy/Gymnasium/gymnasium/utils/passive_env_checker.py:161: UserWarning: WARN: The obs returned by the `reset()` method is not within the observation space.
  logger.warn(f"{pre} is not within the observation space.")
/data/deploy/Gymnasium/gymnasium/utils/passive_env_checker.py:137: UserWarning: WARN: The obs returned by the `step()` method was expecting numpy array dtype to be <class 'numpy.float32'>, actual type: float64
  logger.warn(
/data/deploy/Gymnasium/gymnasium/utils/passive_env_checker.py:161: UserWarning: WARN: The obs returned by the `step()` method is not within the observation space.
  logger.warn(f"{pre} is not within the observation space.")

Code example
No response
System info
pip install -e .
Additional context
Just trying on Mujoco V5
Checklist

[X] I have checked that there is no similar issue in the repo

I can't replicate this
import gymnasium as gym
print(gym.__version__)
env = gym.make("Ant-v5")
env.reset()
env.step(env.action_space.sample())

@jamartinh

does this also happen with mujuco-v4 environments?
can you run this and check if it fails on your computer

import gymnasium
import numpy as np
env = gymnasium.make("Ant-v5")
env.unwrapped.data.qpos.dtype
dtype('float64')
assert env.unwrapped.data.qpos.dtype == np.float64

Sorry my fault, there is a bug in the CleanRL library forcing the space to be np.float32
https://github.com/vwxyzjn/cleanrl/blob/329b128ea8a6afe76ce25d427c4ceba7276ad50e/cleanrl/sac_continuous_action.py#L205

envs.single_observation_space.dtype = np.float32

I don't think it is a bug with CleanRL, it is an intentional feature

I see.
El vie, 8 dic 2023, 13:18, Mark Towers @.***> escribió:

I don't think it is a bug with CleanRL, it is an intentional feature
—
Reply to this email directly, view it on GitHub
https://github.com/Farama-Foundation/Gymnasium/issues/825#issuecomment-1847076984,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA3NNMZUUNVO37QSMT3GGBLYIMASVAVCNFSM6AAAAABAMPOKFKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNBXGA3TMOJYGQ
.
You are receiving this because you modified the open/close state.Message
ID: @.***>