[Feature] Add metric for analyzing  cache-related  span like Virtual Database

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
Virtual  Cache will analysis  span  which  is  cache-related . It will generate SLA, response time or some else metric
In a word  , it's   similar to Virtual Database
Reference virtual-database skywalking demo
Works should  to  be  done :
Agent (focus on Java agent)

[ ]   Update  cache plugins for  uniform Span’s layer  , tag   if  necessary .
The known cache-related plugin(need suggestion : which plugin is cache-related):

jedis-plugins
redisson-plugin
xmemcached-plugin
zookeeper-plugin
spymemcached-plugin

Backend

[ ]  develop  Virtual  Cache metric

Add  RequestType : Cache
ServiceMeta for registering  cache  service
Cache-source for OAL
Slow query Top N metric

[ ]  Update core oal  for metric (reponse time  or  some  else )
[ ] Update  Doc  for  Virtual  Cache

Use case
No response
Related issues
No response
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

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

Maybe , we should expand  the meaning  of  Database  . Virtual Database  should  contains  cache  instead of creating Virtual Cache

I think they are different, basically. Cache is much faster than database.

They  are used for saving  data , and contain statement  too .
We provide slow threshold config for various DB
agent-analyzer:
  selector: ${SW_AGENT_ANALYZER:default}
  default:
    slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100,redis:20}

We just add redis:20

And we could append dbType to serviceName like Mysql:<IP_ADDRESS>:3306 or Redis:<IP_ADDRESS>:6379

Yes, I don't think this is tech issue. I just talked from design perspective.

design perspective

It depends how you define Database  . Design comes from Definition .

Let's say in this way, cache should be related to more metrics, such as cache hint is an important metric, database doesn't care about hint rate.

Hint ? means cache hit ?
Data store system can response  a result ,   whether the result is empty or not .From  client-server communication protocol perspective , they are all successful  .
If we want to get  hit rate , we should decode response , It's better if  the response have hit-state  .  However, we cannot guarantee that every cache system protocol has hit-state
Finally , Hit also  is appropriate  for Database (such as Mysql) .

buYou just described it from a general side, I mean for layer, and for apm, we should understand the service.
In every official architecture, cache service and database service are two things. This is why we have cache and service span type from many years ago.
You should not say they arevsame just because they have similar metric.

OK , I 'll  follow  current rule . For  a system  the  concept should  be  consistent at  least

And another thing is, that some caches are not remote services. The cache could be local memory.

Should we analysis  local span for  local memory  cache  such  as  guava-cache

Yes, we should, and we should provide a format rule to difference local and remote caches.

The  new config  look like  this :
agent-analyzer:
     #......
    virtualService:
      database:
        slowAccessThreshold: ${SW_VIRTUAL_DB_SLOW_THRESHOLD:default:200,mongodb:100}
        maxSlowStatementLength: ${SW_VIRTUAL_DB_SLOW_MAX_LENGTH:default:200,mongodb:100}
      cache:
        slowAccessThreshold: ${SW_VIRTUAL_CACHE_SLOW_THRESHOLD:default:80,redis:30}
        maxSlowStatementLength: ${SW_VIRTUAL_CACHE_SLOW_MAX_LENGTH:default:200,redis:100}
        enableLocal: false # This  term  define  whether  analysis  local cache such  as  Guave-Cache ,Ecache

Do  you have any  suggestion?

Does the kernal support this kind of structure? I remember only 3 levels supported.

Yes  , only  3 levels  supported  , I'll reorganize  this  config ,

agent-analyzer:
  selector: ${SW_AGENT_ANALYZER:default}
  default:
    # .....
    databaseSlowAccessThreshold: ${SW_VIRTUAL_DB_SLOW_THRESHOLD:default:200,mongodb:100}
    databaseMaxSlowStatementLength: ${SW_VIRTUAL_DB_SLOW_MAX_LENGTH:default:200,mongodb:100}
    cacheSlowAccessThreshold: ${SW_VIRTUAL_CACHE_SLOW_THRESHOLD:default:80,redis:30}
    cacheMaxSlowStatementLength: ${SW_VIRTUAL_CACHE_SLOW_MAX_LENGTH:default:200,redis:100}
    analysisLocalCache: false # This  term  define  whether  analysis  local cache such  as  Guave-Cache ,Ecache

BTW , I want to  modify the kernel  for  supporting more  levels in future

BTW , I want to modify the kernel for supporting more levels in future

The reason we don't recommend more levels is that, nested YAML file is very hard to be controlled through system env variables, which are the key parts of how helm/operator(cloud-native) components control the OAP behaviors in the setup stage.

cacheMaxSlowStatementLength: ${SW_VIRTUAL_CACHE_SLOW_MAX_LENGTH:default:200,redis:100}

Is this necessary? What kinds of statements we could get? Could you provide an example? Such as in Redis case, if this statement doesn't include key, then mostly, it is pointless.
And for cache, put usually is much slower than read. Threshold should be separated for read/write or general operation.

if this statement doesn't include key

Yes, sometimes  we  couldn't  get  the key  from  cache  plugin   , we could  show slow  command in  UI  at  least . It's better  than  noting .
jedis-4.x -plugin :
- {key: db.statement, value: HSET a}
- {key: db.statement, value: SET key}
- {key: db.statement, value: XADD abc}
- {key: db.statement, value: XREAD}    # only command , no key !!

Threshold should be separated for read/write or general operation.

Agree

OK, then the value of these metrics would be lower than we could be.

Now , we could distinguish  write/read operation .  But we  could't guarantee every span contains cache.key and cache.op.
The  next  question is  which span should be analyzed ?
I  think :
When the span contains  op  , we  generate  response time , cpm ,sla ,  etc for write/read operation  respectively
When the span contains key , we  generate TopN , we could't  generate Write-TopN ,Read-TopN , as the op  maybe not exist . If  we  want Write-TopN ,Read-TopN , we should analysis the complete span (which contains  op and key ),because it's meaningful that show  the slow keys

Slow read and write are meaningful. We should use op and key as the samplrd statement.
We could only analysis this when relative tags existing

make sense  to me

I don't know  how to  test with  UI  , there  is any doc ?

Do you have virtual cache layer in the backend? Once you added, you could use customer dashboard to set up dashboards for the new layer.
Docs are here. https://skywalking.apache.org/docs/main/next/en/ui/readme/
Also this PR is a good place to learn for new dashboard setup steps, https://github.com/apache/skywalking/pull/9432

I  have already created following json config  in backend

ui-initialized-templates/virtual_cache/virtual-cache-root.json
ui-initialized-templates/virtual_cache/virtual-cache-service.json

In  UI
added to general.ts:
      {
        path: "/cache",
        name: "VirtualCache",
        meta: {
          title: "VirtualCache",
          exact: true,
        },
        component: () =>
          import(/* webpackChunkName: "layer" */ "@/views/Layer.vue"),
      },
      {
        path: "/cache/tab/:activeTabIndex",
        name: "VirtualCacheActiveTabIndex",
        meta: {
          notShow: true,
        },
        component: () =>
          import(/* webpackChunkName: "layer" */ "@/views/Layer.vue"),
      }

added to data.ts
export const RoutesMap: { [key: string]: string } = {
  VirtualCache: "VIRTUAL_CACHE",
  VirtualCacheActiveTabIndex: "VIRTUAL_CACHE"
}

But Please  set  a root dashboard for  VIRTUAL_CACHE when I visit page

The dashboard of virtual-cache-root should be set as root at the dashboard management page. I am not sure how you wrote these JSONs, generally, they are exported from the dashboard management page too.

Because browser cache. It work now.

Do you set the key as a or key on purpose? After we have this in the  codebase, we need to update showcase. So, we need to set keys in the demo services clearly, as well as e2e

Is read/write success related to error status only?

Is read/write success related to error status only?

Yes
cache_write_sla = from(VirtualCacheWrite.*).percent(status == true);
cache_read_sla = from(VirtualCacheRead.*).percent(status == true);

Do you set the key as a or key on purpose? After we have this in the codebase, we need to update showcase. So, we need to set keys in the demo services clearly, as well as e2e

The showcase is crash now ,  I would provide clearly test data after writing unit test .

Showcase could run locally on KinD and DockerCompose. demo is just another host.

Showcase could run locally on KinD and DockerCompose. demo is just another host.

Showcase means skywalking-showcase repo?
And should I provide e2e-test? I have consulted some e2e-test in OAP . I think my e2e-test should integrate with agent  , but I could't found similar test .May I misunderstand the e2e in OAP

e2e has cases with agents. What do you mean?

Showcase could be done after e2e. Because e2e is checking features, because we are confident to merge.
Yes, showcase is the repo.

e2e has cases with agents. What do you mean?

I'm  confused that  if e2e has java-agent case ,I  should could search some file by keyword -javaagent  .
Now, I think I have  found the correct entrance about e2e .

The env JAVA_TOOL_OPTIONS is set to docker image ghcr.io/apache/skywalking-java/skywalking-java
I should update e2e-service-consumer , e2e-service-provider to add redis test code
Then create  e2e.yaml (maybe need to extend base-compose.yml)  to trigger,verify my data

Right ?

You may not need to change <3>, instead, you should adjust metrics verification and service list in existing e2e. Once <2> is done, the analysis would be done automatically.

You could use an in-memory cache, if a redis service is why you thought you should change base-compose.yml

➜  skywalking git:(feature/vitrual-cache) ✗  /Users/HOME/GolandProjects/skywalking-infra-e2e/bin/darwin/e2e run -c test/e2e-v2/cases/meter/e2e.yaml
INFO load the e2e config successfully
Pulling oap (skywalking/oap:latest)...
The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.

Continue with the new image? [yN]pull access denied for skywalking/oap, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
ERROR Local Docker compose exited abnormally whilst running docker-compose: [--env-file /Users/HOME/ideaProjects/skywalking/test/e2e-v2/script/env up -d]. exit status 1

I couldn't  found skywalking/oap in docker hub .  I don't understand  where  the image docker would download .

It is not on docker hub, they are here, https://github.com/orgs/apache/packages?repo_name=skywalking

It looks like download image  from docker hub . I just execute above shell . Maybe  I  loss some  step

Latest is your local build based on the latest code.

You could use an in-memory cache, if a redis service is why you thought you should change base-compose.yml

in-memory cache (e.g. guava-cache, ehcache) plugin is optional . I would add redis docker image to base-compose.yml.
It's OK ?

It's better that  updating   docker-compose.yml in e2e-test case  rather than base-compose.yml

Please don't do that. e2e only has 3U8G for the whole env, another server(redis) would impact the stability.
An optional plugin is able to activate. Is there any issue to do so? Showcase also includes optional plugin activation, such as Spring Gateway.

OK, I would study how to activate optional plugin  in e2e

I wrote TopNCacheReadCommand.java  like TopNDatabaseStatement , It extend TopN  too
BTW TopN extend Record.
https://github.com/apache/skywalking/blob/96faed0185aceefdc30fcd2fb2d9291ff2959ca2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/database/TopNDatabaseStatement.java#L37
I use this  command  to  get  topN record
swctl --display yaml --base-url=http://<IP_ADDRESS>:12800/graphql metrics top   --start=-60m --name=top_n_cache_read_command  --service-id=R3VhdmFDYWNoZS1sb2NhbA==.0

top_n_cache_read_command is index(table)name , defined in TopNCacheReadCommand
And OAP cause exception
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ENTITY_ID" not found; SQL statement:
select * from (select avg(latency) result,entity_id from top_n_cache_read_command where time_bucket >= ? and time_bucket <= ? and service_id=? group by entity_id)  as T order by result desc limit 5 [42122-212]

I have confirm TopN class  don't  define ENTITY_ID , But Metrics class defined  . I could'n find other example about TopN metrics .
So , I'm not  sure  the error is caused by swctl command  or my code
The  complete error stack in OAP
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ENTITY_ID" not found; SQL statement:
select * from (select avg(latency) result,entity_id from top_n_cache_read_command where time_bucket >= ? and time_bucket <= ? and service_id=? group by entity_id)  as T order by result desc limit 5 [42122-212]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:244) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.expression.ExpressionColumn.optimizeOther(ExpressionColumn.java:226) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:213) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.query.Select.prepareExpressions(Select.java:1170) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.table.DerivedTable.<init>(DerivedTable.java:41) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.query.Query.toTable(Query.java:1004) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.readDerivedTableWithCorrelation(Parser.java:1936) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.readTablePrimary(Parser.java:1816) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.readTableReference(Parser.java:2359) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseSelectFromPart(Parser.java:2810) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseSelect(Parser.java:2917) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseQueryPrimary(Parser.java:2800) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseQueryTerm(Parser.java:2667) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2646) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2639) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseQueryExpression(Parser.java:2632) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parseQuery(Parser.java:2593) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parsePrepared(Parser.java:724) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parse(Parser.java:691) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.command.Parser.prepareCommand(Parser.java:568) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.212.jar:2.1.212]
	at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288) ~[h2-2.1.212.jar:2.1.212]
	at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:318) ~[HikariCP-3.1.0.jar:?]
	at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-3.1.0.jar:?]
	at org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient.executeQuery(JDBCHikariCPClient.java:119) ~[classes/:?]
	at org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao.H2AggregationQueryDAO.sortMetrics(H2AggregationQueryDAO.java:70) ~[classes/:?]
	at org.apache.skywalking.oap.server.core.query.AggregationQueryService.sortMetrics(AggregationQueryService.java:63) ~[classes/:?]
	at org.apache.skywalking.oap.query.graphql.resolver.MetricsQuery.sortMetrics(MetricsQuery.java:151) ~[classes/:?]
	at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_321]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_321]
	at graphql.kickstart.tools.resolver.MethodFieldResolverDataFetcher.get(MethodFieldResolver.kt:280) ~[graphql-java-tools-12.0.2.jar:?]

The http info
.b...B&.POST /graphql HTTP/1.1
Host: <IP_ADDRESS>:12800
User-Agent: Go-http-client/1.1
Content-Length: 1241
Accept: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip

{"query":"# Licensed to Apache Software Foundation (ASF) under one or more contributor\n# license agreements. See the NOTICE file distributed with\n# this work for additional information regarding copyright\n# ownership. Apache Software Foundation (ASF) licenses this file to you under\n# the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\nquery ($condition:TopNCondition!, $duration: Duration!) {\n    result: sortMetrics(condition: $condition, duration: $duration) {\n        name\n        value\n    }\n}\n","variables":{"condition":{"name":"top_n_cache_read_command","parentService":"GuavaCache-local","normal":false,"scope":"Service","topN":5,"order":"DES"},"duration":{"start":"2022-09-13 1853","end":"2022-09-13 1923","step":"MINUTE"}}}

19:53:18.719900 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52, bad cksum 0 (->3cc2)!)
    localhost.12800 > localhost.51771: Flags [.], cksum 0xfe28 (incorrect -> 0xe9c6), seq 221, ack 2608, win 6338, options [nop,nop,TS val<PHONE_NUMBER> ecr<PHONE_NUMBER>], length 0
E..4..@.@...........2..;.u....XH.....(.....
.B&..b..
19:53:18.738493 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 200, bad cksum 0 (->3c2e)!)
    localhost.12800 > localhost.51771: Flags [P.], cksum 0xfebc (incorrect -> 0xe882), seq 221:369, ack 2608, win 6338, options [nop,nop,TS val<PHONE_NUMBER> ecr<PHONE_NUMBER>], length 148
E.....@.@...........2..;.u....XH...........
.B&..b..HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
content-length: 196
server: Armeria/1.18.0
date: Tue, 13 Sep 2022 11:53:18 GMT

UI  invoke readSampledRecords method in  OAP . it's different with swctl

Have you checked the UI about what the slow SQL statement actually requests?
There are several concepts you missed.

TopN is not a metric type, it is a record.
Sorted metrics, which you are using, is not sampled record. The latter is what you should use.
Slow statement is nearly impossible to test in the e2e cases. Take a look at TopNWorker mechanism, it is reported perioedly, which is controlled through SW_CORE_TOPN_REPORT_PERIOD.(10min default) You most likely face timeout if you want to test this in the e2e actually. We prefer you do manually testing locally.

Got it  .  my shell  is incorrect  . I  misunderstood the subcommand top
swctl --display yaml --base-url=http://<IP_ADDRESS>:12800/graphql metrics -h

  top                                 query the top <n> entities sorted by the specified metrics

This  top  don't  mean  TopN record .  emmm

If  set SW_CORE_TOPN_REPORT_PERIOD   small enough , Doesn't  e2e work correctly  ?

Actually , I  modified the code  about  SW_CORE_TOPN_REPORT_PERIOD  on  my  PC  , for  test  TopN .

If set SW_CORE_TOPN_REPORT_PERIOD  small enough , Doesn't e2e work correctly ?

It could be, just be careful about the settings, if you generate too many traffics, and this period is too small, the storage could be overload easily.

I have finished the most work of this issue , I  think .
Are  you  ready for virtual-cache  doc ?
https://github.com/apache/skywalking-java/pull/303#issuecomment-1240112282

Did you prepare virtual-cache doc ?
https://github.com/apache/skywalking-java/pull/303#issuecomment-1240112282

What do you mean I prepare? Do you want to me to write that up?

Sorry , I thought you want prepare it .

If you face any trouble to write one, I would help. If not, I think it should be good to be written by you. After all, this is your PR :)

No trouble , I misunderstood your mean  .  Haha  .

BTW, I think CLI doesn't support querying the sampled record. You and @yswdqz (Slow SQL - MySQL server statistic https://github.com/apache/skywalking/pull/9575) noticed this issue today.
@yswdqz told me he may want to try this, but he is not familiar with golang much. How about your golang skill? @pg-yang

not familiar with golang  either .
I  read https://github.com/apache/skywalking-infra-e2e simply .  The code is not a lot 。

not familiar with golang either . I read https://github.com/apache/skywalking-infra-e2e simply . The code is not a lot. I debugged this project for my test case today .

swctl is actually from https://github.com/apache/skywalking-cli. infra-e2e is just a scheduler to push the tests forward step by step. SkyWalking has a lot of sub-projects, sorry.

@mrproliu @kezhenxu94 If you have time to help on the CLI part, it would be easier.

SkyWalking has a lot of sub-projects

I realized it .
e2e for  trigger , verify ,etc
skywalking-cli  for  interaction with OAP .
I  would like support this feature , but  i'm golang newer too .  It may take some time to  familiarize these projects

Sure, I can handle it. I will add metrics sorted and metrics sampled-record commands to split the queries.

@pg-yang @yswdqz https://github.com/apache/skywalking-cli/pull/163 This has been done. You could update the commit ID of the swctl.

Ask for  help  . my  e2e test  case  failure  .
error  message
 WARNING  failed to verify case[swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics sampled-record  --name=top_n_cache_read_command    --service-id=R3VhdmFDYWNoZS1sb2NhbA==.0 |  yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
          ], retried 30 time(s):
 DETAILS  failed to verify the output: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics sampled-record  --name=top_n_cache_read_command    --service-id=R3VhdmFDYWNoZS1sb2NhbA==.0 |  yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
          , error:
          failed to execute template: template: test:21:23: executing "test" at <.value>: wrong type for value; expected string; got interface {}

 SUMMARY  10 passed
          1 failed
          8 skipped

actual  data
- key: 0
  value:
    - key: name
      value: getIfPresent user_1
    - key: id
      value: ""
    - key: value
      value: "5"
    - key: refid
      value: null
- key: 1
  value:
    - key: name
      value: getIfPresent user_1
    - key: id
      value: ""
    - key: value
      value: "1"
    - key: refid
      value: null
- key: 2
  value:
    - key: name
      value: getIfPresent user_1
    - key: id
      value: ""
    - key: value
      value: "1"
    - key: refid
      value: null
- key: 3
  value:
    - key: name
      value: getIfPresent user_1
    - key: id
      value: ""
    - key: value
      value: "1"
    - key: refid
      value: null
- key: 4
  value:
    - key: name
      value: getIfPresent user_1
    - key: id
      value: ""
    - key: value
      value: "0"
    - key: refid
      value: null

expect data :
{{- contains . }}
- key: 0
  value:
  {{- contains .value }}
  - key: name
    value: {{ notEmpty .value}}
  - key: id
    value:
  - key: value
    value: {{ notEmpty .value}}
  - key: refid
    value: null
  {{- end }}
- key: 1
  value:
  {{- contains .value }}
  - key: name
    value: {{ notEmpty .value}}
  - key: id
    value:
  - key: value
    value: {{ notEmpty .value}}
  - key: refid
    value: null
  {{- end }}
- key: 2
  value:
  {{- contains .value }}
  - key: name
    value: {{ notEmpty .value}}
  - key: id
    value:
  - key: value
    value: {{ notEmpty .value}}
  - key: refid
    value: null
  {{- end }}
- key: 3
  value:
  {{- contains .value }}
  - key: name
    value: {{ notEmpty .value}}
  - key: id
    value:
  - key: value
    value: {{ notEmpty .value}}
  - key: refid
    value: null
  {{- end }}
- key: 4
  value:
  {{- contains .value }}
  - key: name
    value: {{ notEmpty .value}}
  - key: id
    value:
  - key: value
    value: {{ notEmpty .value}}
  - key: refid
    value: null
  {{- end }}
{{- end }}

e2e golang stack

this command is used for querying  actual data
 swctl --display yaml --base-url=http://<IP_ADDRESS>:53083/graphql metrics sampled-record --name=top_n_cache_read_command  --service-id=R3VhdmFDYWNoZS1sb2NhbA==.0  | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -

Actually  , I  don't know  the grammar  such as    {{- contains .value }} , {{- contains . }} ,etc .
Could you tell me what's  the  grammar ?

Check this as a good example, https://github.com/apache/skywalking/pull/9575. And e2e tool has a bug fixed.

I pulled e2e , and  rebuild it . It's  right now . Thanks .

The similar error caused by latest e2e.
map[interface{}]interface{}{
 - 					string("codesignature"):         string("test.apache.skywalking.e2e.profile.ProfileController.createAuthor:-1"),
 + 					string("codesignature"):         string("java.lang.Thread.sleep:-2"),
   					string("count"):                 int(1),
 - 					string("duration"):              string("<wanted gt 0, but was <interface {} Value>>"),
 + 					string("duration"):              int(0),
   					string("durationchildexcluded"): int(0),
   					string("id"):                    string("66"),
   					string("parentid"):              string("65"),
   				},

https://github.com/pg-yang/skywalking/actions/runs/3065040570/jobs/4948863749

I think profiling has no relative to your change?

yes , it's not related with my code . but  I update e2e commit id to lasted

It should be passed after rerun.
e2e tool has been upgraded in master branch due to latest merged PR, all passed.

Final work . It feels like a long time

Final work . It feels like a long time

It wouldn't be easy to add a core feature at level one menu.
Thanks for your patience.

Which PR? That error usually means logs are not collected. Maybe some tests are not stable.

https://github.com/apache/skywalking/pull/9632
CI was rerun by you or anyone  else after it failed one time . Right ?

Yes, I did.

There was two PR need to rerun at least , so  it should be common error , maybe because  some tests are not stable .
Anyway , it's uncomfortable experience

I don't know whether there is an error, but considering GHA provides 3u8g resources(max), keeping in stable is very hard.


fix: chrome video don't show  bug

fix: https://github.com/regl-project/regl/issues/469

I can't build gallery on win10. o(╥﹏╥)o


fix: header alg value in examples

It closes #250.
NOTE: This bug only affects examples. There is no effect on other library code.

@lukasjhan  Just a suggestion: instead of using the string, we could instead reference: https://github.com/lukasjhan/sd-jwt-js/blob/fix/example-header-alg/packages/node-crypto/src/crypto.ts#L31 with ES256.alg.
not required, but it looks cleaner
but I will approve this since it is a valid fix.

Oh, that's a great idea. I almost forgot. I'll update the pr 😀. Thank you


Viromedia android app, AR sample not working

Hi,
Your AR sample of your app works on an iPhone 8 but not on an s8. It never starts, just crashes. The other samples (not using vr headset) also seem to require the back button which get hidden on the s8, at least for these samples. Not sure how/possible to navigate back after starting the other samples. So,
What devices should/could one expect for viro to support with regards to AR at least?
Thanks.

Hi @peterel thanks for letting us know about the issues on the samples. We will look into it on our S8. Do you know what model S8 you have? Here is a list of ARCore supported devices from Google -> https://developers.google.com/ar/discover/
Viro supports the same devices ARKit and ARCore support:
ARKit - iOS devices that use A9 chips or higher

iPhone 6s and 6s Plus
iPhone 7 and 7 Plus
-iPhone SE
iPad Pro (9.7, 10.5 or 12.9) – both first-gen and 2nd-gen
iPad (2017)
iPhone 8 and 8 Plus
iPhone X

ARCore -> https://developers.google.com/ar/discover/
(linking to ARCore site as device support continually updates)

Hi,
@dam00n, thanks for a quick response. I have a Galaxy S8, model SM-G950F.
Have you been able to replicate the issue on your s8?
Alright, so your framework/platform would then support all devices that have the Arkit or ARCore. Sounds good :)
Thanks

@dam00n Hi, any news on this? Ive tried reinstalling the app with same results. Thanks

Hi @peterel,
Have you installed the arcore-preview2.apk? https://developers.google.com/ar/develop/java/getting-started#prepare-device
It's required right now because ARCore's still in developer preview.
If that doesn't work for you, can you see if you can capture some error logs through Android logcat? (either through command line or Android Studio).
As for your issue with the back button, it's something we're looking into specifically for Samsung devices as Samsung hides the back button when in "full-screen" (Pixel devices seem to work). For now, you'll have to press on the virtual home button to get out.
Let us know if this works for you!

Hi @dam00n,
Hmm, not sure I follow. Will all users of a Galaxy s8 need to download the arcore-preview.apk to get any app developed on the Viro framework to work?
Also, did you get it to work on your S8?
Thanks.

Yes, it is working on our S8 devices.
Right now ARCore is in developer preview and is not available for public release. When ARCore goes public, the APK will be available in the play store. This is not a limitation of the Viro framework but is the current state of ARCore. See this ARCore github issue for more details -> https://github.com/google-ar/arcore-android-sdk/issues/45

Thanks for your response @dam00n .
Ok, just so Im clear. Anyone that develops any app that uses ARCore would have this issue on a Galaxy S8 model SM-G950F (the one I have)? Or is the case that anyone that develops any app that uses ARCore would have this issue, regardless of phone?

Is the issue you are referring to -> the requirement to download ARCore apk?
For the period when ARCore is in developer preview, anyone that develops an app that uses ARCore on an ARCore supported device (currently S7, S8, Note 8, Pixel, Pixel 2). The reason I asked you about your S8 model is that some S8 models are not supported yet as you can see in the original link I sent regarding supported devices.
When ARCore goes live to the public, we assume that ARCore.apk will be available via the Google play store and that it would only need to be downloaded the first time a user tries to use any ARCore app. But we don't know what the exact plans are. You should ask ARCore distribution/installation questions on the ARCore github issues if you want more information as we only know what is publicly stated in forums like the link we shared.

I have a similar issue using my Samsung S7 Edge. VR sample works fine. But when I select the AR sample, app just crashes

When I tried to create and run my own  sample AR app using react-viro, I only see a Hello World text and the background is black

S7 Edge (SM-G935) does not appear to be supported by ARCore at this time. https://developers.google.com/ar/discover/#supported_devices
Are you able to download ARCore preview app from Google Play?

Hi Danny,
i tried. Galaxy S7 Edge cant download the preview ARCore preview app from Google Play. Looks like i have to source for an alternative device. Thanks anyway for ya guidance. React Viro rocks! :)

@myhendry there is a library someone created called ar-core-for-all that allows use of ARCore on unsupported devices. This is a 3rd party tool and is not officially supported. Here is a github link that describes how to integrate it -> https://github.com/viromedia/viro/issues/113

Thanks Danny

I was trying to run Black panther Augmented Image sample App on OnePlus 3t but it will show only the black screen. I didn't any error log. I am trying to run virocore with an android studio.
The same sample app is working OnePlus 6 devices. Can you please help me on this?

Is your OnePlus 3t running Android 8?


Araxxor upgrade

Rush job on the pictures; time taken with the details :)

tiling issue present in the first screen has been improved.


Try adding mask loss later in the training after some epoch, say 50

Our mask loss might be too destructive initially.
It might be a good idea to turn it on later after the attention is more or less trained to attempt to break a little bit the overfitting to particular tokens

@Ghostvv can I pick this up?

@Ghostvv can I pick this up?

@reprabhala thank you for the interest, but this issue requires updates to the tensorflow source code of the DIET classifier. I'd recommend you to pick another issue. We have a board where these issues are collected: https://github.com/orgs/RasaHQ/projects/23

@reprabhala thank you for the interest, but this issue requires updates to the tensorflow source code of the DIET classifier. I'd recommend you to pick another issue. We have a board where these issues are collected: https://github.com/orgs/RasaHQ/projects/23

Thank you @Ghostvv! Will look into it.

Thank you @Ghostvv! Will look into it.


Histogram of prediction score does not correspond to the sliders

Describe the bug
In the web app for a text classification dataset, the histogram of the prediction score filter does not correspond to the sliders.
This is a bit confusing when trying to adjust the sliders.
To Reproduce
Do the first tutorial, try to use the slider to find predictions with low scores.
Expected behavior
The histogram should be aligned with the sliders.
Screenshots

In the screenshot, the x-axis of the histogram starts at 50%, but the sliders start at 0%
Environment (please complete the following information):

OS [e.g. iOS]: Ubuntu
Browser [e.g. chrome, safari]: Firefox
Rubrix Version [e.g. 0.10.0]: master
ElasticSearch Version [e.g. 7.10.2]: 7.10.2
Docker Image (optional) [e.g. rubrix:v0.10.0]:

@frascuchon @leiyre


[release-1.20] Fix VS merge

This is an automated cherry-pick of #49554

@istio-testing: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ambient_istio_release-1.20
a8a0c98ccfaa983178b2aa3205471366ce2ae58d
link
true
/test integ-ambient

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


add --allow-external and process requirements.local last

without --allow-external, --process-dependency-links wouldn't find github-hosted packages
if requirements.local is processed first there can be conflicts in overriding or providing a dependency in requirements.extra  *)
deduplicate the code around installing requirements.local or requirements.local.$APP

*) Rationale: e.g. a package in requirements.local requests "abc>=1.0.3" and fetches abc==2.0, however requirements.extra specifies abc==1.2, at the time requirements.extra is processed it would ignore abc==1.2. a similar case ensues when requirements.local requests a package that itself does not know to fetch in the particular version it requests, e.g. because the dependency link is wrong, where however a requirements.extra installation is provided

@gaumire please review - any red flags with these changes? thx.

looks good, hoping you've tested it.

@miraculixx would like to request to also remove these lines in this PR. Duplication.


SchlenkR.FsHttp => FsHttp, error after migrating (FS0708)

I wanted to migrate from SchlenkR.FsHttp to FsHttp and after restoring I get this error message at every operation, see:

Is it possible to post the code here? This usually happens when custom operation names changed. There were a lot of breaking changes. All Config operations are now prefixed with „config_“ for example.

This is here: https://github.com/CaptnCodr/pushbullet-cli/blob/master/HttpService.fs#L72

Should be:
http {
    DELETE $"..."
    header "Access-Token" "..."
}

There are conventions for naming custom operations for the builder methods here:
https://github.com/fsprojects/FsHttp/issues/48

Thank you, that helped. 🙂

If there should come up more issued / ideas or any kind of feedback, feel free to post it.

For sure, Ronald. :)


ReactImageView: Image source "null" doesn't exist

This package seems to be producing this error/warning, but I am not sure why or how to fix it.
ReactImageView: Image source "null" doesn't exist

Facing the same problem

The problem is related to default flag rendering. A workaround is to define renderFlag function and render the flag using getFlag by PhoneInput ref

@minisk93 can you give a code example of how and where you do this?

Ok I see what is happening here,
I am using react-hook-form and its not providing this input values on first render (or fast enough to load the flag as you pointed out)
So I set the initialValue by passing in a value directly (and then let react-hook-form do its initial thing)
and then setting the initialCountry based on the initialValue. If there is no Initialvalue then it loads the us flag.
I ended up with this
						<PhoneInput
							ref={phoneInputRef}
							initialCountry={phoneInputRef.current?.getISOCode() ?? "us"}
							initialValue={initialValue}
							onChangePhoneNumber={onChange}
							textStyle={styles.input}
							onSelectCountry={() =>
								onChange(phoneInputRef.current?.getCountryCode())
							}
							textProps={{
								...textInputProps,
								value,
								onBlur,
							}}
						/>

On my side, the problem was with flag rendering for invalid phone number. If phone number is invalid or input is just empty, the source image for the flag can not be found, this causing this warning. So handling imageSource undefined scenario fixes it. E.g. like this
<PhoneInput
        ref={phoneRef}
        initialCountry={country}
        allowZeroAfterCountryCode={true}
        autoFormat={true}
        renderFlag={({ imageSource }) => {
          return (
            <>{imageSource && <Image source={imageSource} style={{ width: 30, height: 22 }} />}</>
          );
        }}
        style={globalStyles.formElement}
        textStyle={{ color: colors.darkWhite, fontSize: sizes.fontMedium }}
        onPressFlag={onFlagPress}
      />


feat: Add freshrss service template

Add freshrss to service templates

Thank you for the PR 💜. I will test it and fix it if necessary.


Functional tests for sidecar hook with ConfigMap

What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Checklist
This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.

[ ] Design: A design document was considered and is present (link) or not required
[ ] PR: The PR description is expressive enough and will help future contributors
[ ] Code: Write code that humans can understand and Keep it simple
[ ] Refactor: You have left the code cleaner than you found it (Boy Scout Rule)
[ ] Upgrade: Impact of this change on upgrade flows was considered and addressed if required
[ ] Testing: New code requires new unit tests. New features and bug fixes require at least on e2e test
[ ] Documentation: A user-guide update was considered and is present (link) or not required. You want a user-guide update if it's a user facing feature / API change.
[ ] Community: Announcement to kubevirt-dev was considered

Release note:

Functional tests for sidecar hook with ConfigMap

I've asked some questions I couldn't find answers to in kubevirt-dev.
/cc @victortoso
/cc @alicefr

Can someone please do an ok-to-test on this PR? :)

/test pull-kubevirt-e2e-k8s-1.27-sig-compute

/retest-required

@vasiliy-ul @victortoso CI gods have given their blessings. :)
Please help with approve/lgtm when you have a moment.

FYI I tested both ways, the bash flavor works well but not the Python sample
{"component":"shim-sidecar","level":"info","msg":"Executing onDefineDomain","pos":"sidecar_shim.go:215","timestamp":"2024-01-11T23:18:39.991930Z"}
{"component":"shim-sidecar","level":"error","msg":"Failed OnDefineDomain","pos":"sidecar_shim.go:142","reason":"exit status 127","timestamp":"2024-01-11T23:18:39.993434Z"}


ei-1236: Deprecating Visibility

deprecating Visibility field in requests/responses;
documenting temporary backwards compatibility feature alignment with metadata network allowlist.

Apologies - closed inadvertently


Handle TES3MP -> Dreamweave rename

DreamWeave-MP/Dreamweave/pull/39
This PR is blocked until a handler is setup to added for replacing tes3mp. with dreamweave.. Without it CoreScripts is unusable.

Let's wrap dw-#39 and we can close #28 along with it.


Preserve original list-position, when local/unavailable songs are skipped

Requested Feature
When downloading with {list-position} included in the --output option.
When a local song is ignored, the following songs in the playlist will be saved under a different track number than that of the original playlist (shifted down to fill gaps). I think that an option to preserve the original number would be beneficial, especially if a user wants to manually include the local tracks, so they won't have to rename the files to fix the numbers.
Playlist order as shown on Spotify:

foo
bar (local/unavailable)
baz

Tracks downloaded:

foo
baz (should be 3)

This is a very minor issue, so I do not mind if this is considered out of scope or not worthwhile :-)
See #2105
Possible implementation

Set the list_position field in song in types/playlist.py:111
Don't override it in utils/spotify.py:303

-- or --

Append None (or some sentinal value) to songs after showing the local song warning, in types/playlist.py:101.
Check for None whenever the songs list is looped over, such as utils/search.py:300

Thanks for PR <3


Duplicate property DESCRIPTION

Version 2.2.26 has a bug that duplicates some fields.
For example:
BEGIN:CALENDAR NAME
VERSION:2.0
BEGIN:NAME
CREATED:20170110T031603Z
DESCRIPTION:desc
DESCRIPTION:desc
DTEND:20171222T135019
DTSTAMP:20170110T031603Z
DTSTART:20170510T121531
LOCATION:location,
LOCATION:location
SEQUENCE:0
SUMMARY:summ
SUMMARY:summ
TRANSP:Transparent
UID:c7b91f5d-cbaf-4d8b-9f49-fcf25e85e4ce
UID:c7b91f5d-cbaf-4d8b-9f49-fcf25e85e4ce
END:NAME
END:CALENDAR NAME
I downgraded to 2.2.25 to solve the issue.
For your information this is how I'm using the API (pretty much as you have it):
var item = new Event
{
DtStart = new CalDateTime(new DateTime.Now()),
DtEnd = new CalDateTime(new DateTime.Now()),
Summary = "summ",
Created = new CalDateTime(DateTime.UtcNow),
Transparency = TransparencyType.Transparent,
Description = "desc",
Name = "name",
Location = "location"
Uid = Guid.NewGuid().ToString(),
IsAllDay = false
};
        var calendar = new Calendar ();
        calendar.Events.Add(item);
        calendar.Name = "calendar name";

        var serializer = new CalendarSerializer(new SerializationContext());
        var serializedCalendar = serializer.SerializeToString(calendar);

Thanks for the reminder -- I knew this bug existed, and was working on it, but forgot to unpublish the nuget package.
It's fallout from deep copy work that I'm doing, so I'm going to close this ticket, #214 and #149 are the canonical tickets for this.


Exposing the partition key range id cache?

Is your feature request related to a problem? Please describe.
We are currently unable to run cross partition stored procedures. This can be fixed by simply providing the PartitionKeyRangeId in our RequestOptions object. The DocumentClient has logic to cache the PartitionKeyRangeIds for a collection. These same methods are used by the Bulk Executor to run cross partition stored procedures.
Describe the solution you'd like
Maybe expose the partition key range id cache? If you don't wanna do that then why don't you simply implement it under the hood so we can run cross partition SPs? You already did it in the bulk executor.
Describe alternatives you've considered
Currently the only way to access the cache and the same thing is through reflection which is nasty.

Hi @Elfocrash , thank you for submitting this. Currently only system stored procedures are allowed to span across multiple partition keys. So even if we exposed pkrange_id, it would not help your scenario. We're considering opening it up, the  challenge being pkrange_id is an internal ephemeral construct and as we scale things out, what falls into a particular range changes constantly. Let's follow up on email on your exact scenario.


Configure securityhub (11),serverlessrepo (1),servicecatalog (13),servicediscovery (2)

External name configuration of 11 resources in the securityhub group:

aws_securityhub_account
aws_securityhub_action_target
aws_securityhub_finding_aggregator
aws_securityhub_insight
aws_securityhub_invite_accepter
aws_securityhub_member
aws_securityhub_organization_admin_account
aws_securityhub_organization_configuration
aws_securityhub_product_subscription
aws_securityhub_standards_control
aws_securityhub_standards_subscription

External name configuration of 1 resources in the serverlessrepo group:

aws_serverlessapplicationrepository_cloudformation_stack

External name configuration of 13 resources in the servicecatalog group:

aws_servicecatalog_budget_resource_association
aws_servicecatalog_constraint
aws_servicecatalog_organizations_access
aws_servicecatalog_portfolio
aws_servicecatalog_portfolio_share
aws_servicecatalog_principal_portfolio_association
aws_servicecatalog_product
aws_servicecatalog_product_portfolio_association
aws_servicecatalog_provisioned_product
aws_servicecatalog_provisioning_artifact
aws_servicecatalog_service_action
aws_servicecatalog_tag_option
aws_servicecatalog_tag_option_resource_association

External name configuration of 2 resources in the servicediscovery group:

aws_service_discovery_http_namespace
aws_service_discovery_instance

Because https://github.com/upbound/official-providers/issues/381 has been closed as completed, removing secretsmanager resources from this issue.

This issue has been split into the following issues after untested configurations have been implemented in the provider:

https://github.com/upbound/provider-aws/issues/188
https://github.com/upbound/provider-aws/issues/189
https://github.com/upbound/provider-aws/issues/190
https://github.com/upbound/provider-aws/issues/191


Add python-3.9 to CI

Codecov Report

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

@@           Coverage Diff           @@
##           master      #13   +/-   ##
=======================================
  Coverage   96.44%   96.44%
=======================================
  Files          11       11
  Lines         197      197
=======================================
  Hits          190      190
  Misses          7        7

Flag
Coverage Δ

unittests
96.44% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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


Add '--last -1' to list all results from CLI

Following the https://github.com/StackStorm/st2/issues/3708#issuecomment-328666287 consensus, there should be a way to to get all the results for any command in CLI via --last -1

For reference, Mistral uses similar --limit -1
optional arguments:
  -h, --help            show this help message and exit
  --filter FILTERS      Filters. Can be repeated.
  --limit [LIMIT]       Maximum number of tasks to return in a single result.
                        limit is set to 100 by default. Use --limit -1 to
                        fetch the full result set.

Another example, docker ps CLI by default returns all possible results (via --last -1):

Name
default
Description

--last, -n
-1
Show n last created containers (includes all states)

https://docs.docker.com/engine/reference/commandline/ps/#usage

+1


x/tools/refactor/rename: scans entire workspace when renaming internal symbol

When renaming a symbol in an internal package, gorename finds and reports buggy packages outside the internal tree:
$ gorename -dryrun -from '"cmd/compile/internal/gc".Node' -to Qux
While scanning Go workspace:
Package "code.google.com/p/draw2d/draw2d/curve": found packages draw2d (arc.go) and curve (cubic_float64.go) in /gopath/src/code.google.com/p/draw2d/draw2d/curve.
Package "github.com/banthar/gl/examples/glfw": found packages glfw (glfw.go) and main (main.go) in /gopath/src/github.com/banthar/gl/examples/glfw.

Scanning the entire workspace seems unnecessary in this case, since symbols in internal packages cannot be imported outside the internal tree.
go version:
go version devel +e92d0d8 Tue Sep 1 16:28:49 2015 +0000 linux/amd64

Because of Go's embedding mechanism, renaming symbols within internal packages can have effects that are visible to packages outside the "internal" subtree.  So, this counterintuitive scan is required.
The oracle does need to be made more robust when scanning the entire workspace, though.


Dockerfile has an error now

In installing with Docker using ubuntu, when I type "docker build --tag=mediapipe .", it occurs error like "unable to locate python-pip".
This error occurs because there is new ubuntu 20.04.
so "FROM ubuntu:latest" it makes refer to the 20.04 which does not support python-pip(probably)
Thus after I modified the first line of Dockerfile "From ubuntu:latest" to "From ubuntu:18.04", it works.

fixed in this PR
https://github.com/google/mediapipe/pull/678

I am trying to use docker image on Ubuntu 20.04. I get the same error as above. Should I change "FROM ubuntu:latest" line in docker file?

I replaced the Dockerfile file with below code file and renamed it to "Dockerfile"...
Dockerfile_changed.txt

This problem still exists when run "FROM unbuntu:latest".

Ubuntu 20.04 do not have python2, so things like from future and pip will fail. Creating a symbolic link to pip from pip3 and installing future from pip3 still seems to solve the issue for a while.


RunnerInput: Got 400 from Argo, a value was not supplied in the parameter

Hello,
Thank you for this framework. I am facing an issue using "RunnerInput" with typical inputs i would like to structure.
Issue
The code is as below:
class DefaultParamsModel(BaseModel):
   name: str = "default value"
   my_var: str = "another default str"

class MyDefaultInput (RunnerInput):
    my_env: Annotated[DefaultParamsModel, Parameter(name="scope")] = DefaultParamsModel(
        name="test",
        my_var="bla",
    )
    stdout: Annotated[Path, Parameter(global_name="stdout", name="stdout", output=True)]
    stderr: Annotated[Path, Parameter(global_name="stderr", name="stderr", output=True)]

[...]

@script(constructor="runner")
def ctn_test(my_input: MyDefaultInput) -> MyDefaultOutput:
   [my_code...]
   return MyDefaultOutput(exit_code=exit_code, result="???", stdout=my_stdout, stderr=my_stderr,...)

I would like to use the statement below mentioned in the documentation:

Input-Output function parameters
Hera also allows output Parameter/Artifacts as part of the function signature when specified as a Path type, allowing users to write to the path as an output, without needing an explicit return. They require an additional field output=True to distinguish them from the input parameters and must have an underlying Path type (or another type that will write to disk).

I want to use annotation feature so I don't have to duplicate the declaration. In my context, the goal is to use a variable referenced in "inputs" (as parameter, so without having to create a "temporary" file), fill the content during execution, record it as artefact, and after the exit to be available to others tasks (as well as others output).

How to use it with the RunnerInput class ?
If i use an artifact declaration in the function signature, will it be recorded automatically in my registered hera s3 despite the fact that here I declare it as "Parameter" (throught the "stdout" variable, and it is not "written" by myself on the fs) ?
Is it possible to inherit from an existing RunnerInput class to add extra field in a new class ? so I don't have to rewrite all the arguments, trying to do something like that (based on the sample above):

MySecondDefaultInput(MyDefaultInput):
    new_var: Annotated[Path, Parameter(name="...", output=True)]

It's still unclear for me the purpose of "result" with "RunnerOutput". In which use-case I would use it ?

Additional information
I am using latest version, I have embedeed the python lib to be run on the image. All works fine for this side. However for the declaration, I am not sure what i am doing wrong here.
Notes :

Expiremental Pydantic is enabled
Experimental Annotations is enabled
Latest version (5.14.0) is used

Thank you for any helps/pointers.

Hi @sam2x - thank you for the feedback on this new feature! I will answer your questions numbered 1-4:

Currently, the use of output=True is not explicitly supported by the RunnerInput class (and I haven't tested it). You would need to workaround Pydantic's validation by setting a default value. I think it might work this way, but no guarantees!

class MyDefaultInput (RunnerInput):
    stdout: Annotated[Path, Parameter(global_name="stdout", name="stdout", output=True)] = Path("/tmp/stdout.txt")

I think the answer is "no" but I'm not exactly clear on what you're asking - "If i use an artifact declaration in the function signature" vs "here I declare it as "Parameter" - you can only declare it as one or the other? Hera does different things for you automatically based on the type of function parameter, so you would have to use S3Artifact to "be recorded automatically".
Yes that should work - I can add a test to confirm it
The result is meant to emulate the script result (see docs) - to allow steps/dags to use the syntax of {{steps.my-step.outputs.result}}

Hello @elliotgunton, thank you for the quick reply. I start to get more visibility on this.

This was also my outcome, the use of it doesnt seems yet supported under RunnerInput specific context usage.
Just mixed my explanation. I thought this specific "output=True" would generate an "artifact" under the hood (since it provide a Path i would "write_text" to) without having to explicitely add it in the "outputs" arguments.
Awesome
Oh, make sense now, thanks!

Following my exploration, It seems that the RunnerInput documentation sample is not working out-the-box. I used the documentation example:
class MyInput(RunnerInput):
    param_int: Annotated[int, Parameter(name="param-input")] = 42
    an_object: Annotated[MyObject, Parameter(name="obj-input")] = MyObject(
        a_dict={"my-key": "a-value"}, a_str="hello world!"
    )
    artifact_int: Annotated[int, Artifact(name="artifact-input", path="/tmp/test.txt", loader=ArtifactLoader.json)]

class MyOutput(RunnerOutput):
    param_int: Annotated[int, Parameter(name="param-output")]
    artifact_int: Annotated[int, Artifact(name="artifact-output")]

@script(constructor="runner")
def pydantic_io(
    my_input: MyInput,
) -> MyOutput:
    return MyOutput(exit_code=1, result="Test!", param_int=42, artifact_int=my_input.param_int)

And in my workflow I tried several way to submit the pydantic_io :

Hello @elliotgunton, thank you for the quick reply. I start to get more visibility on this.

This was also my outcome, the use of it doesnt seems yet supported under RunnerInput specific context usage.
Just mixed my explanation. I thought this specific "output=True" would generate an "artifact" under the hood (since it provide a Path i would "write_text" to) without having to explicitely add it in the "outputs" arguments.
Awesome
Oh, make sense now, thanks!

Following my exploration, It seems that the RunnerInput documentation sample is not working out-the-box. I used the documentation example:
class MyInput(RunnerInput):
    param_int: Annotated[int, Parameter(name="param-input")] = 42
    an_object: Annotated[MyObject, Parameter(name="obj-input")] = MyObject(
        a_dict={"my-key": "a-value"}, a_str="hello world!"
    )
    artifact_int: Annotated[int, Artifact(name="artifact-input", path="/tmp/test.txt", loader=ArtifactLoader.json)]

class MyOutput(RunnerOutput):
    param_int: Annotated[int, Parameter(name="param-output")]
    artifact_int: Annotated[int, Artifact(name="artifact-output")]

@script(constructor="runner")
def pydantic_io(
    my_input: MyInput,
) -> MyOutput:
    return MyOutput(exit_code=1, result="Test!", param_int=42, artifact_int=my_input.param_int)

And in my workflow I tried several way to submit the pydantic_io :
  t_pydantic = pydantic_io()

Code
Result
Observation

pydantic_io()
inputs.artifacts.artifact-input was not supplied`
Legit, since there isn't default value and we haven't a value for artifact_int

pydantic_io(arguments=MyInput())
ValidationError: 1 validation error for MyInput artifact_int field required (type=value_error.missing)
Legit validation error on missing 'artifact_int', which make sense so far for me

pydantic_io(arguments=MyInput(artifact_int=0))
Parameter._check_name (parameter.py:29) ValueError: name cannot be None or empty when used
Exepcted, the way I pass value is wrong

pydantic_io(arguments={'my_input':MyInput(artifact_int=0)})
BadRequest: Server returned status code 400 with message: templates.main.tasks.pydantic-io templates.pydantic-io inputs.artifacts.artifact-input was not supplied
I was hoping this one to work

Do you have by any chance:

A way to make this work ?
An example how i would be able to "overwrite" a default parameter ?

Thank you


SFTP.DownloadFiles - Memory leak fix

#215
[2.14.0] - 2024-09-30
Fixed

Fixed small memory leak with CancellationTokenSource by adding dispose to the end of the Task.

Summary by CodeRabbit

New Features

Introduced new parameters for file operations, including options to include subdirectories and set operation timeouts.
Added async methods with cancellation tokens for improved file operation handling.

Bug Fixes

Resolved memory leak issues related to cancellation token handling.
Improved compatibility with certain SFTP servers by refining file identification logic.

Enhancements

Enhanced error handling and logging mechanisms.
Updated the Renci.SshNet library to improve functionality and performance.

Version Updates

Updated project version to 2.14.0 and SSH.NET package to version 2024.1.0.

Please resolve code suggestion of adding null check in "finally" block.


When/How does this package get new releases?

First of all, thank you for creating this wrapper package. I really like the simplicity of minifb.
On the minifb repository, I see commits in the source code that are more recent than the last release of MiniFB.jl.
I am not familiar with how MiniFB.jl was created from minifb, so this is a beginner level question. I am curious to know when and how would MiniFB.jl incorporate changes from the original minifb library? I saw that there is MiniFB_jll, but even over there, the last commit seems to be long back.
Thanks.

Well, the first step is to update the jll in Yggdrasil, and then test this package with the new jll for API breakages.

Ok. I have a few more follow up questions on that:

I don't see any version releases on minifb repository. Do we just take the current master branch?
What would be a good time to update the jll and MiniFB.jl? I believe there are some bug fixes that have occurred since the last time this package was update (eg. https://github.com/emoon/minifb/commit/0e493a73b43440fd822e5e7705a868e880c54510). Would it be a good idea to update this package right now?
Since there are no automated tests, would it be okay to just test the examples (with more examples added over time) on the different platforms (Windows, macOS, Linux)? I can help with testing on Linux (I am using Manjaro Linux), if needed.

Yes. If you see the minifb build file (
https://github.com/JuliaPackaging/Yggdrasil/blob/master/M/MiniFB/build_tarballs.jl)
on yggdrasil right now, we just refer to the master when it was
last updated.

Yeah, sure. Why not.

Yeah, that sounds about right.

On Sat, 19 Feb 2022, 06:53 Siddharth Bhatia, @.***>
wrote:

Ok. I have a few more follow up questions on that:

I don't see any version releases on minifb repository
https://github.com/emoon/minifb. Do we just take the current master
branch?
What would be a good time to update the jll and MiniFB.jl? I
believe there are some bug fixes that have occurred since the last time
this package was update (eg. @.***
https://github.com/emoon/minifb/commit/0e493a73b43440fd822e5e7705a868e880c54510).
Would it be a good idea to update this package right now?
Since there are no automated tests, would it be okay to just test
the examples (with more examples added over time) on the different
platforms (Windows, macOS, Linux)? I can help with testing on Linux (I am
using Manjaro Linux), if needed.

—
Reply to this email directly, view it on GitHub
https://github.com/aviks/MiniFB.jl/issues/16#issuecomment-1045903957,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAC4QJTXKFOFYUFUBOCQLBDU3446RANCNFSM5OVNKNEQ
.
You are receiving this because you commented.Message ID: <aviks/MiniFB.
@.***>

Great! Thanks.

Hi @aviks . I am trying to create a tarball for my host platform with the latest minifb commit using the following script:
# Note that this script can accept some limited command-line arguments, run
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder, Pkg

name = "MiniFB"
version = v"0.2.0"

# Collection of sources required to complete build
sources = [
    GitSource("https://github.com/emoon/minifb.git", "5066489cd81b23b0c79952f7d6f464b20c54867c") #master as of 24Feb2022
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir/minifb/
sed -i -e 's/add_library(minifb STATIC/add_library(minifb SHARED/' \
    -e 's/ -Wall/-I$ENV{includedir} -Wall/' \
    CMakeLists.txt
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=${prefix} \
    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
    -DCMAKE_BUILD_TYPE=Release \
    -DMINIFB_BUILD_EXAMPLES=OFF \
    ..
make -j${nproc}
mv libminifb* ${libdir}
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
# platforms = supported_platforms()
platforms = [HostPlatform()]

# The products that we will ensure are always built
products = [
    LibraryProduct("libminifb", :libminifb)
]

# Dependencies that must be installed before this package can be built
dependencies = [
    Dependency(PackageSpec(name="Xorg_libX11_jll", uuid="4f6342f7-b3d2-589e-9d20-edeb45f2b2bc"))
    BuildDependency(PackageSpec(name="Xorg_xorgproto_jll", uuid="c4d99508-4286-5418-9131-c86396af500b"))
]

# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; preferred_gcc_version = v"5.2.0")

But I am getting the following error (my guess is that it is related to some dependency that needs to be added but I don't know how to resolve it):
 (add_binary) build $ julia --project=. create_tarball_for_host_platform.jl
[ Info: Building for x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1
┌ Warning: Unable to run unprivileged containers on this system! This may be because your kernel does not support mounting overlay filesystems within user namespaces. To work around this, we will switch to using privileged containers. This requires the use of sudo. To choose this automatically, set the BINARYBUILDER_RUNNER environment variable to "privileged" before starting Julia.
└ @ BinaryBuilderBase ~/.julia/packages/BinaryBuilderBase/uBipT/src/UserNSRunner.jl:97
[ Info: Running privileged container via `sudo`, may ask for your password:
[sudo] password for user:
Re-run cmake no build system arguments
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Processing MiniFB
-- Done MiniFB
-- Configuring done
-- Generating done
-- Build files have been written to: /workspace/srcdir/minifb/build
/usr/bin/cmake -S/workspace/srcdir/minifb -B/workspace/srcdir/minifb/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /workspace/srcdir/minifb/build/CMakeFiles /workspace/srcdir/minifb/build//CMakeFiles/progress.marks
make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/workspace/srcdir/minifb/build'
make  -f CMakeFiles/minifb.dir/build.make CMakeFiles/minifb.dir/depend
make[2]: Entering directory '/workspace/srcdir/minifb/build'
cd /workspace/srcdir/minifb/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /workspace/srcdir/minifb /workspace/srcdir/minifb /workspace/srcdir/minifb/build /workspace/srcdir/minifb/build /workspace/srcdir/minifb/build/CMakeFiles/minifb.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/workspace/srcdir/minifb/build'
make  -f CMakeFiles/minifb.dir/build.make CMakeFiles/minifb.dir/build
make[2]: Entering directory '/workspace/srcdir/minifb/build'
[ 12%] Building C object CMakeFiles/minifb.dir/src/MiniFB_common.c.o
[ 37%] Building C object CMakeFiles/minifb.dir/src/MiniFB_internal.c.o
[ 37%] Building CXX object CMakeFiles/minifb.dir/src/MiniFB_cpp.cpp.o
/opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-gcc --sysroot=/opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/ -DUSE_OPENGL_API -Dminifb_EXPORTS -I/workspace/srcdir/minifb/include -I/workspace/srcdir/minifb/src -fPIC -O2 -Wall -Wextra -Wno-switch -Wno-unused-function -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-cast-function-type -MD -MT CMakeFiles/minifb.dir/src/MiniFB_common.c.o -MF CMakeFiles/minifb.dir/src/MiniFB_common.c.o.d -o CMakeFiles/minifb.dir/src/MiniFB_common.c.o -c /workspace/srcdir/minifb/src/MiniFB_common.c
[ 50%] Building C object CMakeFiles/minifb.dir/src/MiniFB_timer.c.o
/opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-g++ --sysroot=/opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/ -DUSE_OPENGL_API -Dminifb_EXPORTS -I/workspace/srcdir/minifb/include -I/workspace/srcdir/minifb/src -fPIC -O2 -Wall -Wextra -Wno-switch -Wno-unused-function -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-cast-function-type -std=c++11 -MD -MT CMakeFiles/minifb.dir/src/MiniFB_cpp.cpp.o -MF CMakeFiles/minifb.dir/src/MiniFB_cpp.cpp.o.d -o CMakeFiles/minifb.dir/src/MiniFB_cpp.cpp.o -c /workspace/srcdir/minifb/src/MiniFB_cpp.cpp
/opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-gcc --sysroot=/opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/ -DUSE_OPENGL_API -Dminifb_EXPORTS -I/workspace/srcdir/minifb/include -I/workspace/srcdir/minifb/src -fPIC -O2 -Wall -Wextra -Wno-switch -Wno-unused-function -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-cast-function-type -MD -MT CMakeFiles/minifb.dir/src/MiniFB_internal.c.o -MF CMakeFiles/minifb.dir/src/MiniFB_internal.c.o.d -o CMakeFiles/minifb.dir/src/MiniFB_internal.c.o -c /workspace/srcdir/minifb/src/MiniFB_internal.c
/opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-gcc --sysroot=/opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/ -DUSE_OPENGL_API -Dminifb_EXPORTS -I/workspace/srcdir/minifb/include -I/workspace/srcdir/minifb/src -fPIC -O2 -Wall -Wextra -Wno-switch -Wno-unused-function -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-cast-function-type -MD -MT CMakeFiles/minifb.dir/src/MiniFB_timer.c.o -MF CMakeFiles/minifb.dir/src/MiniFB_timer.c.o.d -o CMakeFiles/minifb.dir/src/MiniFB_timer.c.o -c /workspace/srcdir/minifb/src/MiniFB_timer.c
[ 62%] Building C object CMakeFiles/minifb.dir/src/gl/MiniFB_GL.c.o
/opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-gcc --sysroot=/opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/ -DUSE_OPENGL_API -Dminifb_EXPORTS -I/workspace/srcdir/minifb/include -I/workspace/srcdir/minifb/src -fPIC -O2 -Wall -Wextra -Wno-switch -Wno-unused-function -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-cast-function-type -MD -MT CMakeFiles/minifb.dir/src/gl/MiniFB_GL.c.o -MF CMakeFiles/minifb.dir/src/gl/MiniFB_GL.c.o.d -o CMakeFiles/minifb.dir/src/gl/MiniFB_GL.c.o -c /workspace/srcdir/minifb/src/gl/MiniFB_GL.c
[ 75%] Building C object CMakeFiles/minifb.dir/src/x11/X11MiniFB.c.o
/opt/bin/x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1/x86_64-linux-gnu-gcc --sysroot=/opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/ -DUSE_OPENGL_API -Dminifb_EXPORTS -I/workspace/srcdir/minifb/include -I/workspace/srcdir/minifb/src -fPIC -O2 -Wall -Wextra -Wno-switch -Wno-unused-function -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-cast-function-type -MD -MT CMakeFiles/minifb.dir/src/x11/X11MiniFB.c.o -MF CMakeFiles/minifb.dir/src/x11/X11MiniFB.c.o.d -o CMakeFiles/minifb.dir/src/x11/X11MiniFB.c.o -c /workspace/srcdir/minifb/src/x11/X11MiniFB.c
In file included from /workspace/srcdir/minifb/src/gl/MiniFB_GL.c:9:
/workspace/srcdir/minifb/src/x11/WindowData_X11.h:7:10: fatal error: GL/glx.h: No such file or directory
 #include <GL/glx.h>
          ^~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/minifb.dir/build.make:132: CMakeFiles/minifb.dir/src/gl/MiniFB_GL.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/workspace/srcdir/minifb/src/x11/X11MiniFB.c:11:10: fatal error: xkbcommon/xkbcommon.h: No such file or directory
 #include <xkbcommon/xkbcommon.h>
          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/minifb.dir/build.make:146: CMakeFiles/minifb.dir/src/x11/X11MiniFB.c.o] Error 1
make[2]: Leaving directory '/workspace/srcdir/minifb/build'
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/minifb.dir/all] Error 2
make[1]: Leaving directory '/workspace/srcdir/minifb/build'
make: *** [Makefile:91: all] Error 2
Previous command exited with 2
ERROR: LoadError: Build for MiniFB on x86_64-linux-gnu-libgfortran5-cxx11-libstdcxx29-julia_version+1.7.1 did not complete successfully

Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] autobuild(dir::AbstractString, src_name::AbstractString, src_version::VersionNumber, sources::Vector{<:BinaryBuilderBase.AbstractSource}, script::AbstractString, platforms::Vector, products::Vector{<:Product}, dependencies::Vector{<:BinaryBuilderBase.AbstractDependency}; verbose::Bool, debug::Bool, skip_audit::Bool, ignore_audit_errors::Bool, autofix::Bool, code_dir::Union{Nothing, String}, require_license::Bool, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/Ftk2f/src/AutoBuild.jl:839
 [3] build_tarballs(ARGS::Any, src_name::Any, src_version::Any, sources::Any, script::Any, platforms::Any, products::Any, dependencies::Any; julia_compat::String, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/Ftk2f/src/AutoBuild.jl:321
 [4] top-level scope
   @ ~/projects/SimpleIMGUIExample/build/create_tarball_for_host_platform.jl:47
in expression starting at /home/user/projects/SimpleIMGUIExample/build/create_tarball_for_host_platform.jl:47
 (add_binary) build $

I am using the following configuration:
julia> versioninfo()
Julia Version 1.7.1
Commit ac5cc99908 (2021-12-22 19:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-12.0.1 (ORCJIT, skylake)

(build) pkg> st
      Status `~/projects/SimpleIMGUIExample/build/Project.toml`
  [12aac903] BinaryBuilder v0.5.2

(build) pkg>

Could you please help me out here?
Also, I was wondering if there are any updates on progress towards a newer minor release of MiniFB.jl.
Thanks.

@Sid-Bhatia-0 see here: https://github.com/JuliaPackaging/Yggdrasil/pull/4533

Hi @aviks.
I see that the jll at https://github.com/JuliaBinaryWrappers/MiniFB_jll.jl has been updated. Can we now tag a new release for this package?
Thanks.

Actually, we do not have a compat bound for the jll in the project.toml, so if you update, you should get the new jll. We need to test if the examples all work on the new jll.

Ok. I tried a fresh install. It installs the latest jll. And all the 4 examples seem to be running on my machine.
Also, could there be a change in the API that requires modifying the files in MiniFB.jl (either automatically or manually)?
I tried getting the Generated Code section in docs to work but am facing some trouble (unable to add<EMAIL_ADDRESS>and also not sure about the directory structure). Also, I think the newer Clang version has some other format for generation (maybe we should move to the newer one?). I couldn't really grasp that section of the doc, so it would be great if you could clarify that portion a little more.
Thanks.

Sorry, I missed the last comment. I don't think there are any API changes, as far as I know.


Add some example csv files to drag and drop

People might not have a csv dataset on hand to paste into this drag and drop. Maybe we can add a couple of example ones above it that can be drag and dropped like folks often do with Gradio demos?

done! https://github.com/rungalileo/bulk-labeling/commit/105bcc710cb68379904ec8e95022a48b879e7920


⚠ Bofrost.at has degraded performance

In 6cf58c2, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 3059 ms

Resolved: Bofrost.at performance has improved in 7cfdf9b after 15 minutes.


Revert "chore(deps): revert dependabot bumps"

Reverts kubernetes-sigs/karpenter#1286 that reverted the dependabot bumps

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
13 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-0.1%) to 77.836%

Files with Coverage Reduction
New Missed Lines
%

pkg/test/expectations/expectations.go
2
94.68%

pkg/controllers/provisioning/scheduling/nodeclaim.go
2
88.64%

pkg/controllers/node/termination/terminator/eviction.go
2
89.72%

pkg/controllers/provisioning/scheduling/preferences.go
7
86.67%

Totals

Change from base Build<PHONE_NUMBER>:
-0.1%

Covered Lines:
8260

Relevant Lines:
10612

💛  - Coveralls

/lgtm


How to select the database to use

Currently all activity takes place on DB0.  How do I use the other DBs?  I feel like the provider should provide this functionality.

SELECT is a weird use-case if you are using RediSearch (most users use Redis-cloud or the Cluster API which don't support SELECT operations). That said, it's a capability that might be worth adding if there's enough people using the RediSearch module outside of a Redis Cloud instance, or a fair number of people pick up on the hash-based object-mapping stuff.

We just need to expose the database number to pass into the GetDatabase line.

So @VagyokC4 , I was looking a bit more into this today,
Actually, you CAN set a database by properly formatting the Redis URI:
redis://localhost:6379/5 will set the multiplexer's default Database to the number in the path (in this instance 5).
However, RediSearch does not support creating indices off of DB 0, it will actually respond with an error when you try to create an index. So for the purposes of Redis.OM this basically makes using a non-0 database pointless.
I'll point out that Salvatore, the author of Redis, considers multiple databases in Redis his worst design decision, and we do tend to consider using them an anti-pattern

Interesting.  Ok, thank-you for the quality response.  I will take this into consideration going forward.


Trouble to build source to add SCIP solver in Ubuntu 18.04

Hi!
I have a problem when trying to build or-tools in Ubuntu 18.04, specifically when making the "make third_party" I get the following error:
configure: Using libtool script in directory ..
checking if library version is set... 13:9:12
checking for pkg-config... no
checking for COIN-OR package CoinUtils... skipped check via pkg-config, redirect to fallback
checking for COIN-OR package CoinUtils (fallback)... no, dependency coinutils not available
configure: error: Required package CoinUtils not available.
configure: error: /bin/bash './configure' failed for Osi
makefiles/Makefile.third_party.unix.mk:537: recipe for target 'dependencies/install/lib/libOsi.so' failed
make: *** [dependencies/install/lib/libOsi.so] Error 1

Any idea what I'm missing?
Thanks.

Hi,
Please install pkg_config


How do you limit the number of photo selection?

Currently the Instagram photo picker does not provide this capability.
On 05/12/16 13:13, ravirajm wrote:

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/OceanLabs/InstagramPhotoPicker-Android/issues/3,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMWb-spEndgBc7mV7wr8RbOx6E_jeDkNks5rFA3vgaJpZM4LENQM.

@JLKite thanks for the reply

How do you limit the number of photo selection

please help me to set a limit


Bump version on master to 1.2.0.dev0

This also includes a few improvements that were needed for the release of 1.1

Not sure why Travis isn't running on this PR. Close-reopen didn't seem to trigger it either. I'll try to look into this more tomorrow.

This works! Going to merge directly. Everything except switching the Autorelease used by Travis to its official v0.1.2 release tag (instead of the development ops_fixes branch) has been merged into stable.


Allow variables to be defined via command line

Implemented by eee321b.
The syntax is:
asm6502  VAR=123

The numbers are parsed like the number literals in assembler sources. So binary etc. is supported.

I use -Dvarname[=value], with 'value' defaulting to 1.
Hopefully I will be able to put vasm on git sometime this week.
On Monday, April 24, 2023 at 11:15:41 AM EDT, Bernd Böckmann @.***> wrote:
Implemented by eee321b.
The syntax is:
asm6502  VAR=123
The numbers are parsed like the number literals in assembler sources. So binary etc. is supported.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: @.***>


chore(aws-sdk): migrate SEMATTRS_* to ATTR_*

Which problem is this PR solving?

SEMATTRS_* were deprecated in<EMAIL_ADDRESS>https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#migrating-from-semattrs_-semresattrs_-

Short description of the changes

Migrates SEMATTRS_* to ATTR_* wherever a replacement is available. The ones without replacement are deprecated, and can be removed in future PRs.

Closing this as of now. This can be resposted after existing open PRs are merged/closed.


Cannot Execute Padawan Commands in Vim

I use Vundle to install plugins.
I added Plugin 'mkusher/padawan.vim' to my vimrc and installed plugins.
Then i ran ./install.sh which completed without errors (as far as I can tell).
However, vim doesn't find any of the Padawan Commands.
 For Vundle you should do it manually. Plugin requires vim with +python, :echo has("python") shoud print 1

I verified that I have +python support.
I ran this a few time. Are the warnings relevant?
$ ./install.sh
#!/usr/bin/env php
All settings correct for using Composer
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/etc/pki/tls/certs) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/etc/ssl/certs) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/etc/ssl) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/usr/local/share/certs) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/usr/ssl/certs) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/opt/local/share/curl) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/usr/local/share/curl) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/usr/share/ssl/certs) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
PHP Warning:  is_dir(): open_basedir restriction in effect. File(/etc/ssl) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in - on line 834
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. process() -:14
PHP   3. installComposer() -:112
PHP   4. HttpClient::getSystemCaRootBundlePath() -:365
PHP   5. is_dir() -:834
Downloading...

Composer successfully installed to: /home/john/.vim/bundle/padawan.vim/composer.phar
Use it: php composer.phar
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Package guzzle/parser is abandoned, you should avoid using it. Use guzzle/guzzle instead.
Generating autoload files

Yeah, looks like server installed successfully. However install script isn't connected with vim commands. I'm not sure, but the only idea for me is trying restart vim...

Is there a way I can manually register the commands?

@ruskiyos https://github.com/mkusher/padawan.vim/blob/master/autoload/padawan.vim#L161 you can do it same way. Does padawan function accessible with :call padawan#StartServer()?

:call padawan#StartServer() doesn't return any errors, so I assume it's fine.
:call padawan#GenerateIndex() returns --> "Error occured, code: 255"

Can you run padawan cli manually? For generating index do:
$ cd path/to/composer/php/project
$ ~/.vim/bundle/padawan.vim/padawan.php/bin/cli generate

Yes. That worked. It's still running, but it looks like it's building the index file without any issues.

Could it possibly be script permission issues?...

@ruskiyos ok, restart padawan server after generating index. No, it doesn't looks like permission issue.

Okay... I don't think it's working...
I wonder if there is just something messed up with my setup...
The index was generated successfully.
I have YouCompleteMe as my autocompletion engine. I added the semantic triggers in the ReadMe, but I don't see any differences when the auto-completion popup shows up...

Can you post your vimrc?

set nocompatible              " be iMproved, required
filetype off                  " required

syntax on

colorscheme torte

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'

" Autocompletion plugin
Plugin 'Valloric/YouCompleteMe'

" emmet autocomplete
Plugin 'mattn/emmet-vim'

" vdebug
Bundle 'joonty/vdebug.git'
let g:vdebug_options = {
\   "break_on_open" : 0,
\}

" php laravel autocompletion
"Plugin 'shawncplus/phpcomplete.vim'
"Bundle 'Shougo/vimproc'
"Bundle 'Shougo/unite.vim'
"Bundle 'm2mdas/phpcomplete-extended'
"Bundle 'm2mdas/phpcomplete-extended-laravel'

" attempt 2
Plugin 'mkusher/padawan.vim'

let g:ycm_semantic_triggers = {}
let g:ycm_semantic_triggers.php =
                        \ ['->', '::', '(', 'use ', 'namespace ', '\']

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

Another question. How exactly is the the plugin supposed to work?
The youtube video show that it finds classes along with namespaces and injects it into the "autocompletion" engine..
I'm wondering if the issues are just my "user error". In summary, does your plugin just crawl the generated "autoload" file and build a definition of class names to paths?

@ruskiyos hi, sorry for the late reply. I tried running vim with your config and everything worked perfectly. I had all padawan's commands and autocompletion with ycm working.

@ruskiyos can you move you .vim folder somewhere(e.g. .vim-backup), create new one with such minimal configuration, then install Vundle and try one more time?
set nocompatible              " be iMproved, required
filetype off                  " required
syntax on
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
Plugin 'mkusher/padawan.vim'
call vundle#end()            " required
filetype plugin indent on    " required

@mkusher sorry about my delay as well. ran out of time this week :(
I renamed vim directory, and installed, and ran Vundle with your vim file. No results, so I manually generated the index using the cli command posted above. Still nothing, so I installed YCM with vundle.
I'm running an Arch build
 Linux archhost 4.1.6-1-ARCH x86_64 GNU/Linux

Python:
Python 2.7.10
Python 3.4.3

Running vim -V
Executing BufEnter Auto commands for "*"
autocommand sil call s:LocalBrowse(expand("<amatch>"))
Executing VimEnter Auto commands for "*"
Press ENTER or type command to continue
autocommand call youcompleteme#Enable()
Press ENTER or type command to continue
Searching for "autoload/youcompleteme.vim" in "/home/john/.vim,/home/john/.vim/bundle/Vundle.vim,/home/john/.vim/bundle/YouCompleteMe,/home/john/.vim
/bundle/padawan.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after,/home/john/.vim/after,/home/john/.vim/bundle/Vundle.vi
m,/home/john/.vim/bundle/Vundle.vim/after,/home/john/.vim/bundle/YouCompleteMe/after,/home/john/.vim/bundle/padawan.vim/after"
Press ENTER or type command to continue
Searching for "/home/john/.vim/autoload/youcompleteme.vim"
Press ENTER or type command to continue
Searching for "/home/john/.vim/bundle/Vundle.vim/autoload/youcompleteme.vim"
Press ENTER or type command to continue
Searching for "/home/john/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim"
Press ENTER or type command to continue
chdir(/home/john/.vim/bundle/YouCompleteMe/autoload)
Press ENTER or type command to continue
fchdir() to previous dir
Press ENTER or type command to continue
line 0: sourcing "/home/john/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim"
Press ENTER or type command to continue
finished sourcing /home/john/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim
Press ENTER or type command to continue
continuing in VimEnter Auto commands for "*"
Press ENTER or type command to continue
Executing VimEnter Auto commands for "*"
Press ENTER or type command to continue
autocommand sil call s:VimEnter(expand("<amatch>"))
Press ENTER or type command to continue
Executing CursorMoved Auto commands for "*"
Press ENTER or type command to continue
autocommand call s:Highlight_Matching_Pair()
Press ENTER or type command to continue
Executing CursorMoved Auto commands for "*"
Press ENTER or type command to continue
autocommand call s:OnCursorMovedNormalMode()
Press ENTER or type command to continue

This still happens if I run :call padawan#GenerateIndex() returns --> "Error occured, code: 255"

@ruskiyos I found it! Just open any php file in your project :)

Awesome! Thanks for all your help.
Just as a side note, I installed most recent version of padawan, and would've preferred that the installation didn't require a global composer path, but other than that, plugin now installs without issues and runs great.


scripts are not installed to virtualenv bin folder in poetry 0.12.13

[x ] I am on the latest Poetry version.
[ x] I have searched the issues of this repo and believe that this is not a duplicate.
[ ] If an exception occurs when executing a command, I executed it again in debug mode (-vvv option).

OS version and name: OSX 10.14.4
Poetry version: 0.12.13
Link of a Gist with the contents of your pyproject.toml file: https://gist.github.com/jannisuhlendorf/265972042189332d6fd19938c28feebe

Issue

In poetry version 0.12.13, scripts are not being installed to the virtualenv bin directory:
virtualenv -p python3 venv
source venv/bin/activate.fish
pip install --upgrade pip==19.0.3
pip install poetry==0.12.13
poetry install
ls venv/bin/entrypoint
ls: venv/bin/entrypoint: No such file or directory

doing the same with poetry 0.12.12 works fine:
pip install poetry==0.12.12
poetry install
ls venv/bin/entrypoint
venv/bin/entrypoint

fixed in 0.12.14


Error taxonomy_lookup_embeded.pl

Hello,
I have this error when i run taxonomy_lookup_embeded.pl
DBD::SQLite::db selectrow_arrayref failed: no such table: gi_taxid at ./taxonomy_lookup_embeded.pl
Have you an idea to fix the problem ?
Thanks a lot

This is most probably because NCBI has removed GI numbers from NT database. If you have downloaded NT database after september 2016 you are likely to face this problem.
Please see  https://github.com/chiulab/surpi/issues/26

Hi,
Thanks a lot,
Guillaume
2016-10-25 8:52 GMT+02:00 raeece<EMAIL_ADDRESS>
This is most probably because NCBI has removed GI numbers from NT
database. If you have downloaded NT database after september 2016 you are
likely to face this problem.
Please see #26 https://github.com/chiulab/surpi/issues/26
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/chiulab/surpi/issues/27#issuecomment-255952081, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AVxAYJ6OB55S6q-7VvAh_e3Jm7n3qRYTks5q3adKgaJpZM4KWOCr
.

Hi,
Have you any solution ?
NCBI don't provide previous database. Can you provide me an old release via
ftp ?
Thanks a lot.
Guillaume G.
2016-10-25 19:03 GMT+02:00 Gui GuiGui<EMAIL_ADDRESS>
Hi,
Thanks a lot,
Guillaume
2016-10-25 8:52 GMT+02:00 raeece<EMAIL_ADDRESS>
This is most probably because NCBI has removed GI numbers from NT
database. If you have downloaded NT database after september 2016 you are
likely to face this problem.
Please see #26 https://github.com/chiulab/surpi/issues/26
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/chiulab/surpi/issues/27#issuecomment-255952081, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AVxAYJ6OB55S6q-7VvAh_e3Jm7n3qRYTks5q3adKgaJpZM4KWOCr
.

Hi,
I don't have the old release. I am waiting for the SURPI developers to provide a fix at the earliest.

Hi
Did anyone try to solve this issue?
Thanks


Should interfaces work as components?

This coding fails:
> dub sample.d
/+ dub.sdl:
    name "sample"
    dependency "poodinis" version="8.0.3"
+/

import std;
import poodinis;

interface IfFileSystem
{
    string readTextFile(string filePath);
}

class FileSystem : IfFileSystem
{
    string readTextFile(string filePath) {return readText(filePath);}
}

class DefaultApplicationContext : ApplicationContext
{
    @Component
    public IfFileSystem fileSystem()
    {
        return new FileSystem();
    }
}

void main()
{
    auto dc = new shared DependencyContainer();
    dc.registerContext!DefaultApplicationContext;

    auto fs1 = dc.resolve!IfFileSystem;
    auto fs2= dc.resolve!FileSystem;
}

Error

Error: cannot implicitly convert expression typeid(IfFileSystem) of type object.TypeInfo_Interface to object.TypeInfo_Class

If I change the ApplicationContext class to:
class DefaultApplicationContext : ApplicationContext
{
    @Component
    public FileSystem fileSystem()
    {
        return new FileSystem();
    }
}

This will work auto fs2= dc.resolve!FileSystem;.
For auto fs1 = dc.resolve!IfFileSystem; an exception is thrown.
It this the expected behavior here?

At the moment this is expected behavior. Components registered with factory methods should be concrete types. I will see if I can support interfaces as well or otherwise gracefully handle the situation.

It only occurred to me just now that this is already supported:
class DefaultApplicationContext : ApplicationContext {
	@Component
	@RegisterByType!IfFileSystem
	public FileSystem  filesystem() {
		return new SomeClass();
	}
}

You should be able to resolve it by interface type now


Add Scaling Group Min/Max Threshold Autodiscovery In Cloud Scaling Provider

Description
At present, Replicator requires a user to specify the min/max values for a worker pool by setting replicator_max_size and replicator_min_size. Rather than requiring an explicit declaration, the scaling provider should simply detect the values declared on the scaling group.

will it be ok, if while starting replicator it'll take all nomad clients, receive their instance ID from meta, and then with describe instances will build a map of with nomad-client is running in what autoscaling group, after what will build the map of min/max instances per ASG?

@burdandrei While it would be possible, the intention here is to do away with the concept of a separate min/max value in relation to cluster scaling for Replicator. The cloud provider model already implements a mechanism for cloud provider specific safety checks that must pass before a cluster scaling operation is permitted. The plan is to simply have the cloud provider check if a scaling operation would violate the min/max value associated with the underlying scaling group.
I would prefer to keep the primary node discovery mechanism agnostic with respect to the cloud provider by relying only on the Nomad API and client meta configuration. With #204, we will permit you to store all meta configuration for a worker pool in Consul Key/Value which means you would need only a single meta configuration parameter in the client: replicator_worker_pool.
Let me know if I'm missing something or you have a use case we're not considering!


Feature Request: Disable query field per model

This field is used by our internal team to search record by ID ONLY
But it generates slow db queries and affecting performance since the number of columns is large
I want to enforce them to add filter on ID to search by ID
https://github.com/sferik/rails_admin/blob/9abc1be0c1fee006a7a746583461891911fe9330/app/views/rails_admin/main/index.html.haml#L54

Use the Custom Search feature.