[bug] add attachment function not defined

Thank you for the great work on himalaya!
Problem
ga gives error E117: Unknown function: himalaya#domain#email#add_attachment
and I could not find any references in the repo to any function relating to adding an attachment.
Did it get lost somewhen?

The doc seems not up-to-date with the latest version. I also need to adjust the plugin with the v1.0.0 of the CLI (actually being tested on master). Thank you for pointing it out!
Regarding attachments, I would advise you to read the FAQ: How to add attachments to a message?. Attachments are added directly from the message composition.

It's not just the docs, though. You are also creating the ga mapping. It just points to a non existent function.

Regarding attachments, I would advise you to read the FAQ: How to add attachments to a message?. Attachments are added directly from the message composition.

I saw that part. I just thought you meant to provide a mapping to conveniently put that boilerplate text, since it is a common operation.
Could be done by directly writing the boilerplate into the mapping or with a snippet (see https://github.com/rafamadriz/friendly-snippets for cross plugin snippets).
Also the file picking for the attachment could be integrated with telescope for example.
Just some ideas for little niceties.
Any way thank you again for your work!

It's not just the docs, though. You are also creating the ga mapping. It just points to a non existent function.

Yes indeed, the code is also not up-to-date. The whole repo needs to be adjusted.

Regarding attachments, I would advise you to read the FAQ: How to add attachments to a message?. Attachments are added directly from the message composition.

I saw that part. I just thought you meant to provide a mapping to conveniently put that boilerplate text, since it is a common operation.

Attachments used to be attached separately from the message, which is not the case anymore. I thought to re-use the function to interactively put the right code inside the body (like asking the path to the file, the MIME type, the description etc). Could be a great addition.

Could be done by directly writing the boilerplate into the mapping or with a snippet (see https://github.com/rafamadriz/friendly-snippets for cross plugin snippets).

Also, but this should remain user side. I prefer not to deal with them, since there are too many engines out there.

Also the file picking for the attachment could be integrated with telescope for example.

Exactly!

Also, but this should remain user side. I prefer not to deal with them, since there are too many engines out there.

There are many engines, but there are only 2 bigger standards, one of which is at least supported by a snippet engine, either snipmate-like or vscode-like.
Snipmate-like snippets are collected here
https://github.com/honza/vim-snippets
And vscode-like snippets are collected here https://github.com/rafamadriz/friendly-snippets
Making one of each would suffice to be compatible with, I believe all, vim snippet engines. And those standards are stable afaik know, so it's a one time effort.

actually i made it now:
local pick_and_paste_filepath_at = function(root_dir)
  if root_dir == nil then
    root_dir = "~"
  end

  if type(root_dir) ~= "string" then
    vim.notify(
      "pick_and_paste_filepath_at root_dir needs to be string",
      vim.log.levels.ERROR
    )
    return
  end

  root_dir = vim.fs.normalize(root_dir)

  -- disable BufLeave autocmd temporarily
  local au_opts = {
    group = "himalaya_write",
    event = { "BufLeave" },
  }
  local au = vim.api.nvim_get_autocmds(au_opts)
  if au == nil or #au ~= 1 then
    vim.notify(
      "pick_and_paste_filepath_at: expected exactly one autocmd but got: \n"
        .. vim.inspect(au),
      vim.log.levels.ERROR
    )
    return
  end
  au = au[1]
  vim.api.nvim_clear_autocmds(au_opts)

  local actions = require("telescope.actions")
  local action_state = require("telescope.actions.state")

  -- save working directory to restore later
  local prev_wd = vim.fn.getcwd()

  -- cd to root_dir only for window
  vim.cmd(string.format("silent lcd %s", vim.fn.expand(root_dir)))

  local function run_selection(prompt_bufnr, map)
    -- replace default action on <cr> in telescope picker
    actions.select_default:replace(function()
      -- close telescope buffer
      actions.close(prompt_bufnr)
      -- insert selected filepath
      local selection = action_state.get_selected_entry()
      vim.paste({ vim.fs.joinpath(root_dir, selection[1]) }, -1)
      -- restore wd for window
      vim.cmd(
        string.format("silent lcd %s", vim.fn.expand(prev_wd))
      )
      -- restore BufLeave autocmd
      vim.api.nvim_create_autocmd(au.event, {
        group = au.group,
        buffer = au.buffer,
        command = au.command,
        once = au.once,
      })
      -- restore cursor position
      vim.cmd([[normal! 'z]])
    end)
    -- has to return true
    return true
  end

  -- run telescope file picker with our custom function
  local opts = { attach_mappings = run_selection }
  require("telescope.builtin").find_files(opts)
end

-- add attachment at the end of file, pick file with telescope at `root_dir`
local add_attachment = function(root_dir)
  local k = vim.keycode
  return function()
    -- set mark to restore cursor postion later
    vim.cmd([[normal! mz]])
    -- set goto end and add 2 newlines
    vim.cmd([[normal! Go]] .. k("<cr>") .. k("<esc>"))
    -- insert attachment boilerplate
    vim.paste({ "<#part filename=><#/part>" }, -1)
    -- move cursor to =
    vim.cmd([[normal! 0f=]])
    pick_and_paste_filepath_at(root_dir)
  end
end

vim.api.nvim_create_autocmd({ "FileType" }, {
  group = "MyAutoCmd",
  pattern = { "mail" },
  callback = function(ev)
    vim.keymap.set("n", "gtt", add_attachment("~"), {
      desc = "add email attachment",
      buffer = true,
      silent = true,
    })
  end,
  desc = "add email attachment",
})

adapt as you need.
it puts the file attachment at the end of the buffer.
it got the telescope file picker, you can pass the root dir for the file search, I figured ~ would be good.
it restores the cursor position.
it temporarily removes the autocmd on bufleave, when swiching to the telescope buffer.


vm_keepalive not in the supported option list for clouds

vm_keep_alive is missing from the cloudconfig checks so putting it in prevents cloud from loading properly.

or not.


Qingwei/api without react

An initiative as Amin needs it, I am not sure how does the build work

Coverage decreased (-2.9%) to 54.232% when pulling f793dff49682a71a9976009f3379e2e84b705339 on qingweibinary:qingwei/api_without_react into f1c87c950e2c86a7e357db65091b06a8aee3f70d on binary-com:master.


 Precisa ser 6+

Atualize o node

 wanted: {"node":">= 0.12"} (current: {"node":" 0.10.29","npm":"1.4.21"})
Atualiza seu node

Deu certo doutores, valeu!


Can the temporal interval of a "Stasis" be chosen by fiat?

"Stasis" is currently defined as "A Process in which some Independent Continuant endures and one or more of the dependent entities it bears does not change in kind or intensity."
This seems to me to be ambiguous between
(a) a Stasis occuring on some (random) fiat temporal interval during which "some Independent Continuant endures and one or more of the dependent entities it bears does not change in kind or intensity"
and
(b) a Stasis occuring on some longest continous temporal interval during which "some Independent Continuant endures and one or more of the dependent entities it bears does not change in kind or intensity".
Both interpretations seem to be useful.
Figure 11 from the overview paper seems to suggest interpretation (b).
If (b) is supposed to be the intended interpretation, one could (and maybe should) also assert that a "Stasis" is always "process preceded by" some "Gain" and always "process precedes" some "Loss". Although if "Gain" and "Loss" have temporal extension we might not even want to have them in cases where e. g. a continuant bears a role for the entirety of its (the continuant's) existence ("history").
If the intended interpretation is (a), there should be a universal for (b), maybe "Total Stasis" or "Maximal Stasis".

@eliasweatherfield Thanks for the interesting comment. I agree that both interpretations are helpful. I have used Stasis in both ways. In many scenarios, one doesn't know if it is maximal or not, just some associated time frame or duration. When it is known to be the maximal case, then bracketing it with Gain and Loss is potentially a good way to ensure the proper interpretation. But, I am not sure a new term that distinguishes the maximal sense is needed in CCO. If the pattern is in the data the maximal cases can be filtered via query. If it's decided to add the term, seems to be a good candidate for an equivalent class, where membership can be determined by inference:
MaximalStasis equivalentClass Stasis and (precedes some Loss..)  and (preceded-by some Gain..)
However, a user that needs this class immediately can add it themselves to their own extension of CCO. Do you have a particular use-case in mind?

Thanks for the reply. I agree that a new term is not be needed. My worry was about the ambiguity of the definition. Maybe a comment could be added that explains that non-maximal/fiat stases are allowed.

I take it the definition of Stasis was - and though it has been changed, still is - intentionally broad, so subclasses could be carved out of it, such as, say, Stasis restricted to some fiat interval (if needed).
Because this is general modeling guidance that trades on the underlying subclass semantics, rather than add a comment to the Stasis class, this might be better suited for a User Guide?
For SA - The updated definition of Stasis is:
A Process in which one or more Independent Continuants endure in an unchanging condition.
Which exhibits the desirable flexibility mentioned above.

Talking with @jonathanvajda about this, in light of recent discussions about process profile, if we agree with Barry's interpretation of processes that processes are changes, then it makes no sense to say that there is a process which is defined as not changing.
You could talk about a process that stabilizes some independent continuant, like a person agent_in the stabilizing act of balancing, which is about their unchanging (non BFO) 'quality' of being upright but at the same time doing all sorts of things to stay upright, using their muscles, using their coordination cognitive systems, etc. This seems like a bit of a stretch, though it's a clever solution which may have good uses.
A stasis seems to be, Jon and I discussed, an analogous thing to immaterial entities in the continuant tree. As an object is to a site, so a process is to a stasis. What do I mean? I mean that objects serve as the material boundaries of sites, and stases, unchanging temporal intervals, have changing bounds, namely processes which change the thing which was unchanging.
Suppose we had something like a Stasis of Peace in Gotham City, which is a state of affairs determined by certain measurements and datapoints (this may be a bad example). That stasis has its end when other processes disrupt it, like an increase in some rate of crime, the corruption in the DA's office, or other factors. The peace was an unchanging duration of time which was bounded by processes. A new instance of that peace may be brought about by Batman fighting crime and ending those processes which serve as bounds for the stasis of peace--suppose he locks up all the criminals and beats all the super villains.
Again, this only holds if we interpret bfo:processes as changes themselves, which I am in favor of doing, but I'm open to objections and further discussion. This came about while thinking of process profile, which is an unsettled issue anyway.

@cameronmore Your response here perhaps warrants a separate issue; I think this one can be closed.
In any event, you write:

it makes no sense to say that there is a process which is defined as not changing

I think you mean it only makes sense to say there is a process defined as not changing. No process changes, but any change is always via some process. We can still describe difference across processes, e.g.

John walking at 5mph Process having temporal extent t1
John walking at 6mph Process having temporal extent t2
t1 immediately precedes t2
...

and stases, unchanging temporal intervals, have changing bounds,

Stases are not temporal intervals, but they have temporal interval extent.

As an object is to a site, so a process is to a stasis.

I take you to mean that: any site is bounded by or part of some material entity, and similarly any stasis is bounded by or part of some process.
I think talking about changing bounds muddies the waters, but if the preceding is what you have in mind then we don't obviously need to get dirty.

I'll leave it open until we come down on a way to handle stasis going forward, unless someone else wants to close it. I think your description of what I wrote is accurate, maybe this means making stasis a sibling to process, like an antiprocess (again, if we define process as changes). Happy to discuss the details elsewhere going forward.

@cameronmore I am closing this since the initiating issue was addressed.
See https://github.com/CommonCoreOntology/CommonCoreOntologies/discussions/340 to continue discussion.


Error inserting into SQLiteDatabase when rescheduling

Tested on Nougat.
E/SQLiteDatabase: Error inserting persisted=false exact=false networkType=UNMETERED flexSupport=false isTransient=false tag=SomeJob intervalMs=0 numFailures=1 backoffPolicy=EXPONENTIAL flexMs=0 scheduledAt=1476253430087 requiresCharging=true requiresDeviceIdle=false backoffMs=30000 requirementsEnforced=true endMs=10000 _id=5 startMs=1
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: jobs._id (code 1555)
    at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
    at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
    at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
    at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1472)
    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
    at com.evernote.android.job.JobStorage.store(JobStorage.java:192)
    at com.evernote.android.job.JobStorage.put(JobStorage.java:109)
    at com.evernote.android.job.JobManager.schedule(JobManager.java:231)
    at com.evernote.android.job.JobRequest.schedule(JobRequest.java:320)
    at com.evernote.android.job.JobRequest.reschedule(JobRequest.java:351)
    at com.evernote.android.job.JobExecutor$JobCallable.handleResult(JobExecutor.java:166)
    at com.evernote.android.job.JobExecutor$JobCallable.runJob(JobExecutor.java:153)
    at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:135)
    at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:118)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)

I cannot reproduce the issue. Can you provide me any steps? Did you somehow modify the database or pref file used by the library?

The app didn't crash but I see this in the logcat. No modifications. 1 job.
Here's the code: https://github.com/shadowsocks/shadowsocks-android/blob/master/src/main/scala/com/github/shadowsocks/job/AclSyncJob.scala
You might want to tweak it to make it return RESCHEDULE so that you can try it out.

That's a big project with many dependencies. Could you please provide a simpler sample for me? Also I don't have any experience with Scala on Android. Could this break my library?
I don't see a way in the library that the ID isn't unique at this point where the exception occurred? Can you reproduce the crash continuously? I'm wondering if your app crashed before and that the database/pref file got in a bad state because of that.

Okay just tried it again and here's a more complete log: (it finished successfully but I made it to return RESCHEDULE)
10-12 17:23:25.360 6016-7000/com.github.shadowsocks D/PlatformJobService: Run job, request{id=9, tag=AclSyncJob:bypass-lan-china}, waited 00:00:00, start 00:00:00, end 00:00:00 (+28 days)
10-12 17:23:25.369 6016-7000/com.github.shadowsocks I/JobExecutor: Executing request{id=9, tag=AclSyncJob:bypass-lan-china}, context PlatformJobService
10-12 17:23:25.376 6016-7001/com.github.shadowsocks W/System: ClassLoader referenced unknown path: /system/framework/tcmclient.jar
10-12 17:23:26.934 6016-7001/com.github.shadowsocks I/JobExecutor: Finished job{id=9, finished=true, result=RESCHEDULE, canceled=false, periodic=false, class=AclSyncJob, tag=AclSyncJob:bypass-lan-china}
10-12 17:23:26.950 6016-6016/com.github.shadowsocks D/PlatformJobService: Called onStopJob for job{id=9, finished=true, result=RESCHEDULE, canceled=false, periodic=false, class=AclSyncJob, tag=AclSyncJob:bypass-lan-china}
10-12 17:23:26.965 6016-7001/com.github.shadowsocks W/InstanceID/Rpc: Found 10070
10-12 17:23:26.972 6016-7001/com.github.shadowsocks E/SQLiteDatabase: Error inserting persisted=false exact=false networkType=UNMETERED flexSupport=false isTransient=false tag=AclSyncJob:bypass-lan-china intervalMs=0 numFailures=1 backoffPolicy=EXPONENTIAL flexMs=0 scheduledAt=1476264206969 requiresCharging=true requiresDeviceIdle=false backoffMs=30000 requirementsEnforced=true endMs=2419200000 _id=9 startMs=1
                                                                      android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: jobs._id (code 1555)
                                                                          at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
                                                                          at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
                                                                          at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
                                                                          at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
                                                                          at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1472)
                                                                          at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
                                                                          at com.evernote.android.job.JobStorage.store(JobStorage.java:192)
                                                                          at com.evernote.android.job.JobStorage.put(JobStorage.java:109)
                                                                          at com.evernote.android.job.JobManager.schedule(JobManager.java:231)
                                                                          at com.evernote.android.job.JobRequest.schedule(JobRequest.java:320)
                                                                          at com.evernote.android.job.JobRequest.reschedule(JobRequest.java:351)
                                                                          at com.evernote.android.job.JobExecutor$JobCallable.handleResult(JobExecutor.java:166)
                                                                          at com.evernote.android.job.JobExecutor$JobCallable.runJob(JobExecutor.java:153)
                                                                          at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:135)
                                                                          at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:118)
                                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                          at java.lang.Thread.run(Thread.java:761)
10-12 17:23:26.977 6016-7001/com.github.shadowsocks D/JobProxy24: Schedule one-off jobInfo success, request{id=9, tag=AclSyncJob:bypass-lan-china}, start 00:00:30, end 00:00:30 (+28 days)
10-12 17:23:26.979 6016-7000/com.github.shadowsocks D/PlatformJobService: Finished job, request{id=9, tag=AclSyncJob:bypass-lan-china} RESCHEDULE

The app didn't crash. Here's evernote_jobs.db:
sqlite> .tables
android_metadata  jobs
sqlite> select * from jobs;
sqlite> select * from android_metadata;
en_US

In evernote_jobs.xml, there is only JOB_ID_COUNTER = 9.

Oh there's one more log:
10-12 17:23:56.997 6016-6016/com.github.shadowsocks D/PlatformJobService: Job 9 already finished, null

And I don't think scala will interfere with other libraries. (it works well with every one I've encountered so far)
Related code: (in execution order)

https://github.com/shadowsocks/shadowsocks-android/blob/master/src/main/scala/com/github/shadowsocks/ShadowsocksApplication.scala#L186
After either ShadowsocksVpnService or ShadowsocksNatService starts, it calls AclSyncJob.schedule(profile.route): https://github.com/shadowsocks/shadowsocks-android/blob/master/src/main/scala/com/github/shadowsocks/job/AclSyncJob.scala#L19
Then this: https://github.com/shadowsocks/shadowsocks-android/blob/master/src/main/scala/com/github/shadowsocks/job/DonaldTrump.scala#L15
And this: https://github.com/shadowsocks/shadowsocks-android/blob/master/src/main/scala/com/github/shadowsocks/job/AclSyncJob.scala#L29

Found the issue. Your services run in a different process, but the jobs are always executed on the main process. Your service schedules the job and bumps the ID, but the main process doesn't see the new ID, yet, and then tries to reschedule the same job with the same ID.
I see two options now. You can either run the scheduling logic to the main process or you can override the process for the job services. I haven't tried the 2nd option, but it could work.

Yep you are right! The 2nd option works just fine. Thanks!

Cool! But be careful with new jobs, which you schedule in the main process.


XXX: this may now fail, and is not handled correctly

Seeing a inconsistent/rare fault in a project using 2.6.0... after analyzing a core dump, I see that it faulted with the stack at:
[Inline Frame] duk_bd_decode_varuint(duk_bitdecoder_ctx *) Line 83	C
duk_hthread_create_builtin_objects(duk_hthread * thr) Line 407	C
[Inline Frame] duk__init_heap_thread(duk_heap *) Line 562	C
duk_heap_alloc(void *(*)(void *, unsigned __int64) alloc_func, void *(*)(void *, void *, unsigned __int64) realloc_func, void(*)(void *, void *) free_func, void * heap_udata, void(*)(void *, const char *) fatal_func) Line 1108	C
[Inline Frame] duk_create_heap(void *(*)(void *, unsigned __int64)) Line 58	C++

which seems to me to just be simply decoding the built-ins (happens all the time in this process).  Something that caught my eye was this comment:
/* XXX: this may now fail, and is not handled correctly */
duk_hthread_create_builtin_objects(thr);

The duk_builtins_data block looks intact (i.e. not corrupted) so my assumption is heap corruption (from some other aspect of the process)... the stack looks okay.  But where it's failing is just bitwise-decoding of the built-ins.  Anyway, begs the quesion... in what way would the built-in decode fail as per the comment?  Thanks.

The duk_hthread_create_builtin_objects() may fail uncleanly now if there's not enough memory for the built-ins. It causes (IIRC) the panic handler to be called.

The duk_hthread_create_builtin_objects() may fail uncleanly now if there's not enough memory for the built-ins. It causes (IIRC) the panic handler to be called.

Thanks for the response... I'm seeing more core dumps with the exact same situation... it's even the exact same built-in too, where i==54:
DUK_DD(DUK_DDPRINT("initialize built-in object properties"));
for (i = 0; i < DUK_NUM_ALL_BUILTINS; i++) {
...
It does not appear to be a memory problem... it's faulting on the very first instruction of duk_bd_decode inside of the 2nd use duk_bd_decode_varuint inside of that loop in duk_hthread_create_builtin_objects.  It seems unlikely that a timing issue would be that precisely happening, but it is possible I suppose.  Off the cuff it doesn't seem like duktape would be an issue, especially since this initialization happens successfully nearly all of the time in this process, but I'm reaching for ideas...

Thanks for the response... I'm seeing more core dumps with the exact same situation... it's even the exact same built-in too, where i==54:
DUK_DD(DUK_DDPRINT("initialize built-in object properties"));
for (i = 0; i < DUK_NUM_ALL_BUILTINS; i++) {
...
It does not appear to be a memory problem... it's faulting on the very first instruction of duk_bd_decode inside of the 2nd use duk_bd_decode_varuint inside of that loop in duk_hthread_create_builtin_objects.  It seems unlikely that a timing issue would be that precisely happening, but it is possible I suppose.  Off the cuff it doesn't seem like duktape would be an issue, especially since this initialization happens successfully nearly all of the time in this process, but I'm reaching for ideas...


Announce how many tricks the player will win

Belongs to each match, a match consists of 1 up to 5 rounds. Before each match the player can announcing when locking on this cards, how many tricks she or he will win.
Estimated time
4h
User story
https://github.com/sopra-fs22-group-36/screw-your-neighbor-server/issues/8

This issue was later reworked in: https://github.com/sopra-fs22-group-36/screw-your-neighbor-server/issues/64


update doc

added "tunnel" prefix to various places
added a link in the index.md to the gNMI usage doc
removed "ack" from the diagram and the doc
add a description regarding local and tunnel connections at the same time
removed the description for "capability".

just merged to recent update


add doc for optimization

Description
A document has been added to guide the steps for performance optimization, and all the steps in the document have been fully verified.

Please add docs dir.

done


Issue in FileDownloadStore that forces re-download of files

This is a weird issue that I have been facing but didn't have the time to dig into.  The way the FileDownloadStore checks, if the file is already downloaded, seems to be broken (or it's just me!).
The _checkForDownloadedFile method checks for the file size in the ~/.nylas-mail/downloads directory and the file size captured from the header.  If the file sizes are same, it won't initiate a download, else it would.  In my case, none of the attachments has the same file size (physical) as the size mentioned in the header!  Therefore, Nylas always re-downloads the file and re-write the physical one.  This also delays the availability of the attachment in case of large files.
Does this sound familiar?  Is anyone else facing the same issue?

I definitely will say the way downloads works in general seems kludgy. Many times the file is "downloaded" with 0 bytes; I have to quit nylas and that sometimes fixes it. It might be worth it to do a full review of the code and clean up stuff and make it stable. I don't know if my issue is similar to your issue however

It happens to me almost all the time with large files (>2MB)...
Also, can you please remove the contributor wanted label?


compile for linux

Do you have any tips on how to compile for linux? I modified the build command to add GOOS=linux as follows:
@C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GOOS=linux GOARCH=amd64 ${GO} build ${BUILD_FLAGS} -o ${BUILD_DIR}/$(notdir $@) ./$@

But compilation fails, im assuming this is because the bindings are not built for linux. Thanks again for sharing your work!

I'm working on a mac (intel chip) trying to build for linux

I wonder if CGO gets disabled when you try to cross-compile. I get the same result on Linux if I run the following:
CGO_ENABLED=0 make

Looking at the following article, you'll also need to set the CC variable for the right toolchain for cross-compilation:
https://dh1tw.de/2019/12/cross-compiling-golang-cgo-projects/
You would also need to cross-compile libwhisper.a in the same way. In my humble opinion, you'd be better off compiling directly on a Linux machine or using a hosted version using github actions.

agreed. I'm working on a Dockerfile to build for linux. I will share here in case you want to include it with your repo.

I'm some way off (in this repo) to productionizing the code...but yes please share when you have something. Eventually, "speech to text API" is where I'd like to land this work, but will require integration with ffmpeg API's too to downsample audio to 16Khz mono.

FROM golang:latest
WORKDIR /build
COPY . ./
RUN apt-get update
RUN apt-get install libsdl2-dev --quiet -y
RUN git config --global http.sslverify false
RUN make

you can build with
docker build -t go-whisper:latest .
then copy to your local machine with
docker run --rm -iv$(PWD)/build:/save go-whisper cp -rfp build/stream /save/stream_linux


Add section for testing HTTPS server on README for skipping SSL Certificate Verification

I've just recently been trying to test node https servers and I've noticed that you supposedly have to add this line: process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; (source: #146). It would be nice if someone can add this note somewhere in the README.

Would like this too.

Anyone to create the PR ? 😃

@rimiti I can get working on that!


Component: VTag

Description

The new VTag component will be used for clickable tags. The current, non-clickable, VMediaTag component will be replaced with it.
To create a new component, run just frontend/run create:component VTag. This will run the component generator and will create the new component file, a Storybook story, unit and Playwright tests. The unit and playwright tests can be deleted.
API

Props

Name
Type
Description

title
string
The tag text

href
string
The url the tag should link to

Code samples

<VButton
  as="VLink"
  size="small"
  variant="filled-gray"
  class="label-bold"
  :href="href"
>{{ title }}</VButton>

Figma: https://www.figma.com/file/niWnCgB7K0Y4e4mgxMrnRC/Additional-search-views?type=design&node-id=1263-62874&mode=design&t=WRJSFZNUbmpYERx8-4

Hey, I am new to open-source contributions, can I work on this issue?

Hi, @Vanshika-Aggarwal, sure! I'm assigning the issue to you 🚀  Please let me know if you need any help. Please be sure to create a separate branch, not the main branch, in your fork of the Openverse repository for the PR.

Hey @Vanshika-Aggarwal! Hope you're doing well! Do you still plan to work on this? Do you need help with the project setup or anything? Remember to check the guidelines (1) (2). If you need further help (get in touch!) or don't plan to continue this effort, let us know in any case.

Hey..sorry for going awol,I would totally like to work on this issue, I just thought this branch was dormant and didn't go through my emails. I am working on this issue now.

Thank you for confirming! That sounds great 😄

Hello @krysal and @obulat,
Can I work on this issue?

@obulat and @krysal I created a VTag component. What is the href suppose to do? For example, user click on the "cat" tag then the href is https://openverse.org/search/?q=cat. How can I implement that into the codebase? I tried :href="search/${tag}" and I get https://openverse.org/image/search/?q=cat which lead to an usable homepage.

@ngken0995 , VTag should accept href as a prop, and should use that prop as the href:
<template>
<VButton
  as="VLink"
  size="small"
  variant="filled-gray"
  class="label-bold"
  :href="href"
>{{ title }}</VButton>

```

@obulat There is a VMediaTags component which takes the VMediaTag. What should the href be when I pass the prop in VTags in VMediaTags?

@obulat There is a VMediaTags component which takes the VMediaTag. What should the href be when I pass the prop in VTags once replace VMediaTag in VMediaTags?

VTag should be a completely separate component, @ngken0995 . You don't need to do anything with VMediaTag.


Async State Hashing

Depends

[ ] #234

Problem
We want full async state hashing per #147.  This PR implements this.
Recall that per #218, this has the following requirements (reposted for convenience):

If an honest node hashes a particular state, every other node will either
eventually hash that same state or has already hashed that state.
The block producer is forced to produce state root hash updates on time.

2a. Validators reject blocks with state root hash changes that occur too
early.
2b. Validators reject blocks with a state root hash that is too old.

The state root hash can only advance forward - that is, when a validator sees
a block with state root hash h, and then a subsequent block with state root
hash h', the validator rejects any subsequent blocks with state root hash h.
Honest validators that are in sync and have sufficient hashing power always
have the next state root hash before it is needed (i.e, hashing is no longer a
bottleneck).
Honest validators that are behind in hashing mark themselves as out of sync
and continue to follow but don't sign blocks.
Honest validators can get back in sync when finished hashing (assuming they
were in sync before they fell behind).

Solution
This PR removes the synchronous state hashing in ./node/state.re, and instead relies fully on the async hashing
introduced in #234 .
This covers requirements 1-5. Requirement 6 is an optimization that we will address in the next PR. Here's the argument for 1-5:

Hashing now occurs in a single place: after applying a block and when a new epoch is detected. All honest nodes will eventually call try_to_apply_block on the same inputs, and thus will eventually try to hash the same states.
In #227 we introduced the check block_has_signable_state_root_hash (I've linked to the most recent version because it's been slightly refactored since then). Validators only sign blocks if the hash is the expected one and neither too early too late according to this function.
In #234 we introduced the notion of next_state_root_block_height - a field on the state that identifies the block height of the state that will be the next state root hash. Every new epoch, we update this value with the start_new_epoch function. Additionally, we introduced finished_hashes - a block heights to their corresponding state root hashes. Whenever a new epoch is started, any hashes corresponding to older epochs are deleted from this map. If a dishonest block producer tried to send a block with an old state root hash, validators would not be able to find it in finished_hashes, thus satisfying our property that the state root epoch cannot move backwards.
In #227, we shifted the state root hash to be the one from the previous epoch. Starting in #234 and finishing in this PR, the generation of that hash is fully async. So long as hashing finishes before the next epoch, block producers will send new state root hashes on time, and validators will be able to sign them. Conversely, if they fail to produce them on time, the block producer will continue sending the current state root hash (these blocks may be rejected if the max_signable_time_between_epochs interval passes). If validators fail to finish the hash in time, they will not be able to sign the block. In both cases, they must wait until the next epoch and try again to finish hashing it in time (this violates requirement 6, which we'll discuss further below).
As mentioned, the new [block_has_signable_state_root_hash] added to the is_signable ensures validators won't sign blocks unless they can verify it has the correct hash (implying they finished that hash already). However, it is not required to know the state root hash to apply a block - you can see we've removed the check for a valid hash from Protocol.apply. Thus, nodes will continue following the chain by applying blocks even if they can't sign them.

Regarding requirement 6, this is an important optimization to allow nodes to quickly get back in sync if they fall slightly behind, without waiting for a whole epoch to pass. The idea is to keep track of which blocks could have been signed but were missing a hash, and whenever a hash finishes, check to see if any have become signable.
If 1-5 are correct, the chain should work without this optimization. We'll address 6 in the next PR.
Reviewers, please check my work on points 1-4! This design is slightly different than what's outlined in #218. Also, the correctness of this PR depends on the correctness of its dependencies, so we should iron those out first.
Related

#147

Superseded by the line of PR's starting with #412


How do I add things to the homepage?

I can't find any docs on how to add content to the home page or maybe feature articles/posts on the home page. Could someone help me?

nevermind, its content/_index.md


Share classes between bundles

Wondering if this has been covered already.
I've got an extension bundle which has a few services defined.
I'm trying to autowire a bean from this bundle from another extension bundle.
I get the generic Could not autowire field error message when loading in this second bundle.
Is it possible to autowire a bean from another extension bundle?  Or do I have to convert one into a framework bundle?

By default, services are only visible to the extension itself.
If you want to override this, annotate your service with @OsgiService on the implementation side.
You can then simply autowire it.
You can see the list of public services via the dashboard: /alfresco/s/dynamic-extensions/container and follow the services link.

Ah, excellent stuff.  Is there a wiki/doco where this annotation is listed?

There is now: https://github.com/laurentvdl/dynamic-extensions-for-alfresco/wiki/Reusing-Spring-services-or-components


fix: solve sentinel openfeign static compilation problem.

For detail, can refer to https://github.com/alibaba/spring-cloud-alibaba/issues/3174. The problem is fixed in spring-aop 6.0.4. Relevant discussion in https://github.com/spring-projects/spring-boot/issues/34388

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.chengpu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


README: added npm badge

Added an npm badge for a quick synopsis of version info as well as linking to the npm repository instead of having to do a secondary search.
Before

After

Nicely done. Thanks for the awesome screenshot.

Thank you for the merge @amir20!


Download the desired aqua version directly instead of the bootstrap version

The install script currently downloads a bootstrap version of aqua, if a version of aqua is passed to the installer script it then runs aqua update which will download aqua again in the desired version.
I'm not sure what is the reasoning behind this, but I believe we could download the version that is passed to installer directly.

That's a good question.
Bootstrap is required to achieve secure install easily with minimum dependency.

Secure Install: verify checksums and signature
Minimum dependency: aqua-installer requires only curl or wget
Easy implementation: aqua-installer lets complicated process to aqua update-aqua

We think Supply Chain Security is so important.
To verify checksums, you need to get expected checksums somehow.
aqua-installer supports any versions, so it needs to be able to get checksums of any versions.
Downloaded checksum files must be verified somehow.
aqua uses tools such as Cosign for verification, so they must be installed securely before installing aqua.
To install Cosign securely, Cosign must be verified. This is a bootstrap issue.
To solve this issue, we hardcode a specific aqua version and checksums in aqua-installer.
We can trust hardcoded checksums.
aqua-installer downloads the specific version and verifies checksums without Cosign.
Then aqua-installer executes aqua update-aqua command to install Cosign and aqua securely.
We hardcode Cosign version and checksums in aqua to install Cosign securely.
aqua update-aqua command installs Cosign securely, and installs aqua securely.
That's why the bootstrap is required.
Without bootstrap, you need to install one of the following tools before executing aqua-installer, which making aqua-installer hard to use.

Cosign: verification of checksum files
slsa-verifier: verification of SLSA Provenance
GitHub CLI and GitHub Access Token: verification of GitHub Artifact Attestations

And we need to take care of compatibility. For example, users may use old GitHub CLI not supporting gh attestation command.
We hardcode versions and checksums of tools which aqua uses internally not to depend on user environment.
aqua-installer lets complicated process to aqua update-aqua, making aqua-installer simple.
Bootstrap causes some overhead, but we accept it.

I'll add the document.

https://github.com/aquaproj/aquaproj.github.io/pull/1236

@suzuki-shunsuke how about adding the last n versions of aqua's checksums to the installer script?
So we have for example 10 possible bootstrap versions instead of one.
Since the installer itself is versioned, we will have a high probability of downloading one of the bootstrap versions and not having to redownload afterwards.

In that case, we need to release a new version of aqua-installer every time we release a new version of aqua.
And when users update aqua to the latest version, 10 bootstrap version have no meaning unless users update aqua-installer to the latest version.
I don't think this is a good idea.
Current status is not so bad, so I don't think we need to improve it so much.

We don't want to update aqua-installer frequently because if users use aqua-installer as shell script they need to fix the checksum of aqua-installer when they update aqua-installer, which is bothersome.

@suzuki-shunsuke there's a tradeoff here - if it's more important for the user to validate the checksum of the aqua-installer they can choose not to update it frequently and possibly download aqua twice.
If it's more important for the user to not download aqua twice then the trade off of not validating the checksum is acceptable.
My focus here is mainly on CI where you don't want to download aqua twice on every run.

As I mentioned, we think Supply Chain Security is so important.
So there is no option not to verify checksum.

Basically, downloading aqua takes only a few seconds on ubuntu-latest.
I don't think this is a problem.

As I mentioned, we think Supply Chain Security is so important. So there is no option not to verify checksum.

I am talking about the installer script checksum, not the aqua binary checksum.

Same. We should verify checksum of the installer script in terms of Supply Chain Security.


[question] How is decided which issue gets help / which feature is getting added?

Usually Dmoddoomsiruius pokes me with severe issues and I work on them as I have time (which unfortunately is rare these days).  Sometimes I'll pick an issue where a lot of people show interest.

Thanks! I may try to look a little bit more into modding to help creating this mod, so I wanted to see what is currently worked on.


Cosmosdb Postgresql relationship

Now with the launch of cosmosdb for postgresql I am a bit confused. When to pick the single server, flexible server or cosmosdb offering?

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

ID: 789139e9-15bb-58a9-7dc3-bd85c0bcfee5
Version Independent ID: cda59fed-f3ff-aa09-a13c-027a54e4141a
Content: Azure Database for PostgreSQL - Flexible Server
Content Source: articles/postgresql/flexible-server/overview.md
Service: postgresql
Sub-service: flexible-server
GitHub Login: @sunilagarwal
Microsoft Alias: sunila

@cveld
Thanks for your feedback! We will investigate and update as appropriate.

@cveld We will proceed to close this issue now.If there are further questions regarding this, please comment and we will gladly continue the discussion.


lets me check balance, but not rain. other users not affected.

the bot suddenly started ignoring my !rain and !tip commands, but still shows me my balance when i !balance
no other users are affected; everyone else is able to rain and tip.

still having the issue, and now one more user is as well. everyone else can tip/rain/balance, but now me and another can only check balance, not tip or rain.
when we tip and rain, the bot only responds when no number is entered with what the proper syntax is, but when a number is entered its ignored completely..

But just YOU?
No one else in channel has this issue?
On Sat, Jan 3, 2015 at 5:43 PM, sunerok<EMAIL_ADDRESS>wrote:

still having the issue, and now one more user is as well. everyone else
can tip/rain/balance, but now me and another can only check balance, not
tip or rain.
when we tip and rain, the bot only responds when no number is entered with
what the proper syntax is, but when a number is entered its ignored
completely..
—
Reply to this email directly or view it on GitHub
https://github.com/unek/node-tip-bot/issues/18#issuecomment-68614304.

--
BitCoin Bob<EMAIL_ADDRESS>DobbsCOIN (BOB): The stupider it looks ..the more important it probably is.
The ONLY cryptocurrency accepted on the Pleasure Saucers
Love that "BOB" - Get Slack w/Dobbscoin.
DONATE (BOB) or (BTC) to the same address:
1Nm828hb49kozFsNkfmWzYpMZx2SJueQPZ

well, now one other user has the issue. but everyone else can rain/tip.

can i come watch?
where are you at?
On Sat, Jan 3, 2015 at 6:22 PM, sunerok<EMAIL_ADDRESS>wrote:

well, now one other user has the issue. but everyone else can rain/tip.
—
Reply to this email directly or view it on GitHub
https://github.com/unek/node-tip-bot/issues/18#issuecomment-68615344.

--
BitCoin Bob<EMAIL_ADDRESS>DobbsCOIN (BOB): The stupider it looks ..the more important it probably is.
The ONLY cryptocurrency accepted on the Pleasure Saucers
Love that "BOB" - Get Slack w/Dobbscoin.
DONATE (BOB) or (BTC) to the same address:
1Nm828hb49kozFsNkfmWzYpMZx2SJueQPZ

#dogecoindark on freenode

im dogedDEV at the top, and coiner561 also has the issue

any ideas? @unek ?

still has issue

ok  didnt see the previous commit by unek, bot appears to be alive and better than ever. thanks guys!


Publish to helm registry

Support for publish to Helm Registry
Fixes #90
Its using method defined here : https://helm.sh/docs/topics/registries/
Basically following command:

export HELM_EXPERIMENTAL_OCI=1
helm registry login -u myuser localhost:5000
helm registry logout localhost:5000
helm chart save mychart/ localhost:5000/myrepo/mychart:2.7.0
helm chart push localhost:5000/myrepo/mychart:2.7.0

Tested it with Azure Container Registry

Hey thanks for the review, I will fix these soon. sorry for the delay

This is pushing a couple years so I'm going to close this out - if issues get address we can reopen :)


Get Application pod details when clicked on application pod.

FEATURE REQUEST?

What happened:

Populate all labels, annotations, and metadata when clicked on any Application Pods.
Add metrics and other metadata related to Application Pods.

What you expected to happen:

This will Populate details about Application pods.

Fixed: https://github.com/openebs/scope/pull/67


Explain clearly how to add a Plugin in the doc

Context
developers must be guided in the documentation to add or update their plugins
User flow
N/A
How to
Update the readme with precise indications on how to

[ ] create
[ ] add in the store
[ ] update in the store a plugin

Technical details
N/A
QA testing
N/A

closed as handled by https://github.com/massalabs/thyra/issues/612


Fix single quotes on import

Hi guys,
Here is a small PR to fix single quotes on import.
Thanks

Codecov Report

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

@@           Coverage Diff           @@
##           master     #243   +/-   ##
=======================================
  Coverage   90.77%   90.77%
=======================================
  Files          53       53
  Lines        2515     2515
  Branches      510      510
=======================================
  Hits         2283     2283
  Misses        221      221
  Partials       11       11

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 435a704...0e94b31. Read the comment docs.


Model data starting at year 0000-01-01

days since 0000-01-01 00:00:00' ValueError: year is out of range
I ran into this problem with ocean model data starting at year 0000 with a standard noleap calendar.
Don't have a good work around for this right now.
See description of the issue here: https://github.com/Unidata/netcdf4-python/issues/442

This looks much like a bug in the unidata netcdf python library, and might be resolved when we move to dask (Issue #216)?
In the meantime, a work-around could be to read in the data using the netcdf Dataset directly, and then use FieldSet.from_data (instead of the shortcut FieldSet.from_netcdf method)

This is now explicitly dealt with through PR #353; Parcels indeed only supports time_origins between 1678 and 2262, and throws an error if time_origin is outside. Closing this issue and #220 for now, until we hear about a actual use-case for extending this date range (which would be a lot of work!)


Support to deploy on Hetzner (Cloud) or generic infrastructure providers

I was pleasantly surprised to see that lokomotive doesn't (easily) support deploying on unknown infrastructure providers/clouds, and considering I would want to deploy on "unknown clouds" (such as Scaleway, Digitalocean, Vultr, or Hetzner) with ease, is it possible to support a more generic infrastructure provider from/via terraform? If not, is it possible to support Hetzner?

Hey @ShadowJonathan, thanks for opening the issue and sorry for our response time.
So, right now Lokomotive does not support deploying to unknown infrastructure, as each platform may have different requirements which needs to be satisfied or provide different features which can be leveraged.
I guess support for unknown infrastructure could be implemented, assuming that the cloud provider can spawn Flatcar machines with Ignition configuration.

If not, is it possible to support Hetzner?

Do you mean Hetzner Cloud here or bare metal?

Do you mean Hetzner Cloud here or bare metal?

Hetzner Cloud

Hm, considering that Hetzner Cloud has Terraform provider and it is possible to install Flatcar Container Linux there, they have CCM and load balancers support, I think we can consider supporting it. This will be definitely easier than supporting generic infrastructure.
CC @iaguis

Has somebody already started the Hetzner Cloud integration? Maybe some hints before starting to contribute?
@invidian how do you deploy Kubernetes to Hetzner Cloud today? :)

@invidian how do you deploy Kubernetes to Hetzner Cloud today? :)

I use @flexkube, though without CCM and load balancers at the moment.


Match TLSConfig to the docs

Overview
Fixes #1330
Pull request checklist

[ ] I have read the contributing guide.
[ ] I have agreed to the Contributor License Agreement.
[ ] I have updated the documentation.
[ ] I have resolved any merge conflicts.
[ ] I have included tests that cover my changes.
[ ] All new and existing tests pass.

Code review checklist
This is the checklist that the reviewer will follow while reviewing your pull request. You do not need to do anything with this checklist, but be aware of what the reviewer will be looking for.

[ ] Ensure that any changes to external docs have been included in this pull request.
[ ] If the changes require that minor/major versions need to be updated, tag the PR appropriately.
[ ] Ensure the new code is properly commented and follows Idiomatic Go.
[ ] Check that tests have been written and that they cover the new functionality.
[ ] Run tests and ensure they pass.
[ ] Build and run the code, performing any applicable integration testing.

do we also need ``toml:"tls"` on the TLS attribute?

I've added the tls tag.

great!


Not working in Windows 8

The plugin is not reading configuration from the eslintrc file. The folder is in a shared lan folder. Any way to fix it?

Can you check if the issue is not with eslint itself, run eslint from your project folder ?

Closed because no answer


Allow for static id in Popover.vue

The aria-descibedby of the component id generated randomly from the id data prop and breaking my snapshot tests as it is different each time I run tests.
Referenced code:
data () {
    return {
      isOpen: false,
      id: Math.random().toString(36).substr(2, 10),
    }
  }

Causing an output like this:

...

Would be great to allow for id to be optionally passed as a prop with a fallback to the random string.
<v-popover trigger="manual" :open="isOpen" :id="'my-comp-id'">...
Resulting in:

 ...

Thanks!

Thanks!


Firebird: fix createIndex missing space around "computed"

This change fixes the case in invalid sql is generated, when an index with an computed value is created.

name: CreateIndexGeneratorFirebird generates invalid SQL on computed field
about:  #1490
title: ''
labels: Status:Discovery
assignees: ''

Environment
Liquibase Version:
4.1.1
Database Vendor & Version:
Firebird 2.5
Firebird 3.0
Pull Request Type

[x] Bug fix (non-breaking change which fixes an issue.)
[ ] Enhancement/New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Description
A clear and concise description of the issue being addressed.

Adding an index on a "computed by" value generates invalid sql

Steps To Reproduce
    <changeSet id="1" author="1">
        <createTable tableName="foo">
            <column name="id" type="INT">
                <constraints nullable="false" primaryKey="true" primaryKeyName="PK_foo" />
            </column>
            <column name="bar" type="INT" />
        </createTable>
    </changeSet>

    <changeSet id="2" author="2">
        <createIndex tableName="foo" indexName="idx_bar">
            <column name="bar + 1" computed="true" />
        </createIndex>
    </changeSet>

This creates the following sql:
CREATE INDEX idx_baz ON fooCOMPUTED BY (baz + 1)

which misses a space between the table name an the the keyword "computed"
Fast Track PR Acceptance Checklist:

[x] Build is successful and all new and existing tests pass
[x] Added Unit Test(s)
[ ] Added Integration Test(s)
[ ] Documentation Updated

Need Help?
Come chat with us on our discord channel

Thanks @Markus-Patt for finding the issue and creating a fix for it.

Shame on me, I missed a test.
Fixed now.

Thanks for your PR submission! We just finished reviewing and merging it into the 4.17.0 release on October 10, 2022. When you get a chance, could you please Star the Liquibase project? The star button is in the upper right corner of the screen.


Cracking audio with Godot 4 no-threads Web builds

Tested versions
Reproducible in 4.3.dev (1952f64b07b2a0d63d5ba66902fd88190b0dcf08) with a threads=no Web template.
The issue was "introduced" in #85939 since it wasn't possible to make single-threaded Web builds in Godot 4 before that.
System information
Mageia 9 - Vulkan (Forward+) - dedicated AMD Radeon RX Vega M GL Graphics (RADV VEGAM) () - Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz (8 Threads)
Issue description
The newly reintroduced single-threaded Web export has audio issues, as expected.
On my Linux system, it's pretty dire on any demo that has background music, sfx, and any game logic or rendering effort that's non trivial (i.e. the CPU is kept busy).
Here's an example with the GDQuest TPS demo, uploaded to itch.io, with threads disabled (built from #85939):
https://akien.itch.io/godot4-nothreads-audio-test
(Ignore the weird rendering (Compatibility while the demo is designed for Forward+) and the fact that rotating the camera with the mouse seems to be broken in the Web build.)
Here's how the game sounds like on a native Linux build (editor):
https://github.com/godotengine/godot/assets/4701338/638685d6-553d-4755-92df-6658ea57245d
Here's the threads=no Web build (debug) on currently Firefox Nightly (123.0a1 (2024-01-17)) on the same Linux system:
https://github.com/godotengine/godot/assets/4701338/cc9d8aac-4fe0-4e2f-8c60-06b6b6a4e860
And the same on Chromium (120.0.6099.216) on the same Linux system:
https://github.com/godotengine/godot/assets/4701338/d35431cb-a6f4-4250-8db2-7e63813e9c74

The issue is likely linked to OS, browser, and CPU, so for testers who can or cannot reproduce it, please include full info about what platform you tested on.
$ inxi -CSG
System:
  Host: cauldron Kernel: 6.5.13-desktop-6.mga9 arch: x86_64 bits: 64
    Desktop: KDE Plasma v: 5.27.5 Distro: Mageia 9
CPU:
  Info: quad core model: Intel Core i7-8705G bits: 64 type: MT MCP cache:
    L2: 1024 KiB
  Speed (MHz): avg: 900 min/max: 800/4100 cores: 1: 900 2: 900 3: 900 4: 900
    5: 900 6: 901 7: 900 8: 900
Graphics:
  Device-1: Intel HD Graphics 630 driver: i915 v: kernel
  Device-2: AMD Polaris 22 XL [Radeon RX Vega M GL] driver: amdgpu v: kernel
  Device-3: Cheng Uei Precision Industry (Foxlink) HP Wide Vision FHD Camera
    type: USB driver: uvcvideo
  Display: x11 server: X.org v: <IP_ADDRESS> with: Xwayland v: 22.1.9 driver: X:
    loaded: intel,v4l dri: i965 gpu: i915 resolution: 2048x1152~60Hz
  API: OpenGL v: 4.6 Mesa 23.3.2 renderer: Mesa Intel HD Graphics 630 (KBL
    GT2)

Steps to reproduce

Export a project with audio and some non-trivial game logic to the Web, with threads disabled (in 4.3-dev3 or later, or custom builds from master with threads=no)
Run it on an affected system. At least reproducible on my Linux laptop.

Minimal reproduction project (MRP)
https://akien.itch.io/godot4-nothreads-audio-test

Same issue on Android 14 with a Pixel 7a, both with Firefox Beta 122.0b9 and Chrome 120.0.6099.210.

Windows 11 v23H2 here (full specs later). I'm also getting audio cackling in your example project on Firefox, Chrome, and Edge. It sometimes sounds fine probably when the game is running at full speed though.
Chrome and Edge also have major artifacts on the intro screen.
Firefox 121.0.1:
https://github.com/godotengine/godot/assets/16920817/53b808d0-1321-4c5e-a2c8-47ad6edcb13f
Notes: Similar results to the post above, but it runs a lot smoother on my end due to better specs.
Microsoft Edge 120.0.2210.144 (WARNING: FLASHING COLORS):
https://github.com/godotengine/godot/assets/16920817/22012fda-94e7-4348-9fd5-1009f1ab42d7
Notes:

For some reason the intro screen is completely broken on Edge with lots of flashing and artifacting. This could possibly be its own issue, not sure if there is correlation between this and no-threads build.

After compiling shaders the sound seems stable, but it completely breaks again when I leave fullscreen. Entering fullscreen again doesn't fix it. Could also be its own issue?

Google Chrome Version 120.0.6099.225:
Notes: Exact same results as Microsoft Edge (see video above). Broken intro screen, good audio after shader compilation, audio breaks when exiting fullscreen.
Here are my specs:
Windows 11 Home - Version 23H2 / Build 22631.3007
Processor: AMD Ryzen 5 5600 @ 3.5GHz
GPU: RTX 3060 Ti - driver 546.33
RAM: 16GB

I'm a newbie in this, but maybe we could use Web Audio backend code from miniaudio library in Godot?

The audio in my game runs perfectly when I run the linux release export, but my game isn't cpu intensive so this isn't very significant. Anyway, two things caught my attention. Firstly, audio from MRP on itch.io is of low quality, but when I switch to another tab, the audio quality suddenly increases to near perfect. I use firefox 122.0 64 bit. Secondly, the game is completely silent when I launch my game from the editor with f5, however as I said previously, it works in the export.
Here are my specs:

One temporary workaround is to use a library like howler.js to handle sounds on the browser side.
I could achieve that by:

Exclude the audio from being exported in the web preset so it isn't duplicated by the end and use unnecessary space.

You can do that by going to Project -> Export -> Web -> Resources tab -> Filter to exclude, and maybe have all your audio in a folder called Audio, so you can write "Audio/*" to exclude the folder from being exported.

Add howler.js to the headers, you can link the library or download it and add it to the export folder. I will explain in a bit how I could easily automate that.

You can get howler.js from cdn, their website, or download this howler.min.zip
Project->Export->Web-> Options tab -> HTML -> Head Include and include it. I will have a folder in the web build folder called Audio where I will have howler.min.js and the rest of the Audio files. So, I need to make it like
<script src="Audio/howler.min.js"></script>

You also need the Audio folder that you have in the Godot project to be in the web build so howler.js has access to the audio files. However, copying it manually every time is a massive pain and unnecessary work, so I wrote a simple addon that could spare you from doing that.

copy_additional_folders.zip
Copy it to your addons/ folder and go to Project -> Project Settings -> Plugins -> Enable Copy Additional Folders
Now go to Project->Export->Web-> Options tab -> Copy Folders and add Audio to the array.

Now Audio and all its content will be copied after the game is exported automatically. You can put the howler.min.js inside Audio so Godot copies it automatically with the audio. (Note that Godot won't show .js files in the FileSystem so it will be invisible inside Godot)

Finally, you should be able to call Howler.js functions through JavaScriptBridge.
For example, to run this JavaScript code

var sound = new Howl({
  src: ['sound.mp3']
});
sound.play();

you should write something like this:
# only run on web
if OS.get_name() == "Web":
	# top dictionary
	var arg = JavaScriptBridge.create_object("Array", 0)

	# src array
	arg["src"] = JavaScriptBridge.create_object("Array", 1)
	arg["src"][0] = "Audio/floating-cat.mp3"

	# Howl obj
	var obj = JavaScriptBridge.create_object("Howl", arg)
	obj.play()

	# using JavaScriptBridge.eval is not recommended since most of online platforms doesn't have eval enabled
	# and might consider it a security risk

They have the documentation on their Github repo.
This fixed the audio problems by not using the system inside Godot at all. Maybe someone can extend on this by making a plugin for Howler.js or any other library and implement audio nodes that works normally on other systems but falls back to howler on web.

pixel 6 android 13 Kiwi Browser 120.0.6099.116, cracking and missing textures

I noticed that audio is broken regardless of whether I export with the option "Thread support". Of course when I export from the normal editor with normal templates (built without --treads=no) it still works.

If you increase audio output latency.web to 90 it mostly goes away.

If you increase audio output latency.web to 90 it mostly goes away.

This... Actually works, thanks! Hopefully that can help track down the issue.
Here's my testing with the no threads template:
Latency.web 50 (default) - audio starts at 0:17 - Notice the insane crackling in the game over screen
https://github.com/godotengine/godot/assets/16920817/437bfbce-c991-4edb-9d1d-dfc7b1dd6e10
Latency.web 90 - audio starts at 0:11 - Audio has minor skips on frame drops but does not crackle
https://github.com/godotengine/godot/assets/16920817/07944539-cadc-457e-a56f-ad3551a57221

@jasonwinterpixel Mentioned using Latency.web 150 in Godot Engine 3, but I didn't get the complete details on what harm this causes.

Needs testing on several projects/devices, but I suggest we look into increasing the default audio latency for the Web export in 4.3, mitigating the current issues. I agree with @jasonwinterpixel that high latency is a bother, but it's better than the kind of cracking we have currently.
It's not a long term solution, but it should be a good first step to make things at least usable.

Just FYI changing the audio output latency.web from 50 to 90 fixed the crackling issue almost entirely (having about 4-6 audio players procedurally playing different sound layers and only sometimes a tiny bit hickup, but the sound stays clear), for this jam game: https://graphific.itch.io/bird-ruckus

FYI too:
Can confirm that changing the latency.web to 100 (max value) does nothing in my case.
But the sound cracks only on the left channel on iOS. With a panner to the right channel only everything sounds clean.


[Security] Workflow contracts-ci-cd.yml is using vulnerable action actions/checkout

The workflow contracts-ci-cd.yml is referencing action actions/checkout using references v1. However this reference is missing the commit a6747255bd19d7a757dbdda8c654a9f84db19839 which may contain fix to the some vulnerability.
The vulnerability fix that is missing by actions version could be related to:
(1) CVE fix
(2) upgrade of vulnerable dependency
(3) fix to secret leak and others.
Please consider to update the reference to the action.

Thanks for reporting. Solved with: https://github.com/1Hive/gardens/commit/881e67f13b2d4775899f1762d178493e86fc34b0


the trait diesel::sql_types::SqlOrd is not implemented for `diesel::sql_types::Datetime

I am trying to find all entries that have the max datetime but I get SqlOrd not implemented error.
error[E0277]: the trait bound `diesel::sql_types::Datetime: diesel::sql_types::SqlOrd` is not satisfied
  --> src/db/routes/demand.rs:17:68
   |
17 |             .filter(powerf::forecast_date.any(powerf::table.select(max(powerf::forecast_date))))
   |                                                                    ^^^ the trait `diesel::sql_types::SqlOrd` is not implemented for `diesel::sql_types::Datetime`

Already fixed by #2013

Got this error today on 1.4.6. It would be nice to have this feature in an official release.

@RalfNorthman Requesting that a certain feature is included in a patch release will not get this feature released any sooner. Our next feature release will contain this feature. If you want to make this happen sooner consider contributing something to the open issues listed in the diesel 2.0 milestone, otherwise stop requesting releases containing specific features.


[question] Unable to create SASL-SCRAM users in KRaft mode

Hello,
I'm using your collection in order to install Confluent Platform in KRaft mode and I tried to create SASL-SCRAM user but the playbook fail and, looking at your code, user cration is only upported in Zookeeper mode.
Have you plan to support user creatin in KRaft mode? If yes, when?
We are testing Confluent and I have to plan a rollout but I woluld like to deploy in Kraft mode.
Inventory File
all:
  hosts:
    localhost:
      ansible_become: false
      ansible_connection: local
  vars:
    ssl_enabled: true
    ssl_custom_certs: true
    ssl_ca_cert_filepath: "/tmp/ca-chain.cert.pem"
    ssl_signed_cert_filepath: '/tmp/cert.pem'
    ssl_key_filepath: '/tmp/cert.key'
    debian_java_package_name: openjdk-11-jdk
    confluent_server_enabled: false
    telemetry_enabled: false
    sasl_protocol: scram
    mask_secrets: true
    sasl_scram_users:
      user1:
        principal: user1
        password: my-secret
  children:
    kafka_contoller:
      hosts:
        server01.domain.lcl:
          ansible_host: <IP_ADDRESS>
        server03.domain.lcl:
          ansible_host: <IP_ADDRESS>
        server03.domain.lcl:
          ansible_host: <IP_ADDRESS>
    kafka_broker:
      vars:
        kafka_broker_custom_properties:
          log.dirs: /opt/data/kafka/data
      hosts:
        server01.domain.lcl:
        server01.domain.lcl:
        server01.domain.lcl:

Environment:

OS: Debian 10.13
CP-Ansible Branch: 7.5.1
Ansible Version: ansible [core 2.15.3]

I've got the same problem
confluent/platform/roles/kafka_broker/tasks/main.yml file contains tasks "Create SCRAM Users" with a comment "Only supported when zookeeper is enabled"
when statement should be completed with not kraft_enabled and another task must be added to handle KRaft case.
I'm new to KRaft usage. Documentation says to use following command : kafka-storage format --config CONFIG --cluster-id CLUSTER_ID --add-scram ADD_SCRAM
But I don't know if there's a fact containing config path and cluster id at this playbook step.
If somebody can help me on this question, i can submit a patch

Hi @Gianlu , could you please try a patch ?
It's available here : https://github.com/piif/cp-ansible/tree/fix/issue-1495-scram-kraft
I can't try it myself for the moment because the cluster I'm installing fails before, I have fix fix other problems before
If it works, I'll submit a pull request

I still have to check how it works on cluster with KRaft installed on same nodes than Brokers

It seems there's a problem with kafka-storage command.
I made a new commit on #1505 to create all users at once when formatting log dir, else all user creation seems silently ignored


Optimize ICollection-optimized methods for IReadOnlyCollection too

The current AtLeast has an optimization for ICollection. It should have one for IReadOnlyCollection as well.

The IReadOnlyCollection interface was introduced in .NET 4.5.
I upgraded the test projects, so I could confirm that the current implementation isn't optimized for IReadOnlyCollections. It isn't, so we would have to upgrade the projects to at least .NET 4.5 to implement this.
@atifaziz, what do you want to do?

@sholland1 I think we should move to .NET 4.5 but post 2.0 release, which I hope to do any day (though unfortunately due to time constraints, that's been getting postponed a lot). It would be good to track the upgrade to 4.5 as a separate issue.

Now that MoreLinq is multi-targeted, it may be more compelling to add a new Framework45 target. It can certainly be added to the NetStandard targets; it's been supported since 1.0.

@Arithmomaniac That's a good point. Happy to see a PR on this.

@Arithmomaniac there's a related discussion at #270 . Please make sure that tests actually exercise the IReadOnlyCollection paths.

@Milyli has given me some time to take this one up; I've already forked, but don't know your code contrib guidelines

It also occurred to me that IReadOnlyList could get similar optimizations.

@Milyli has given me some time to take this one up

💯

but don't know your code contrib guidelines

Aye, this is lacking and thanks for bringing this up. It tell us that #247 needs addressing soon. What is the most important thing you need to know right now? As you're not contributing whole new methods, I think the best would be get a sense of the conventions to follow from the code to which you'll adding the optimisations. When you make your PR, I can also help guide you through the review.

It also occurred to me that IReadOnlyList could get similar optimizations.

I think it would be good to first list the methods that would benefit from the optimisations and then tackle each as a separate issue/PR, including tackling IReadOnlyCollection and IReadOnlyList as separate issues. This will yield small and easily reviewable commits and PRs/issues can be closed quicker rather than keep one big one open until all work is done. It will also allow your PR to set the tone for the rest given the lack of contribution guidelines.

Are the checkboxes supposed to be checked off as I go through these?

Are the checkboxes supposed to be checked off as I go through these?

Yes but odd that it doesn't seem to be working.

Are the checkboxes supposed to be checked off as I go through these?

Yes but odd that it doesn't seem to be working.

Working now. The top-level list item have to be task items too rather than plain bullets.

As per #252, added CompareCount to this list.

Last lap (ScanRight)! 🏁

On it 😃

@Arithmomaniac, @Milyli & @leandromoh Thanks a ton for all your help with this!


xz 5.2.9 breaks conda smithy on windows

I cannot see how from #30, but after the following update:
2022-12-09 09:48:00  (rev 44)
     ca-certificates  {2022.9.24 (conda-forge/win-64) -> 2022.12.7 (conda-forge/win-64)}
     certifi  {2022.9.24 (conda-forge/noarch) -> 2022.12.7 (conda-forge/noarch)}
     conda-forge-pinning  {2<IP_ADDRESS>.34.25 (conda-forge/noarch) -> 2<IP_ADDRESS>.56.34 (conda-forge/noarch)}
     xz  {5.2.6 (conda-forge/win-64) -> 5.2.9 (conda-forge/win-64)}

trying to rerender locally on windows runs into:
conda smithy rerender
Traceback (most recent call last):
  File "[...]\.conda\envs\builder\Scripts\conda-smithy-script.py", line 5, in <module>
    from conda_smithy.cli import main
  File "[...]\.conda\envs\builder\lib\site-packages\conda_smithy\cli.py", line 13, in <module>
    import conda_build.api
  File "[...]\.conda\envs\builder\lib\site-packages\conda_build\api.py", line 18, in <module>
    from conda_build.config import (Config, get_or_merge_config, get_channel_urls,
  File "[...]\.conda\envs\builder\lib\site-packages\conda_build\config.py", line 19, in <module>
    from .variants import get_default_variant
  File "[...]\.conda\envs\builder\lib\site-packages\conda_build\variants.py", line 19, in <module>
    from conda_build.utils import ensure_list, get_logger, islist, on_win, trim_empty_keys
  File "[...]\.conda\envs\builder\lib\site-packages\conda_build\utils.py", line 11, in <module>
    import libarchive
  File "[...]\.conda\envs\builder\lib\site-packages\libarchive\__init__.py", line 1, in <module>
    from .entry import ArchiveEntry
  File "[...]\.conda\envs\builder\lib\site-packages\libarchive\entry.py", line 6, in <module>
    from . import ffi
  File "[...]\.conda\envs\builder\lib\site-packages\libarchive\ffi.py", line 26, in <module>
    libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
  File "[...]\.conda\envs\builder\lib\ctypes\__init__.py", line 452, in LoadLibrary
    return self._dlltype(name)
  File "[...]\.conda\envs\builder\lib\ctypes\__init__.py", line 374, in __init__
    self._handle = _dlopen(self._name, mode)
FileNotFoundError: Could not find module '[...]\.conda\envs\builder\Library\bin\archive.dll' (or one of its dependencies). Try using the full path with constructor syntax.

I checked, and envs\builder\Library\bin\archive.dll is there, so it's most likely the "(or one of its dependencies)" part.
Reverting to the last revision of the environment makes conda smithy run again. I then updated {ca-certificates, certifi, conda-forge-pinning} while leaving xz<5.2.9, and it still runs, so it's definitely xz.
@conda-forge/xz @conda-forge/core

It also breaks Windows GDAL builds at linking time, both locally or in CI
Cf https://github.com/OSGeo/gdal/actions/runs/3652713343/jobs/6171412987:
2022-12-08T23:20:07.8422656Z    Creating library gdal.lib and object gdal.exp
2022-12-08T23:20:07.8423399Z cpl_compressor.cpp.obj : error LNK2019: unresolved external symbol __imp_lzma_lzma_preset referenced in function "bool __cdecl CPLLZMACompressor(void const *,unsigned __int64,void * *,unsigned __int64 *,char const * const *,void *)" (?CPLLZMACompressor@@YA_NPEBX_KPEAPEAXPEA_KPEBQEBDPEAX@Z)
2022-12-08T23:20:07.8424221Z cpl_compressor.cpp.obj : error LNK2019: unresolved external symbol __imp_lzma_stream_buffer_bound referenced in function "bool __cdecl CPLLZMACompressor(void const *,unsigned __int64,void * *,unsigned __int64 *,char const * const *,void *)" (?CPLLZMACompressor@@YA_NPEBX_KPEAPEAXPEA_KPEBQEBDPEAX@Z)
2022-12-08T23:20:07.8425051Z cpl_compressor.cpp.obj : error LNK2019: unresolved external symbol __imp_lzma_stream_buffer_encode referenced in function "bool __cdecl CPLLZMACompressor(void const *,unsigned __int64,void * *,unsigned __int64 *,char const * const *,void *)" (?CPLLZMACompressor@@YA_NPEBX_KPEAPEAXPEA_KPEBQEBDPEAX@Z)
2022-12-08T23:20:07.8425890Z cpl_compressor.cpp.obj : error LNK2019: unresolved external symbol __imp_lzma_stream_buffer_decode referenced in function "bool __cdecl CPLLZMADecompressor(void const *,unsigned __int64,void * *,unsigned __int64 *,char const * const *,void *)" (?CPLLZMADecompressor@@YA_NPEBX_KPEAPEAXPEA_KPEBQEBDPEAX@Z)
2022-12-08T23:20:07.8426460Z gdal.dll : fatal error LNK1120: 4 unresolved external

Previous build against 5.2.6 was fine.

Can someone send a PR to mark 5.2.9 broken?

Can someone send a PR to mark 5.2.9 broken?

https://github.com/conda-forge/admin-requests/pull/526

@isuruf any suggestion on how to handle future xz updates? It looks like the build config changed and is causing those breakages.

It looks like both xz and xz-static build the static library on WIndows. I can submit a patch to change this behavior here (and then submit it upstream).


Generate checksum file after building ISO

luet-makeiso had a convenience functionality to generate sha256 checksum files directly after build.
While this can be easily workarounded after the build process, this was something nice to have to have the build process secured in a homogeneous way.

+1
Also we could reuse the checksum generated to insert it on packer, so we also verify that the image has the correct checksum as was not borked in the meantime. Im have seen that happen with the packer boxes between CI jobs so its a nice thing to have.


Update chatgpt-studio.md

This sentence is intended to help customers understand the purpose and recommendations when using Azure OpenAI Studio chat playground. Thank you!

@mrbullwinkle
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Thank you so much for your contribution. How we think about framing the playground experience and its utility is generally something that comes from the PG. I have shared your feedback with them, but at this time we will not be accepting this change. If you have specific instances where customers are getting confused by how we currently describe the playground, please don't hesitate to reach out and we can work to improve the docs in this area.


Create uol.txt

sorry I deleted the head repo. of my first pull request. here I submit again. thanks!

@s-orey First stage of verification passed, official domain is uol.de as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@s-orey Thank you for your patience while waiting for a review and processing your request. Pull request merged.

Thank you!


Fix quick_setup after moving roles here

This PR fixes #106
Fix #106

@ferrarimarco can you check ? I could merge, but I have introduced other changes with respect to your original PR... and I cannot assign the review to you again :-)


Do not call System.nanoTime() in ReadTimeoutHandler.channelRead()

Motivation:
We mitigate callouts to System.nanoTime() in SingleThreadEventExecutor
as it is 'relatively expensive'. On a modern system, tak translates to
about 20ns per call. With channelReadComplete() we can side-step this in
channelRead().
Modifications:
Introduce a boolean flag, which indicates that a read batch is currently
on-going, which acts as a flush guard for lastReadTime. Update
lastReadTime in channelReadComplete() just before setting the flag to
false. We set the flag to true in channelRead().
The periodic task examines the flag, and if it observes it to be true,
it will reschedule the task for the full duration. If it observes as
false, it will read lastReadTime and adjust the delay accordingly.
Result:
ReadTimeoutHandler calls System.nanoTime() only once per read batch.

AUTOMATED MESSAGE for ADMINS:Please verify and accept the pull request.To accept, say @netkins acceptTo build again, say @netkins buildTo whitelist the author, say @netkins whitelist

@netkins accept

@rovarga did you sign the ICLA yet ?

LGTM.  @normanmaurer, he signed the ICLA at 2/15/2015 3:30:51

@rovarga thanks!
Cherry-picked into 4.0 (addc4413aa5538eca7ffb7d20684ccfe2ec21f6e) , (f3dcad32306aeb953d47f8ca02ef4ac1744d0436) and master (b87cb06b93947e4b2035e7fd393adad3edf1d82a)

@trustin @rovarga I think the same fix should be done for IdleStateHandler, WDYT ?


Thread safe when upload files in multiple threads or processes

Is your feature request related to a problem? Please describe.
Here are 412 errors when I tried to upload images to dataset in multiple parallel runners: https://github.com/narugo1992/gchar/actions/runs/4599743391/jobs/8125512962#step:14:272
This error is most likely caused by conflicts between multiple submissions that occur simultaneously during multi-threaded uploading.
Describe the solution you'd like
Regarding this issue, the solution I can think of is: when 412 errors are detected due to multi-threaded uploading, automatic retry can be performed (of course, considering that retrying is not always appropriate in every case, this feature can be made optional).
Describe alternatives you've considered
If a specific type of exception can be thrown when such errors occur, and a manual function for refreshing and retrying is provided, then the user can also control whether to retry or not. This solution can also be an alternative to the above-mentioned solution.
Additional context
This scenario is common when dealing with a large number of files with a large overall size, and the data needs to be automatically updated based on the timed execution functionality provided by online platforms such as Github Action. Since online runners cannot provide very large hard disk space, resources can only be generated and uploaded at the same time to reduce the cost of hard disk space. Under this circumstance, if stable concurrent uploading or processing (such as deleting) of data in the dataset can be achieved, it will greatly facilitate the deployment of automatic update functionality for the dataset.

@Wauplin One bad news is that even after I switched to using a similar retry code as mentioned above (which checks for status code 412), the problem was still not resolved. There is a high probability of encountering a 500 error when running in multi-threaded mode. Please refer to the log for more details:

https://github.com/narugo1992/gchar/actions/runs/4609583962/jobs/8146956069#step:14:167
https://github.com/narugo1992/gchar/actions/runs/4610176542/jobs/8148434008#step:14:413

@narugo1992 I'm sorry you're experiencing new errors. Unfortunately the Hub is not designed to be used as a database with lots of (concurrent) updates. What you could do here is to retry the commit on both HTTP 412 and HTTP 500 errors (it's just a matter of adding 1 condition to the snippet above). However, even if you do this you will face other issues quite soon.
For example I saw that this dataset has 12k commits since 48h. In theory we don't have a limitation in the number of commits you can push to a repo. In practice it might become unusable if it has hundreds of thousands of commits (at this speed it's even 1M commits in 5 months). Idk exactly the limitations you are facing when uploading the files but I think it would be good to try to group the uploads in less commits. Is that something possible?

For example I saw that this dataset has 12k commits since 48h. In theory we don't have a limitation in the number of commits you can push to a repo. In practice it might become unusable if it has hundreds of thousands of commits (at this speed it's even 1M commits in 5 months). Idk exactly the limitations you are facing when uploading the files but I think it would be good to try to group the uploads in less commits. Is that something possible?

Thank you for the response. In fact, this dataset is currently in the creation phase and existing data is being continuously uploaded. It is expected that the total number of commits will be about 1.5k after completion, and there may only be a few hundred additional commits each month. The reason for doing this is that Issue #1411 is still unresolved. If we upload everything in a single commit, on the one hand, the hard disk space of Github Action will be difficult to sustain. On the other hand, if we split and then upload using commit, it will result in empty commits. Therefore, currently we can only upload files one by one.

Ah I see so it shouldn't be that bad after all. Having backoff on HTTP 500 should most probable resolve your problem.
About uploading 1 by 1 vs a group, I'm not sure to understand the link. It seems that you're having an helper hf_need_upload. What you can do is for each file you crawl, you check if it should be uploaded and then add it to a queue if it's the case. Once the queue reaches 50 items, you create the commit. It should most probably avoid empty commits isn't it? (or crawlers are really working in parallel and uploading the same files regularly?). If you do a queue of 50 CommitOperationAdd (i.e. 50 files), Github Action disk space should not complain too much.

About uploading 1 by 1 vs a group, I'm not sure to understand the link. It seems that you're having an helper hf_need_upload. What you can do is for each file you crawl, you check if it should be uploaded and then add it to a queue if it's the case. Once the queue reaches 50 items, you create the commit. It should most probably avoid empty commits isn't it? (or crawlers are really working in parallel and uploading the same files regularly?). If you do a queue of 50 CommitOperationAdd (i.e. 50 files), Github Action disk space should not complain too much.

This is indeed a feasible solution, but it requires the development of additional code. Therefore, I would like to inquire as to when issue #1411 will be resolved. If it will take a long time, I will redesign that part. Otherwise, I can directly use the upload_folder function to solve this problem after the issue is resolved. 😄

@narugo1992 We'll for sure work on ignoring empty commits but not necessarily on the short term. At least I can't promise when we'll deliver it. Sorry about that, I hope you'll be able to implement the workaround :)


Teradata agent controller refactor

Nit refactors

move logging initialization to main
move config module to a package
add prefix _ to private constants
add docstrings to controller __init__()
add sample controller config file

Unit tests

add basic unit tests for Controller for different action types (setup, run & kill)

To be merged after PR https://github.com/GoogleCloudPlatform/data-migration-tool/pull/5 (contains fix to avoid conflicts on tests packages)


Questions on code (ATL)

Could you answer the below questions please?

What do the following keywords in lib/ult/ult.py indicate?

i) Neg_select
ii) pos_h_boxes
iii) neg_h_boxes
iv) pattern_type
v) pattern_channel

In which file do you mention the input path for the training dataset? In this case,
'HOI-CL/Data/hico_20160224_det/images/train2015/'  ?
I executed python tools/Train_ATL_HOCO.py

Thank You.

Hi,
In this file:

The person is interacting with the glass bottle and the pipe.
There are other bottles, a grater, a scrubber, knife etc. Should I add 'no_interaction' annotations for every item for which there is no interaction? In that case, should I say no_interaction for bottle? Since, there is another bottle that is interacting.

Yes, for the other bottle (no interaction and no annotation), we currently include this no_interaction in Trainval_Neg_HICO.pkl when we have the object boxes (bottle), that's negative samples.

Hi,
Thank You for the reply. Can I train the model if I do not have Trainval_Neg annotations for the new dataset I am using?

You can train the model. But you might suffer from imbalance/label missing problem.

Hi,
Thank You for the reply.
Can you answer the below questions please?
1.

hoi_to_obj.pkl and hoi_to_verb.pkl store the co-occurence matrix in HICO-DET, i.e. which object and verb are corresponding to a HOI. the name  of the id in  hoi_to_obj.pkl and hoi_to_verb.pkl are provides in hico_list_obj.txt, hico_list_vb.txt, hico_list_hoi.txt respectively. Noticeabley, the id in pkl files starts from 0 while the id in txt files starts from 1.
prior_mask.pkl is similar to hoi_to_obj.pkl, but is for V-COCO. prior_mask.pkl is providd in previous works.
hoi_coco_list_num.txt is not required for training ATL. hoi_coco_list_num.txt just demonstrates the long-tailed distribution.

Thank You for your reply. Do I need to create 24_verbs.txt,21_verbs.txt and prior_mask.pkl for training ATL?

What is the difference between
self.num_classes = 600
and
self.compose_num_classes = 600?
in ResNet101_HICO.py inside class ResNet101()

"num_classes" are annotated class number, while "self.compose_num_classes" is how many types of HOIs you want to compose (that can be larger than self.num_classes or smaller than self.num_classes).
TIN is Transferable Interactiveness knowledge for Human-Object Interaction Detection. The weights aim at balancing the data. it is a traditional re-balance strategy for imbalance data.


Notify Ingest when new schema versions are published

Currently, Ingest Core needs to be redeployed before it's able to pull the new versions of the schema from a schema instance.

I need to double-check something on this. It seems that Core is being notified successfully but the CloudFront distribution is doing some caching on the XML file which core is consuming. And Core is not consuming the latest XML and not picking up the schema versions.

To fix the s3 listing XML caching, we've set the behaviour setting of the CloudFront distributions to
Object Caching: Customized
Minimum TTL: 0
Maximum TTL: 0
Default TTL: 0
https://aws.amazon.com/premiumsupport/knowledge-center/prevent-cloudfront-from-caching-files/
These changes were all applied to dev, staging, and prod schema CloudFront distributions.
The changes were applied to staging last week and caching is now disabled in staging.
The config changes which were just applied to dev and production may take a while to be propagated to all end locations.

Your changes don’t propagate to every edge location instantaneously. When propagation is complete, the status of your distribution changes from InProgress to Deployed. While CloudFront is propagating your changes, we, unfortunately, can’t determine whether a given edge location is serving your content based on the previous configuration or the new configuration.
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowToUpdateDistribution.html

Noted the schema to ingest flow in this doc: https://docs.google.com/document/d/1nFeTbtdPzfDF6uHm_thb5FcaWQpNRHZBMfoTHmzE3Hk/edit#heading=h.u3zgphfwgue4


Update Try out Raiden for Alderaan

Description
Currently, try out Raiden is not working as a Red Eyes Raiden node is mentioned and https://lightclient.raiden.network is on Alderaan.
The guide  needs to get updated to work for any potential tester.
Acceptance criteria

Should work with the "real" Wizard
Needs to be on Goerli

Tasks

[ ]

Done!


clarify use of the --tenant-key option in fhir-persistence-schema

Describe the bug
The usage info says it accepts a --tenant-key and we have logic in place for this option in the cli argument parsing switch construct.
However, in both addTenantKey() and allocateTenant(), we're overriding the tenantKey value unless there was a --tenant-key-file argument passed.
I believe --tenant-key is only intended to work with the --test-tenant action, but thats not too clear from the docs (either usage info printed by --help or what we have in the readme at https://github.com/IBM/FHIR/tree/main/fhir-persistence-schema#list-of-ibm-fhir-server-persistence-schema-tool-flags)
Environment
main
To Reproduce
Steps to reproduce the behavior:

setup db2
run an allocate-tenant action and pass a tenant-key value via the --tenant-key argument--prop-file db2.properties
--schema-name FHIRDATA
--allocate-tenant default
--tenant-key UldxYnBVdFNjbTY5RnRoSHZrQTVTKzdwaEN2UDlBS1dXemZ6Y1JPRlFWcz0=
--pool-size 1

Note that the --tenant-key option is ignored and the tool assigns a new tenantKey instead.
Expected behavior
I think either we should support the --tenant-key option on allocateTenant or we should more clearly document which flags are valid for which actions.
Additional context
In general, the fhir-persistence-schema tool has a lot of options that can make it difficult to use / understand.
I thought we had a placeholder to consider what we could do to make the options cleaner / easier / more obvious for users, but I think I must have just been thinking of #3072

The logic in issue #990 and PR https://github.com/IBM/FHIR/pull/996/files#diff-b4577e1635a5c980b9e41f30be0c6abcbf3fe5e6915b118fd319963bdac70a78R852-R858
Was to check if the tenant-key-file exists, else generate.
I agree with you that it should be externally set.

I actually like that we will generate one for you.  My concern is mostly with managing the many options for the schema tool.  Certain flags only work with certain actions.  Some actions can be combined and some cannot.  I'm not sure how to best document it all, but I think we could do better.

we should probably also clarify the relationship between what the tool outputs for tenant key and how to pass it back in.  e.g. from the docs:
--tenant-key "<the-base64-tenant-key>"

answer:  the output is already base64-encoded, no need to re-encode

this entire flag is going away as part of #3803


Disable default scrollIntoView behavior

#631 introduces a small issue with scrollIntoView where the page would scroll to display the items list. This is already handled by the Popover being displayed above or below the input, depending on the available space.
Before:

After:

This simply disables the scrollIntoView default behavior.

Can we merge this? This issue is actually pretty annoying.


Event Hub downtime when changing minimum TLS

Could you reflect to the document that there's no downtime when changing the minimum TLS?
https://learn.microsoft.com/en-us/azure/event-hubs/transport-layer-security-configure-minimum-version#create-a-template-to-configure-the-minimum-tls-version

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

ID: a501020e-2e00-811b-4d80-a883f5c8b89d
Version Independent ID: 21ce62bd-a536-b141-863a-ca8dab35b16f
Content: Configure the minimum TLS version for an Event Hubs namespace - Event Hubs
Content Source: articles/event-hubs/transport-layer-security-configure-minimum-version.md
Service: event-hubs
GitHub Login: @EldertGrootenboer
Microsoft Alias: egrootenboer

@himachida
Thanks for your feedback! I've assigned this issue to the author who will investigate and update as appropriate.

Unfortunately, haven't used GitHub issues in a while, and no longer accept new issues. I'm not sure how this item came in. We switched to the content feedback system atop each page.
#please-close


Created a css error regarding font-style

This should produce a super-linter error regarding font-style in styles/branchlevel.css.

If any group members are coming to this later, this isn't to be fixed or merged; it's just to get the super-linter bug report.


Fixed #15091 -- Allowed passing custom encoder to JSON serializer.

https://code.djangoproject.com/ticket/15091

Add a mention in the release notes please.

merged in c1b6f554e405fe733e8d80f7e3d77c277810e707, thanks!


Service provider publishes

First of all thanks for the package!
Since most of my projects are using database UUIDs I've added publishing for migration files which makes editing the user_id column far easier.
Also most packages don't use an own config file group for configuration files (tusupload-config -> config). What do you think of this change?

Everything looks good. Merging in.
Thanks


Fix allowed_clock_drift on the validate_session_expiration test

Status
READY
Migrations
NO
Description
The allowed_clock_drift parameter was removing valid time from the test instead of padding it with extra time.
If assertion sets SessionNotOnOrAfter as 11:30am
and the test is padded with an allowed_clock_drift of 1 minute,
I would expect these results:
at 11:29 = test passes because it's before
at 11:30 = test passes because the allowed_clock_drift gave us an extra minute
at 11:31 = test fails because it's on the expiration time, so add an error
at 11:32 = test fails because it's after the expiration time, so add an error
Related PRs
List related PRs against other branches:
none
Todos

[x] Tests
[x] Documentation (no documentation necessary)

Deploy Notes
This is a bug fix which requires no additional migration or settings change.
Steps to Test or Reproduce
Run the validate_session_expiration check on an assertion that expires shortly and it should pass.  Now if you pad the same test with an allowed_clock_drift of 3000000 minutes, the test should still pass.  Before it was failing with a huge padding because the allowed_clock_drift removed valid time.
Impacted Areas in Application
List general components of the application that this PR will affect:

The validate_session_expiration validation on the Response will be affected for anyone using the allowed_clock_drift option.

@sthanson  Thanks for contribute