Controlling max parallel jobs per pipeline

What is the way to control concurrency? The pipeline has 100 independent steps. But I don't want them to run all 100 together.  For different pipeline run, I wish to adjust the concurrency as well.

There isn't a configuration for this today, but it should be possible if there's demand and the use cases make sense.
In the meantime you can run pipelines in a namespace with a resource limit such that no more than X CPUs are available to tasks, and those over the cap will queue until others finish. If you're just trying to limit the resource footprint this is likely the best way to express the limitation.
Can you give more details about why you want to limit concurrency of tasks?

Using Kubernetes resource-wise limits is one of the ways. But which pretty hard to achieve due to the kind of resource limits that I have to dynamically do, based on different aspects.
In my pipeline, we are loading 100 of DB dump to a new database, for creating a new environment from a seed database instance. All the jobs can run parallel, But if we run that the DB instance. from which we taking will be chocked out and cause connection limits error.
Controlling concurrency if well needed for an CI-CD system, where though all can be run in parallel, the user should get an option to control due resource limitation/availability.
Note: Currently I have achieved it using our consul server, and using consul-cli to wrap the run script on a shared key and concurrency. eg Snippet below.
consul lock -n ${concurrency} -child-exit-code ${jobkey} "bash $script $@"

There are few problems in this case:

Pods are already started running, so total run time to completion will be wait time + runtime of the script
Not easy to configure using pipeline run args, need to modify my script to achieve concurrency control

But the same can be directly added as a feature to tekton to use a  semaphore and lock max concurrent jobs, on pipelinerun and create pods only after the locks are aquiired.

@ImJasonH  I could contribute to this if someone can give me some hints on the code structure as well as the standards to follow, plus any other technical issues if exists, which will conflict against this behaviour

Thanks, I think this seems like a reasonable addition, and would be happy to help you with it.
First, what kind of API addition are you envisioning? What's the minimum addition we can add that we could extend later if we need to? Is there any precedent in other workflow tool we could borrow/steal from?
Depending on the size of the change, we'd probably ask for a design doc answering those questions, and describing the use case (which you've done above, thanks for that!)

At first glance, I think a property in pipelinerun or|and pipeline resource named concurrency
concurrency if defined should be a value gte 0. Zero, can make the pipeline to pause between run, any positive value will set the max parallel that can be triggered. If no value set, all possible will run in parallel.
Initial version for this feature can be just concurrency field in the pipeline run. I am not sure exactly similar feature that we can borrow, But GitLab has runner concurrency that a user can set per runner.

I think this can be solved by using a Pod quota for the Namespace.

One way of handling this is by using a Pod quota for the Namespace.

Of course, you have an option from Kubernetes resource limits as you mentioned, but not always practical.  For example, In my namespace, I am not just using the only tekton. And configuration and usability point of view, using pod quota is much more complex than using a value of max parallel in pipelinerun

@ysaakpr Configuring pipeline-wide concurrency limits definitely seems easiest, but I wonder if that's expressive/powerful enough to satisfy more complex use cases. We should explore other options, even if only to be able to dismiss them with well thought out reasons.
Consider a pipeline that does two highly parallelizeable things (e.g., initializing a database, then later deploying code to multiple AZs), but each of those parallelizeable things have different concurrency  caps -- it might make sense to kick off 1000 init-db tasks at once, max 100 at a time, then later in that same pipeline kick off 10 deploy tasks, max 3 at a time. Configuring concurrency: 100 at the pipeline level wouldn't help limit the second group of tasks. A user could manually configure their pipeline to perform 3 deploy tasks in parallel, then the next 3, etc., but that's exactly the kind of manual configuration we're trying to avoid -- they also could have manually configured the pipeline to do 100 init-db tasks in parallel, then the next 100, etc., today, but that's toilsome.
(To be clear, this example isn't reason enough by itself to discount the pipeline-wide concurrency config, but it's worth considering and at least explicitly acknowledging this shortcoming.)
One way to express the different concurrency levels would be to group tasks together, then express concurrency limits per-group. Is that worth the additional config required to express/understand/visualize this grouping? I'm not sure. Would it be possible to support group-wise limits and pipeline-wide limits side-by-side? I truly have nothing to offer but open-ended questions. :)

@ImJasonH  that's a good thought. There are already two other tickets for Task grouping in a pipeline, which actually discussing the pipeline task grouping
https://github.com/tektoncd/pipeline/issues/2592 and https://github.com/tektoncd/pipeline/issues/2586#issuecomment-625941044.
As you mentioned, the idea of concurrency should not be limited to just at the pipeline level. I agree/accept that for a more complex pipeline, configuring this at group of task-level would be an always amazing feature.
Pipeline level concurrency will be the max possible/default concurrency. And task group level concurrency can be used to fine-tune it further.

/kind feature
/area api

/priority important-longterm

How could I contribute on this, Are there any discussion forum? Where I can also be part of the design/implementation discussions.

+1 for this feature.
I am also looking for something similar and open to contributing to any discussions/design/code.

See also https://github.com/tektoncd/pipeline/issues/2828.

I think it would not be so difficult to add logic for this.
e.g. right before we create a TaskRun - we could check if we have less than X uncompleted TaskRuns  or else omit creating a new.
later when a TaskRun is completed, the PipelineRun will do the reconciliation again, and the creation of a TaskRun will be re-evaluated.

/remove-lifecycle rotten
/remove-lifecycle stale
/reopen

I want to add the following use case that might be included above, but I want to make it clear, that that's an important part for our CI/CD.
Say, we have a task that is used in many pipelines.  That task has a concurrency limit.  It would be great to honor that limit across concurrent pipelineruns.

Controlling max taskruns: https://github.com/tektoncd/pipeline/issues/3796

Related issue in experimental: https://github.com/tektoncd/experimental/issues/699

Related approval task issue: https://github.com/tektoncd/experimental/issues/728

/remove-lifecycle rotten

/lifecycle frozen

Hi all, Is there any stable solution available in Tekton to attain Concurrent build for pipelines?
I have gone through many issues/ideas raised with the community relevant to this but not get any exact solutions for the same.
https://github.com/tektoncd/pipeline/pull/6112
https://github.com/tektoncd/pipeline/issues/1305
https://github.com/tektoncd/pipeline/issues/2134
If anyone have any views or any latest update on this open issues added on Tekton Community Roadmap- https://github.com/tektoncd/pipeline/issues/2591 Pls update here accordingly.

A google search for controlling the parallel jobs per pipeline brought me here :)
I +1 that this would be extremely handy, looking forward to see this on the roadmap!

what is the best approach for now ?

what is the best approach for now ?

I am checking on a shell script ... something on these lines
check_job() {
  pipeline_run_name=$(kubectl get pipelinerun --sort-by=.status.startTime | grep -E '<pipenline_name>' | awk 'END{ print $1 }')
  kubectl get pipelinerun $pipeline_run -o<EMAIL_ADDRESS>== "Running")].reason}'
}

1 for this, it would be super useful.

Another similar feature would be cancel pipelines based on other types of pipelines running.


add linked headers

Implement the possibility to have linked headers in articles.
Feature requested in #7

Hi @IdiosApps, if you don't mind reviewing this, I'll merge it and then you can have your linked headers ;)
I'm not sure why I cannot see it on the deployment preview, but I do get them on my localhost.


hertz-jwt , how to get token from request body?

Is your feature request related to a problem? Please describe.
Yes, if the front-end uses the multipart/form-data method to send the token, I cannot use the four methods of hertz-jwt to obtain the token. Should we add the method to obtain the token from the request body?
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
When i want to get token from request body...
Describe the solution you'd like
Add the method to obtain the token, except  header, query, cookie and param.
Describe alternatives you've considered
none.
Additional context
none.

refer to https://github.com/hertz-contrib/jwt/pull/14


s390x: fix ecx derive

Derivation via ecx-methods did not properly set the length.  Make the code more similar to common code and set the length property.
Signed-off-by: Juergen Christ<EMAIL_ADDRESS>
Checklist

[x] tests are added or updated

You seem to not have the e-mail address you use for commits set on your github account which causes the CI to think that you did not contribute to OpenSSL yet. This means we always have to approve the CI runs. Could you please set the e-mail you use for the commits as an alternative e-mail address in github? Hopefully that should fix this problem.

You seem to not have the e-mail address you use for commits set on your github account which causes the CI to think that you did not contribute to OpenSSL yet. This means we always have to approve the CI runs. Could you please set the e-mail you use for the commits as an alternative e-mail address in github? Hopefully that should fix this problem.

Thanks for the hint.  Did not even notice that.  I did set the address now as secondary.  Due to internal constraints I cannot set it as primary.  So hopefully setting it as secondary is enough.

Setting it as secondary e-mail is sufficient. Thanks.

This pull request is ready to merge

Merged to master and 3.0. Thank you.


Tests fail under Python 2 but are not detected as such.

@metasim
One point of order.
Travis build passes but it never actually runs the Python tests. It dies on trying to import pathlib. which I suspect means it is actually running python 2.7, but not sure.
So two issues there

make the python tests correctly return as failed.
more travis tweaking to run on python 3 if that's what we want.

https://travis-ci.org/locationtech/rasterframes/builds/541817162#L4430-L4434
Originally posted by @vpipkt in https://github.com/locationtech/rasterframes/pull/133#issuecomment-499501864

Duplicates #135

Smells like #40

oooof! Looks like I accidentally killed the functionality we had to detect this.
Need to reinstate this:
https://github.com/locationtech/rasterframes/blob/405c35e6d0ecb5282523805c89c34ca76a334756/pyrasterframes/build.sbt#L161-L207


Introduce recordbot to record stream directly

The current official recording solution is livekit-recorder, but it wasn't suitable for our use case to save individual video track. The existing recorder composites the videos even if it's a single video stream, and it consumes considerable resource which does not scale well for our needs.
Our solution is to read from the RTP packets and save them to file without any processing in between. As an add-on, we were able to upload to S3 afterwards, although there needs more documentation for setting up the IAM role and attaching to the EC2 instance or similar instances.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Nice work! Thank you

Thanks for your comprehensive feedback @davidzhao ! I’ll work on this over the weekend and update you next week :)

Hi @davidzhao , I've incorporated the feedback in your review in my latest commit. Please let me know if you have further feedback ! The dual track recorder is not something our company is interested in, so I'll be working on it in my free time. ETA is about 2 weeks within my comfort zone. Apologies if it'll take slightly long considering there's a growing interest in this.

Hi @davidzhao , I've incorporated the feedback in your review in my latest commit. Please let me know if you have further feedback ! The dual track recorder is not something our company is interested in, so I'll be working on it in my free time. ETA is about 2 weeks within my comfort zone. Apologies if it'll take slightly long considering there's a growing interest in this.

no rush at all :) you are helping a lot of people with this implementation. I appreciate it!

Hi @davidzhao , I've pushed my change regarding the empty-struct channels. Thanks for your feedback, overall the code looks cleaner now without WaitGroup. I tested the changes locally on my recordbot service, and it still works.  Let me know if you need further changes.

hey @dwirya, running the tests here and I'm seeing it hang. Could you also give me write permissions to this repo? I have a cleanup change that's easiest if I just push to the branch.

@davidzhao thanks for testing it out! I haven't encountered it but that's because I haven't considered all cases. I'll have a look once you've pushed the changes; I also have some cleanup changes for the recorder.

Any updates?

Currently there are 2 deliverables for this feature:

Docker service that can manage recording when hitting /recordings/start and /recordings/stop given the room name. Generated file name can be configurable via YAML, but this will take some time. The default is {identity}_{start-timestamp}. It’s also uploadable to S3 by specifying the region, bucket and optionally, directory. This is what our team is using in production.
Integration into LiveKit Go SDK. This is a much more flexible approach, which is what this PR is about. Currently, we’re waiting on a jitter buffer implementation to handle out-of-order packets from LiveKit’s team and we can close this PR.

@elhe26 can you clarify what you meant by saving records using S3 ? Are you referring to uploading it to S3 without saving it to a local file ?

I think I can get the Docker service up by next week if you wanna try it out @elhe26 . Currently I’m doing some major rewrites to make the recording hopefully more stable

@dwirya We're planning on using DO spaces to save the streams. A general approach regarding documentation, where you can specify a general configuration (region, bucket, etc...) for S3 compatible providers (DO, Wasabi, Blackblaze, etc...).
Is there a way to start and stop recordings programmatically using docker?

@elhe26 I haven't looked into DO and the likes, but the S3 uploading is using aws-sdk-go-v2. However, seeing https://stackoverflow.com/questions/58622647/how-to-upload-file-into-wasabi-bucket-with-s3-api-with-node-js, it seems that it's very possible: I just need to add an environment variable such as AWS_S3_ENDPOINT or so.
The way to start and stop recording programmatically is to hit the /recordings/start and /recordings/stop POST endpoints with the payload { "room": $room_name }

@dwirya, are you managing the container using k8s or as a standalone?  I'm trying to wrap my head here. You're using server-sdk-go inside a container, right?

I wanted to use K8, but ditched it in favour of standalone. Essentially, I'm running it in an EC2 instance. The container image is a Go application that uses server-sdk-go. I don't think K8 is a good fit because we need to store the recordings locally before uploading to S3. I'm still new to K8, but I think K8 is more suitable for stateless applications such as API server.
Another idea I've been toying around with is streaming directly to S3 (which @davidzhao recommended), skipping the need to save files locally, which makes K8 a good choice. However, I can only think of the possibility for raw files (video .h264, .ivf and audio .ogg) which I don't think browsers support. For any container files (.webm, .mp4), we should be using ffmpeg or gstreamer instead of rolling our own media writer, but using those require saving the files to local disk.
If you have further suggestions for deployment, we can take this offline on Slack. But presently, using standalone works for my team.

I'll be doing some major rewrites, mainly around the API and also incorporating sample buffer. The reviews here will be implemented in the commits for the rewrite

Have created a PR #40 for jitter buffer integrated for record track.

Closing as it's stale and there were significant changes in the SDK. Will reopen a new PR


squid:MethodCyclomaticComplexity - Methods should not be too complex

This pull request is focused on resolving occurrences of Sonar rule squid:MethodCyclomaticComplexity - Methods should not be too complex.
squid:S134 - Control flow statements "if", "for", "while", "switch" and "try" should not be nested too deeply.
You can find more information about the issue here:
https://dev.eclipse.org/sonar/coding_rules#q=squid:MethodCyclomaticComplexity
https://dev.eclipse.org/sonar/coding_rules#q=squid:S134
Please let me know if you have any questions.
George Kankava

Sorry resubmitted pull request with unchanged method names. Will fix this and reopen it.


Allow channel masking for input images and re-use pixels for independent images

We do have a mix of R (SDF), RG (2-component-SDF), RGB (opaque) and RGBA images (transparent) texture sources.
It would be nice if free-tex-packer could pack each color channel independently, thereby potentially overlapping up to 4 separate grayscale images. Say grayscale_image1.png would end up in R channel at (0,0); grayscale_image2.png would end up in G channel at (0,0), etc.
I know that this would significantly complicate the algorithms in free-tex-packer, so it might be out of scope.
I still hope that it is considered for future revisions, future projects, or that someone in the comments can recommend tooling which can already do this.
(Specifically, I need this in the CLI version, but I assume this issue tracker goes for both)

This is a very rare feature. I can suggest you to fork the project and implement the required functionality.


fix: episode progress tracking across seasons

Description
Fixed an issue where watching an episode would incorrectly mark all episodes with the same number across different seasons as watched. For example, when a user watched part of an episode (e.g., S22E1), all Episode 1s across different seasons would incorrectly show the same progress.
Changes Made
Updated the episode matching logic in EpisodeCard.kt:
val episodeProgress = watchHistoryItem
    .episodesWatched
    .find {
        it.episodeId == data.id &&
        it.seasonNumber == data.season &&
        it.episodeNumber == data.number
    }

Fixes #136
Checklist:

[x ] I have followed the Conventional Commits guidelines for all my commits.

Example of a Conventional Commit message: feat: add new feature to enhance user experience

don't mind the pr check, the current commits are not buildable


remove invalid noexcept declarations

Scope & Purpose
Remove potentially dangerous noexcept declarations in functions that use dynamic memory allocation.

[x] Bug-Fix for a released version (did you remember to port this to all relevant release branches?)
[x] The behavior in this PR can be (and was) manually tested (support / qa / customers can test it)

Testing & Verification
This change is a trivial rework / code cleanup without any test coverage.
https://<IP_ADDRESS>/view/PR/job/arangodb-matrix-pr/7523/

Jenkins broken, so starting another PR run:
https://<IP_ADDRESS>/view/PR/job/arangodb-matrix-pr/7530/

Tests blue


one shot Replication fails on CBL

CBL - 2.0- DB 22 -> Android build  Android 299
client -> Android
sg -> 2.0.0- 773
###Steps to reproduce :
Create CBL DB and create bulk doc in CBL
2. Configure replication with valid values of valid cbl Db, valid target url
3. Start replication with push and pull
4. update docs in sync-gateway
5. Verify docs which got updated at step 4 is not replicated to CBL.
###Result : docs got replicated to CBL though it is one shot
###Logs : https://gist.github.com/sridevi-15/b9c630943a9e9ddad4ee4a5a681cd1a5
Test code : https://github.com/couchbaselabs/mobile-testkit/blob/feature/cbl20-ver1/testsuites/CBLTester/CBL_Functional_tests/test_replication.py#L48
test_replication_configuration_valid_values -> all parameter with continuous false is failed.
Note: passed in iOS

closing this ticket as android server API is always setting continuous as true. Fixed the API and worked fine


fix: fix pydantic validation error

When passing result_as_answer=True, it will return ToolOutput so it won't pass pydantic validation as a string.

Get content of ToolOutput before return.

Disclaimer: This review was made by a crew of AI Agents.
Code Review Comment for PR #151
Overview
This pull request addresses a critical Pydantic validation error within the LlamaIndex tool implementation involving the result_as_answer flag. The change ensures that when result_as_answer=True, the tool extracts the content from ToolOutput before returning it, thereby addressing a significant compatibility issue.
Key Changes
The primary modification introduces a conditional check to extract the content from the tool output:
if self.result_as_answer:
    return tool(*args, **kwargs).content
return tool(*args, **kwargs)

Positive Aspects

Fixes Validation Issues: Correctly resolves a Pydantic validation error by returning the expected string content instead of the object, thus making the output compliant with expected data types.
Backward Compatibility: Maintains the functionality of the existing tool, ensuring that it continues to work as intended for cases where result_as_answer is False.
Conciseness: The approach is straightforward and effectively targets the specific problem without unnecessary complexity.

Suggested Improvements

Error Handling: The current implementation lacks error handling when accessing the .content property. It is recommended to implement a try-except block to catch potential AttributeError:
def _run(self, *args, **kwargs):
    from llama_index.core.tools import BaseTool as LlamaBaseTool

    tool = cast(LlamaBaseTool, self.llama_index_tool)

    try:
        result = tool(*args, **kwargs)
        if self.result_as_answer:
            return result.content if hasattr(result, 'content') else str(result)
        return result
    except AttributeError as e:
        raise ValueError(f"Unable to extract content from tool output: {e}")

Type Hints: Adding type hints to methods would greatly enhance clarity and maintainability:
from typing import Any, Union

def _run(self, *args: Any, **kwargs: Any) -> Union[str, Any]:
    # Implementation...

Documentation: Incorporating a docstring for the _run method will improve user understanding of the method's behavior:
def _run(self, *args, **kwargs):
    """Execute the LlamaIndex tool with the given arguments.

    Args:
        *args: Positional arguments to pass to the tool
        **kwargs: Keyword arguments to pass to the tool

    Returns:
        str: The content of the tool output if result_as_answer is True
        Any: The raw tool output if result_as_answer is False

    Raises:
        ValueError: If content cannot be extracted when result_as_answer is True
    """

Additional Recommendations

Unit Testing: It is crucial to implement unit tests to validate the changes made in this PR. Tests should account for both cases where result_as_answer is True and False:
def test_llamaindex_tool_result_as_answer():
    # Test with result_as_answer=True
    tool = LlamaIndexTool(result_as_answer=True)
    result = tool._run()
    assert isinstance(result, str)

    # Test with result_as_answer=False
    tool = LlamaIndexTool(result_as_answer=False)
    result = tool._run()
    assert not isinstance(result, str)

Logging: Adding logging functionality can greatly aid in debugging and tracing execution flow:
import logging

def _run(self, *args, **kwargs):
    logger = logging.getLogger(__name__)
    logger.debug(f"Executing LlamaIndex tool with result_as_answer={self.result_as_answer}")
    # Implementation...

Conclusion
The changes made in this PR effectively resolve the critical Pydantic validation issue present in the existing implementation of the LlamaIndex tool. However, adopting the suggested improvements—particularly enhancing error handling, introducing type hints, improving documentation, and adding comprehensive testing—will significantly enhance the robustness and maintainability of the code.
Additionally, I encourage reviewing similar historical PRs for insights on potential pitfalls or best practices that could further bolster this implementation. Although specific related PRs could not be fetched, looking into the evolution of the llamaindex_tool.py file could provide valuable context for future modifications.

Great catch!


Multithreading is slow compared to multi process

Hi,
We have a python web app running on ACS using K8s. While doing performance testing we are realizing that our Redis response times are better when we have more python processes with less worker threads vs more worker threads and less processes.
Machine is octa core - 28GB ram machine.
OS is "Ubuntu 14.04.4 LTS"
We are using a connection pool per process with no maximum connection limits. We are using this constructor  -
redis  = StrictRedis.from_url(
<redis_url>,
db=0
)
The test setup has a simple REST api which does a ping() to redis. We use apache benchmark to load test that api (ab -n 10000 -c 600 -k  )
The two configurations we are testing -
120 pods (processes) and 16 unicorn workers (threads) -
95% redis response time - 6 ms
max created connections per process - 9
12 pods (processes) and 160 workers (threads) -
95% redis response time - ~70 ms
max created connections per process - 14
I have already checked the ulimits of our machine, cpu/ram usage and nothing is of an issue. Network IO is also not that different in both cases.
I dont think GIL should be an issue as this is network IO. Also from more debugging logs i can confirm that time taken is more in read_response() and not in connect().
One thing is was expecting was that with less number of processes, number of _created_connections should have gone up by same proportions, but that does not seem to be the case. There is just a marginal increase. Just 9 to 14
We want to ideally have less number of processes to have better dev ops management (deployment latency, monitoring etc.)
Any guidance on why more processes is helping better performance then more threads ?

@moagarw
I am not so sure, but i think it is another GIL issue, more threads, more conflict on GIL, and then more time wasted on waking threads and check.
I found an article explains it well link
time taken is more in read_response() and not in connect().
Actually connect only create a TCP connection while read_response will wait for response from redis and parse it.
number of _created_connections should have gone up by same proportions, but that does not seem to be the case.
I think it is the effect of connection pool.

@NoneGG : for a given load if 120 processes system creates approximately 11 * 120 redis connections .. should not for given 12 process system, number of connections be 110*12 ?? Since there is no maximum connection limit set, why the size of connection pool is not increasing  with lesser number of processes and same input load. I think the system downgrade is happening because of less number of overall redis connections getting created in the later case.
Also from what i have read around GIL, for CPU intensive systems, GIL is a problem and multiprocessing is preferred over multi threading but for IO intensive systems GIL is not a problem. Is not thats why gunicorn/gevent are popular in python world.

@moagarw For better understanding of the GIL/thread/multiprocessing problem i would suggest that you watch the video talks from Dave Beazley about python and gil. He goes through this in detail and compares solutions to each other and why they behave the way they do.
The 2 best i know is https://www.youtube.com/watch?v=Obt-vMVdM8s and specially this one https://www.youtube.com/watch?v=MCs5OvhV9S4

I dont think GIL should be an issue as this is network IO.

Have you profiled this? You may be spending a lot of time encoding commands and decoding responses, hence using CPU, hence the GIL is your limiting factor. Using hiredis might help speed up response parsing, fwiw.


Example of multiphase optimization

Is there an example that shows a successful multiphase optimization? Delta III is not yet solvable.
From an issue I saw it was possible to leave the start/end time as a variable, but that a problem can become unsolvable. Would just stating start and end time be an issue when considering multiple phases?

Thanks for pointing this out. This will be a good type of problem to discuss in greater detail in the documentation.
I've added a new example to illustrate this: https://github.com/brocksam/pycollo/blob/main/examples/multiphase_point_move/multiphase_point_move.py
In this example there are two phases, A and B, and an endpoint constraint is used to enforce that the final time of A is equal to the initial time of B, i.e. they are consecutive. Other endpoint constraints are also used to enforce continuity in the dynamics (positions and velocities) at the adjacent boundary of these two phases too.
The final time of A, initial time of B, and final time of B are all left as variable, by setting non-equal lower and upper bounds for each of them. If you wish to fix the problem final time (i.e. the final time of B) then you can replace the lower-upper bound pair list with a constant (or set both the lower and upper bounds in the pair equal). If you wish to fix the time of the phase boundary (i.e. the final time of A and the initial time of B) then you can do the same to the bounds of both the final time of A and the initial time of B while also removing the endpoint constraint (and its bound of 0) that enforces them to be equal.
I hope that helps. If anything is unclear, or you have follow up questions, please let me know.

I do not, which is very weird. Have you edited anything in the file at all or are you running exactly as is from the GitHub repo? How did you install Pycollo? It may be that a new release is needed if you've installed from conda-forge.
In the meantime, you can hopefully get this to work by turning off the adaptive mesh refinement as it's not strictly needed, especially for a problem still simple. If you add
problem.settings.max_mesh_iterations = 1

before calling
problem.initialise()
problem.solve()

that should terminate the solve without mesh refinement before this bug is encountered.

The update to pycollo 0.1.6 solved the error.
The piece of code suggested also worked in 0.1.5

problem.settings.max_mesh_iterations = 1


Update platforms.md

This is one of three changes intended to clarify Azure Monitor support and reduce CSS tickets re unsupported SDKs.

@DawgFan : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


Add assign parameter to create_nodes_for_key()

This way all the work can be moved to create_nodes_for_key() from emplace() or insert_or_assign().

Not possible.


Provide fully functioning demo code

It would be nice to have a code example with a fully functioning app, showing some different layouts and customizations, like removing the microphone icon, placing a floating search bar just like the Google Maps app, with a CoordinatorLayout and etc.

Again. No. But I will add more to Readme soon.

Ok, thanks anyways :)


monorail road speed not showing right value

Describe the problem
monorail road speed not showing right value, as shown in:
https://steamcommunity.com/sharedfiles/filedetails/?id=3017886125
it should be 50, like in this picture:
https://steamcommunity.com/sharedfiles/filedetails/?id=3017886151
Steps to reproduce
build a segment of "monorail tracks on four-lane road",
click on TMPE icon, will show the wrong speed 70, but it should be 50.
Thank you.
Log files

Savegame?

Screenshots?

Notes or questions?

It's because general speed limit view (single icon per segment) shows average speed based on all lanes. Use per-lane mode to see more accurate value

Ok I understand now, thanks a lot.


Scheduling value and ramped changes in a signal

Hi,
I'm trying to make an effect where a synth's frequency value jumps and ramps between various values - e.g. starting at 400 and ramping to 800, but halfway through jumping from its current value to a different value, and then continue to ramp. Right now I'm doing this:
synth.triggerAttackRelease(400, 1)
var now = Tone.now()
var slop = 0.001
synth.frequency.rampTo(650, 0.5, now)
synth.frequency.setValueAtTime(500, now + 0.5 + slop)
synth.frequency.rampTo(800, 0.5, now + 0.5)

This works more or less, but for more complicated cases the code gets pretty hairy, and if the slop is too small then things start to fail randomly.
Is there an easier way to do this with a TimelineSignal? From reading the docs and the source, it looks like I could use a TimelineSignal to drive the frequency parameter, and then if I set a value in the middle of a ramp it would magically work out the intermediate values for me. Something vaguely like this:
var freq = new Tone.TimelineSignal().connect(synth.frequency)
freq.value = 400
freq.rampTo(800, 1, 0)
freq.setValueAtTime(500, 0.5)

But in practice, connecting a TimelineSignal to other parameters doesn't seem to do anything, and I can't find any docs or comments that show how it should work.
Am I missing something obvious, or is this not the way to go about things?
Thanks!

What you're describing is possible with both Signal and TimelineSignal. TimelineSignal will give you the added ability to know scheduled values in the future, which is useful if you're trying to cancel and schedule a new ramp without any discontinuity.
rampTo is for immediate ramping of values, it sets the current value of the signal (using setValueAtTime) and then ramps from there using (linear or exponential)RampToValueAtTime. So what you're describing in your first example should be written as:
synth.frequency.rampTo(650, 0.5)
synth.frequency.setValueAtTime(500, now + 0.5)
synth.frequency.exponentialRampToValueAtTime(800, now + 1)

That will ramp from the current value to 650 for a half second, then immediately jump to 500 and then from there ramp to 800.
I used exponentialRampToValueAtTime in the second case because rampTo is going to schedule an unnecessary setValueAtTime with the wrong value; Signal does not compute future values, only TimelineSignal does that, so when Signal schedules the second rampTo it is based off of the current value of the signal (440 or whatever your starting value is) not the computed future value of the signal (in this case 500).
If you use TimelineSignal, you could just write it in the above way or how you wrote it in your first example because the second invocation of rampTo will compute the future value:
var timelineSignal = new Tone.TimelineSignal(440).connect(synth.frequency)
var now = Tone.now()
timelineSignal.rampTo(650, 0.5, now)
timelineSignal.setValueAtTime(500, now + 0.5)
timelineSignal.rampTo(800, 0.5, now + 0.5)

The reason that your second example probably wasn't working is most likely because the time values that you put given (0 and 0.5) had already passed. You want to schedule it relative to the AudioContext's current time (i.e. now).
I hope that clarifies things a little.

Thanks, got things working now!
I was overlooking that TimelineSignal doesn't have a rampTo method, so those calls were falling back to the Signal method and behaving differently from TimelineSignal's other ramp methods.


Add file-evening to hadoop pre-process

Currently, pre-process only allows users to set max.num.records. Now, what may happen is that we may have very skewed segment sizes if there is a tiny remainder in the segments.
This PR still guarantees max.num.records is the upper bound of record sin a segment but fixes the possible skew by calculating approximately-even segment record numbers prior to mandating the number of records that go into a reducer.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@ac1f387). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #4500   +/-   ##
=========================================
  Coverage          ?   65.46%
  Complexity        ?       20
=========================================
  Files             ?     1068
  Lines             ?    55503
  Branches          ?     8070
=========================================
  Hits              ?    36335
  Misses            ?    16533
  Partials          ?     2635

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 ac1f387...d3eb5e6. Read the comment docs.

others have benchmarked - MapReduce
When I use MapReduce job to iterate through all the records it completes in less than 2 minutes for about million records

others have benchmarked - MapReduce
When I use MapReduce job to iterate through all the records it completes in less than 2 minutes for about million records

So for 1 billion records, we need to wait for 2000 minutes (more than 1 day) just for the count?


Error when used in webpack

I can't seem to load the plugin when using webpack as my app-bundler.
These are my configs:
webpack.config.js
module.exports = {
  entry: {
    'aurelia': ['aurelia-bootstrapper', 'au-table']
  }
}....

main.js
aurelia.use.plugin(PLATFORM.moduleName('au-table'));
The error I get upon app-startup

Error: Unable to find module with ID: au-table/au-table
at WebpackLoader. (http://localhost:3000/app.js:11943:35)
at step (http://localhost:3000/app.js:11792:23)
at Object.next (http://localhost:3000/app.js:11773:53)
at http://localhost:3000/app.js:11767:71
at webpackJsonp.464.__awaiter (http://localhost:3000/app.js:11763:12)
at WebpackLoader.webpackJsonp.464.WebpackLoader._import (http://localhost:3000/app.js:11908:16)
at WebpackLoader. (http://localhost:3000/app.js:12008:44)
at step (http://localhost:3000/app.js:11792:23)
at Object.next (http://localhost:3000/app.js:11773:53)
at http://localhost:3000/app.js:11767:71

Using<EMAIL_ADDRESS>and latest aurelia version.

Nice! When will a new npm be available? :)

Now :)

Thanks! Works great! :)


[vcpkg] External file abi option

Add option to explicitly include files outside of the default set when calculating the abi of a port.
 :)


pj_tensorrt_seg_paddleseg_cityscapessota  question

Project Name
pj_tensorrt_seg_paddleseg_cityscapessota
Issue Details
Awesome work！
What does the picture in the lower-left corner of your demo mean? How is it generated?

Thanks!
I colored each pixel weighted by scores of all 19-classes, while the original PaddleSeg code outputs only one class with the highest score for each pixel using ArgMax.
For instance, scores of the pixel near border b/w person and bicycle can be like {Person = 0.49, Bicycle = 0.51}, and Bicycle is selected for the pixel. It might be correct or wrong.
So, instead of this normal way, I colored 0.49 of person's color and 0.51 of bicycles's color.
This image may have more meaning and be useful for some purposes (I don't have any idea so far, though...)
Besides, it LOOKS nice, isn't it? ;)
Note: although I wrote "score" above, the model seems output logit value so the range is not [0, 1.0]. I did some calculation to convert to weight.

Thanks for your explanation. I haven't thought of any use, but it does sound interesting.
This seems to have more details than using argmax. Is it superimposed with the original image?

No, I colored based on a black image.
This is an interesting part. I used only the output data of the model, still I can easily imagine the input image. Also, it looks this image contains necessary and sufficient information to drive !

Yes, very interesting discovery. Waiting for us to explore its usage scenarios!

This issue was closed because it has been inactive.


Added config option to disallow automining

Added a balance config option to disable obtaining the block or product via non player mining Tested in SSP and Multiplayer environments with both standard and nether variants. https://youtu.be/JNgWAdFcm40

Some formatting nitpicks before I merge:

BlockROre spacing is 4 spaces right? Not 3 spaces and not tabs. The diff looks odd.

Could you tidy up the whitespacing and general formatting? Just follow the same formatting as the other classes.

Lastly, could you squash the commits?

Sure thing go ahead and kill it and I'll tidy up and do a new one in a few
On Aug 10, 2015 6:22 PM, "Nick Ignoffo"<EMAIL_ADDRESS>wrote:

Some formatting nitpicks before I merge:

BlockROre spacing is 4 spaces right? Not 3 spaces and not tabs. The
diff looks odd.
Could you tidy up the whitespacing and general formatting? Just follow
the same formatting as the other classes.
Lastly, could you squash the commits?
—
Reply to this email directly or view it on GitHub
https://github.com/TehNut/ResourcefulCrops/pull/7#issuecomment-129632732
.

I'll post a new one once it's fixed up


WIP: Support for Prism syntax highlighter

Purpose
While highlight.js is an established project it appears that it is no longer actively maintained.
Furthermore, I had to use syntax highlighting for MATLAB which I feel highlight.js does not adequately support.
So I switched to Prism which comes closer to covering my needs and I am contributing the changes back to the theme.
In this PR I tried not to break existing functionality, so I included a new parameter highlight_engine.
It can take values highlight.js and prism, with the default set to highlight.js.
If there is interest in this we can work on the sri and version variables which I did not yet implement for prism.
Screenshots
This is how the default formatting looks for MATLAB in conjunction with the pre-existing academic.css.

Documentation

If this is an enhancement, add a link here to the corresponding pull request on https://github.com/sourcethemes/academic-www or describe the documentation changes necessary.

If there is interest in this I would be happy to contribute documentation as well.
Notes

For some reason I had to switch between .Site.Params.highlight_languages and .Params.highlight_languages in header.html:70 and header.html:72 in comparison to what we have in the highlight.js section above that. Highlight languages are under [params] in config.toml, as I believe is the default, so I would need some enlightenment on this. Would it cause any problems anyway if we leave it like that?
I messed up white-spaces, sorry...

Oops...I messed up my branches...Will submit new PR


Sign up turned off

Applied black
Added possibility to register user with e-mail from admin panel
Changed HTML of the homepage

@DimaVinnitsa Sorry, but your PR looks huge, there are plenty of file movements and other unclear things.


Write-RsRestFolderContent does not pass $Credential and $Overwrite to Write-RsRestCatalogItem. Requires RestApiVersion = 'v1.0' to work

It's three bugs in Write-RsRestFolderContent:

Write-RsRestFolderContent does not pass $Credential Write-RsRestCatalogItem.
Write-RsRestFolderContent does not pass $Overwrite Write-RsRestCatalogItem.
Write-RsRestCatalogItem Requires RestApiVersion to be explicitly set to 'v1.0'. If RestApiVersion is not set, it will crash.

Here's how I ran this script:
$params =  @{
    Path = 'C:\PowerBI'
    RsFolder = '/'
    ReportPortalUri = 'http://example.com/PBIReports'
    Credential = (Get-Credential -UserName "skfd" -Message "your password sir")
    RestApiVersion = 'v1.0' # note: this is a workaround
}

if ($VerbosePreference -ne 'SilentlyContinue') {
    $params.Add('Verbose', $null)
}

Write-RsRestFolderContent @params

Powershell version: 5.1.16299.15
Script version: <IP_ADDRESS>

and 2) are bugs. They should be fixed.

As for 3), RestApiVersion v1.0 is for SQL Server Reporting Services 2016 users only. For SQL Server Reporting Services 2017 and Power BI Report Server users, there is a v2.0 for REST API, which is supported by Microsoft (unlike v1.0).

Thank you for verifying the issues!

For SQL Server Reporting Services 2017 and Power BI Report Server users, there is a v2.0

I see that repo has branching for version one and two. Powershell Gallery version still has this issue, will use code from github, it's cool!


Repeated panels show all variable values instead of one per panel

Hi there,
This plugin is great!  Thanks a lot for taking the time to develop and maintain it!
I am building a dashboard, and trying to use a repeated panel it it using a multi-select variable:

I have a panel with the repeat option selected:

You can see that the title also includes the ${table} variable.
Here is my query:
select ingestion_date, count(*) message_count
from tcc_metrics.${table:raw}
where ingestion_date >= cast('$__timeFrom' as date)
  and ingestion_date <= cast('$__timeTo' as date)
GROUP BY ingestion_date
ORDER BY ingestion_date ASC
LIMIT 10000

If I only select one table, the query works:

If, however, I select multiple tables, then then it interpolates ${table} with a list of all of the selected tables, rather than the specific one, like this:
from tcc_metrics.${table:raw} -->from tcc_metrics.qos,connections_connection
Inspecting the query
{
  "request": {
...
          "querySettings": {
            "convertLongToWide": false,
            "fillMode": 1
          },
          "rawSqlQuery": "select ingestion_date, count(*) message_count\nfrom tcc_metrics.qos,connections_connection\nwhere ingestion_date >= cast('$__timeFrom' as date) \n  and ingestion_date <= cast('$__timeTo' as date) \nGROUP BY ingestion_date\nORDER BY ingestion_date ASC\nLIMIT 10000",
...
          "datasourceId": 1,
...
        }
      ],
...
  },
  "response": {
    "results": {
      "A": {
        "error": "Error running query: [TABLE_OR_VIEW_NOT_FOUND] org.apache.spark.sql.AnalysisException: [TABLE_OR_VIEW_NOT_FOUND] The table or view `connections_connection` cannot be found. Verify the spelling and correctness of the schema and catalog.\nIf you did not qualify the name with a schema, verify the current_schema() output, or qualify the name with the correct schema and catalog.\nTo tolerate the error on drop use DROP VIEW IF EXISTS or DROP TABLE IF EXISTS.; line 2 pos 21",
        "status": 500,
        "frames": [],
        "refId": "A"
      }
    }
  }
}

I'm wondering if the backend needs to select the correct value from the list sent over by the variable(in this case either connections_connection or qos
I'm guessing this will be easy to reproduce, but I'm happy to help reproduce it if you can figure out what is going on here.
Thanks in advance!

Hey, thanks for opening the issue! Should be fixed now.
Let me know if it still does not work for you.


CompletionWindow.Background and CompletionWindow.Foreground don't do anything.

So... I wanted to make the CompletionWindow dark, so it fits my dark theme, but the CompletionWindow.Background and CompletionWindow.Foreground properties don't do anything.
I'm not sure if that's intentional, but if so, why do these properties even exists?

After a quick look over the code, I think you would have to set the Background/Foreground properties on CompletionWindow.CompletionList, but I guess that won't work either because it seems template bindings are missing on the control template - so this is a bug.
FYI, CompletionWindow.Foreground and CompletionWindow.Background are there because of inheritance (CompletionWindow derives from Window). They don't have any effect because the ListBox within the template of CompletionList is using its default style and that is not transparent (AFAIK).

I searched some hours today how to change the Foreground of CompletionWindow because of my white text on white background issue. I'm looking forward for a qick merge of bugfix in near future. Thx


Add router.Resource

Context
Caesar is going to borrow the concept of resourceful controllers from traditional MVC frameworks it takes inspiration from. These resourceful controllers basically consist of the most common CRUD methods. The goal is to standardize the way resources are managed within the application, making it easier to understand, maintain, and expand.
A resourceful controller would implement the following

HTTP Method
Path
Controller Method
Description

GET
/<resource>
Index
Retrieve a list of resources

POST
/<resource>
Store
Create a new resource

GET
/<resource>/<id>
Show
Retrieve a single resource

GET
/<resource>/<id>/edit
Edit
Retrieve the edit form for a resource

PUT
/<resource>/<id>
Update
Update an existing resource

DELETE
/<resource>/<id>
Delete
Delete a resource

Instead of having to register them one by one in the ./config/routes.go file of a Caesar web application, it'd be better to be able to use router.Resource on any controller that implement these routes.

Implemented. Now have to add some documentation.


Tek Launcher Starts Epic Games on Launch

Ark was working before I validated files then I validated them and now when I launch ark it launches Epic Games. I don't know why this happened but if there is a fix or a way to revert what Tek Launcher did it would be great. Ty in advance.

nvm figured it out, steam had to be launched and Spacewar had to be selected.


Icon Label visibility

Great tutorial I'd just add that if you go with toggling label visibility instead of blending it by matching the ForeColor to BackColor the Click events won't be triggered on those labels

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

ID: 3ac5e066-696c-95ba-8fa1-19d8afe5dc4d
Version Independent ID: 1239320c-0e15-da0e-c6b4-72af0a8dac9c
Content: Step 3: Assign a random icon to each label - Visual Studio
Content Source: docs/ide/step-3-assign-a-random-icon-to-each-label.md
Product: visual-studio-windows
Technology: vs-ide-general
GitHub Login: @ornellaalt
Microsoft Alias: ornella

Hi @ihorbond, thanks for the call out! I removed that tip since it's not directly applicable to this tutorial (and we want the click events to be triggered in this case). Closing out this issue.


Adam Jonas review comments

[ ] why would this be different than assert left_ab == right_ba.as_int() on line 222? (https://github.com/bitcoinops/taproot-workshop/commit/05cc23c45a3281f9f63f826aaa1791cb3c56a38f#r35173523)
[ ] this looks different than the example provided in 0.2.1. Is right_ba = (b_key + a_key).as_int() not acceptable? (https://github.com/bitcoinops/taproot-workshop/commit/05cc23c45a3281f9f63f826aaa1791cb3c56a38f#r35173516)

Opening this issue to make sure these review comments aren't accidentally dropped.


updating the Getting Started course images

Signed-off-by: ahmedEid1<EMAIL_ADDRESS>
Updated:

[ ] the Labs
[ ] images for installation and working in VS-Code

Not updated:

[ ] the code snippets inside the contents of the chapters

Notes

[ ] After creating a new profile three new prompts were not in the images so added them after image073 as :

Image073-1
Image073-2
Image073-3

ps: kept the old name of the images for ease of comparison

Suggestion:

[ ] maybe the images should be reorganized such that images under the same chapter, lab, or heading in the same folder with some kind of hierarchy

Yay!

[ ]  After creating a new profile three new prompts were not in the images so added them after image073 as :

Image073-1
Image073-2
Image073-3

Maybe you want to add the accompanying steps for the images?

[ ]  zowe-cli-zos-files-list-ds-command.png and zowe-cli-zos-jobs-submit-ds-command.png

Could not duplicate them (gives me empty output) so I used the old images

If you want, you can duplicate zowe-cli-zos-files-list-ds-command using zowe files list ds "Z99998.*" and zowe-cli-jobs-submit-ds-command" using zowe jobs submit ds "Z99998.JCL(HELLO)" --wait-for-output

[ ]  maybe the images should be recognized such that images under the same chapter, lab, or heading in the same folder with some kind of hierarchy

I agree :)

Cannot leave a comment on the code changes, but L424 said that "A small dialog will open asking you for the line you wish to jump to, type 68 and press the enter key".
However, in image006, the number being typed is 25, and it might be too small at the PDF?

L472 said that "To demonstrate this, navigate to line 62 of CBL0001, which again is the declaration of the READ-RECORD paragraph."
Again the image show line 82, hmm, would it be possible for you to re-take image017 to use the Z99998's CBL0001 instead of the one at the repo? and also change the description since READ-RECORD would start at line 63 :)

L1369-1377 indicates a list of things installed with Code4z:

If you installed Code4z, the list should include:

COBOL
COBOL Language Support
Code4z
Debugger for Mainframe
Explorer for Endevor
HLASM Language Support
Zowe Explorer

It seems that some of them are no longer included/required, so maybe need to change the list.

It seems that image113.png still contains your ID

Same thing with image133, image134.
image140 seems to be CBL0001J instead of CBL0003J

image147 should be without the $ symbol, and image148 should be with the $ symbol

That should be all. I think my concern would be some of the images are quite large such that they fill an entire page (or the majority of the page)... not sure how to handle this with Markdown though

Might want to change L528 from MOVE ACCT-NO TO ACCT-N-O. to MOVE ACCT-NO TO ACCT-NO-NO. to follow the error on the screenshot.

Do you think we can fix image149, image150 and image151?
The original image is from https://publibfp.boulder.ibm.com/epubs/pdf/igy6lr30.pdf, page 280, 276, and 290 of the PDF respectively.
If not, we can left them be :)

Do you think we can fix image149, image150 and image151?
The original image is from publibfp.boulder.ibm.com/epubs/pdf/igy6lr30.pdf, page 280, 276, and 290 of the PDF respectively.
If not, we can left them be :)

Do you mean retake them or did I misunderstand?

Do you mean retake them or did I misunderstand?

Oops, my bad. I meant replacing them with a higher quality image

I think we can approve and merge this PR (@ahmedEid1 if you agree, just give me a 👍 ). As a future PR, we could also update images 107 & 108 in the Data Division chapter, images 125-131 in the File Handling chapter, images 141-145 in the File Output chapter, images 000-002 & 162-163 in the Arithmetic expressions chapter. We could use the syntax highlighting provided by the COBOL Language Support VS Code Extension to perform the update. This would make the content more familiar to those using VS Code to complete the labs.


[Translate ru] feedback -> file a bug

Check out a review request at GitLocalize

@agektmr Reviewed

:tada: This has been pushed live to https://developers.google.com/web/


Format code and fix code style

Before the end of the project, we should ensure a consistent code style throughout the project (i.e., gofmt style for all Go files, an agreed style for all CSS and HTML files and PEP 8 for all Python files).

For Python, PEP-8 and Pylint are the styles most commonly used:

https://www.python.org/dev/peps/pep-0008/
https://www.pylint.org/

Go has its own tool for ensuring a consistent code style:

https://golang.org/cmd/gofmt/

5a10b9a
Fixed indentation for CSS file.


clpeak fails for local-size not a power of two

Given a local size, which is not a power of two, all kernel-based clpeak tests fail with CL_INVALID_WORK_GROUP_SIZE, since the global work-size is not divisible by the local size.
Given this excerpt from compute_sp.cpp:
uint globalWIs = (devInfo.numCUs) * (devInfo.computeWgsPerCU) * (devInfo.maxWGSize);
uint t = MIN((globalWIs * sizeof(cl_float)), devInfo.maxAllocSize);
t = roundToPowOf2(t);
globalWIs = t / sizeof(cl_float);

The reason for this is the line t = roundToPowOf2(t) which forces the global work-size to be a power of two, regardless of whether the local size is. And since powers of two are only divisible by powers of two, enqueueing a kernel with these values fails.

True.
On which device are you seeing local-size not being power of 2?. If that is a possibility, this needs to be fixed

I'm writing a custom OpenCL implementation, where I have a local size of 12 to maximize hardware use.

The same issue arises with the global-bandwidth test too, since the local size is set correctly to the maximum the device supports, but the global size is not checked to be a multiple of it.


Can you make a android build please

I've been wanting to use this but I'm not a pc user

is undertale even on android


Adding a time slider for displaying time-series images

It would be great to have a time slider for displaying an ImageCollection rather than adding each image as an individual layer to the map.

This feature has been implemented. See https://geemap.org/notebooks/62_time_slider
https://user-images.githubusercontent.com/5016453/109904211-deb95e80-7c6a-11eb-8f04-84e4731e1ef0.mp4


OKR: address x, y, and z

<--
GOAL:
Each team has a commitment around content performance
OBJECTIVES:

Content developers continue to get familiar with the Content Perf report by identifying and updating articles
Create a sustainable and repeatable process. Each M1 has a project for content performance and tracks
Continue to use data and feedback from past quarters to influence updates to formulas and ranking

RESULTS:

Continue with 1 article per writer, per quarter
% of page views to higher performing articles increases (targeted at 80% all up)

TRACKING:

Use the Azure DevOps template to create a tracking item

Required:

[x] Includes tag "content-perf" and "FY21Q3"
[x] Set M1 and M2 fields
[x] Area path. Set to your team's path as you see fit

Writers add "ms.custom: contperfq3" to their updated articles to help with data reporting.

NOTE: For those teams that aren't currently using the mseng TechnicalContent project, you'll still need to set up your items in it so we have an accurate inventory and ability to track.
-->

Appears to be spam.


Fixed no space left on the device error

All Submissions:
Fixed no space left on the device error for the release process

[x] Have you signed our CLA?
[ ] Put closes #XXXX in your comment to auto-close the issue that your PR fixes (if there is one).
[ ] Update docs/release-notes/release-notes.md if your changes should be included in the release notes for the next release.

We cannot run the int or e2e tests unless we add some lines to the workflows:
See https://github.com/mongodb/mongodb-atlas-kubernetes/pull/1099/files#r1303846119

@josvazg  I don't think we need to run tests for such kind of changes. We don't have tests for release process anyway


Add tutorial review checklist

We should add a pull request template that auto generates a checklist for late-stage tutorial notebook reviewing. It should have all the things we want to double-check that aren't automated (naming scheme, etc).

Assigning myself but feel free to suggest items.

Done (it's a google forms checklist, so we can collect the data).


Unsupported posix operations for spiffs

I noticed in esp_spiffs.c that vfs_spiffs_mkdir, vfs_spiffs_rmdir, vfs_spiffs_link are not supported and return errno ENOTSUP. May I ask what was the reason of not supporting this?
I can geuss that mkdir and rmdir would be pointless as spiffs has a flat file structure but I do not get why support the unlink operation and not the link operation.
Best,
Alois.

Its fine I get it, the file-system doesn't support link operations.


ActiveRecord::JDBCError with mysql driver mysql-connector-java-5.1.46-bin.jar

Unable get DB connection with ActiveRecord. The same connection parameters work without ActiveRecord and with direct jdbc code.
Attached are working and non-working for the same database with the same creds.
Working.rb
    require "rubygems"
    require "jdbc/mysql"
    require "java"

require 'java'
module JavaLang
  include_package "java.lang"
end

module JavaSql
  include_package 'java.sql'
end

begin
  puts "begins..."
  JavaLang::Class.forName("com.mysql.jdbc.Driver").newInstance
  puts "driver loaded.."
 conn = JavaSql::DriverManager.getConnection("jdbc:mysql://localhost/rules_engine?user=******&password=******");
 stmt = conn.createStatement
  rs = stmt.executeQuery("select name from conf")
  while (rs.next) do
    puts rs.getString("name")
  end
  rs.close
  stmt.close
  conn.close()
rescue JavaLang::ClassNotFoundException
  puts "ClassNotFoundException"
rescue JavaSql::SQLException => e
  puts "Java told me: #{e}n"
end

NotWorking.rb
include Java
import java.sql.SQLRecoverableException
require 'rubygems'
require 'active_record'
begin
ActiveRecord::Base.establish_connection(
  {
  :adapter  => RUBY_PLATFORM == "java" ? 'jdbcmysql' : 'mysql',
  :host     => "localhost",
  :username => "******",
  :password => "******",
  :database => "rules_engine",
  :reconnect => true
  }
)
ActiveRecord::Base.connection.execute("SELECT * FROM conf")
rescue RuntimeError,SQLRecoverableException => runtimeError
   puts "#{runtimeError}"
   puts "Message: #{runtimeError.message}"
   puts "Backtrace: #{runtimeError.backtrace}"
else
   puts "ELSE: Data Access performed without exception!"
ensure
   puts "ENSURE: I am always called whether rescue or else is invoked."
end```

**Error:**
ActiveRecord::JDBCError: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
                      initialize at arjdbc/jdbc/RubyJdbcConnection.java:551
                      initialize at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-jdbc-adapter-52.1-java/lib/arjdbc/abstract/core.rb:33
                      initialize at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:54
                      initialize at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-jdbc-adapter-52.1-java/lib/arjdbc/abstract/statement_cache.rb:21
                      initialize at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-jdbc-adapter-52.1-java/lib/arjdbc/mysql/adapter.rb:35
                             new at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-jdbc-adapter-52.1-java/lib/arjdbc/jdbc/callbacks.rb:12
                 jdbc_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-jdbc-adapter-52.1-java/lib/arjdbc/jdbc/connection_methods.rb:8
                mysql_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-jdbc-adapter-52.1-java/lib/arjdbc/mysql/connection_methods.rb:94
                  new_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:809
         checkout_new_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:853
  try_to_checkout_new_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:832
              acquire_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:793
                        checkout at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:521
                      connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:380
             retrieve_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:1008
             retrieve_connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_handling.rb:118
                      connection at /opt/SUNWcta/lib/ruby/gems/gems/activerecord-5.2.1/lib/active_record/connection_handling.rb:90
                          <main> at NotWorking.rb:16

It appears to be a timezone issue only when we use ActiveRecord. I've set the appropriate time-zone and it works now.
Anyhow, it's better to provide the right error message and see why only ActiveRecord library has that issue and not the direct jdbc connection.

I think this is because AR-JDBC sets some other properties as well, resulting in something the driver doesn't like. But I haven't tried and I'm by no means an expert or anything close on MySQL. I'm just trying to keep things working ;)
Anyway, since this seems to be a common problem, ranging from not being able to connect to date/time values being off, I documented that a bit better, see here: https://github.com/jruby/activerecord-jdbc-adapter#mysql-specific-notes


Cleanup & Naming the Application Data Model

To help with confusion between the C# ADAPT toolkit and its associated ADM plugin .adm files, I propose we change the root ADAPT container from "Application Data Model" to be "ADAPT Standard Model."
Proprietary Values stands out as one-off at this stage.   Both the keys and the values are free form. I propose we eliminate this object with the understanding that any proprietary data should be alongside and not within the model.
After separating ADAPT from modeling machinery data, we have a set of Device objects that are very shallow:  Device Model, Device Series, Device, and Device Configuration.   With the removal of facilities, Device Configuration serves no purpose other than mapping to a Device.  Device Series and Device Model effectively have a name and parent mapping.   I propose we collapse all 4 into the Device object whereby an Operation maps to a Device, itself containing string properties for Model and Series.
The OperationGroup (coincident operations completed by connected equipment, the new "LoggedData") is poorly named.  I propose "Equipment Record"

This all seems sane to me. No arguments!

Agreement in the 20 September meeting to change "Application Data Model" to "Root," remove Proprietary Values, and change Device Series from a referenceable object to a text field on Device Model, which will map up to Brand (Make).
Two items remain open:  Device Configuration and the Operation Group component.

@strhea Our current (ADAPT Standard) Device Configuration object is empty.  What setup equipment configuration data would we put in it?

I thinking specifically of the offsets necessary to describe a John Deere machine or implement object, but generalized as required.

27 September 2023 meeting preliminary conclusions:

Reuse Operation between WorkRecord and WorkOrder, replacing Work Item Operation and Prescription.
Allow for one to many devices per operation, requiring instead a Logged Variable map to an individual device, following the same pattern as Product.

No discussion in meeting on Device Configuration.

@strhea Re Device Configuration, is implement geometry data ever passed in via a setup card in your experience?  The feature of "prescribing" a DDOP exists in ISOXML, I've always found it strange, imagining it was an academic concept that may never have been used.

@knelson-farmbeltnorth I just remember needing to clone the existing machine and implement objects (in addition to guidance lines) on a data card before updating the setup data image. I vaguely remember in-line and lateral offset values in addition to some enum that established the reference point (like gps receiver, or hitch).

Agreement in 4 Oct 2023 meeting to move Reference Layers inside of Documents and to standardize Operations across Work Orders and Work Records, omitting the intermediate Work Item and Operation Group objects.
Device Configuration is the remaining open topic.

Review and ratification of changes at 11 October 2023 meeting


Fixes issue #51

rasa_nlu was throwing errors when trying to load training data via url.  This was due to a byte encoding error.  Fixes issue
https://github.com/RasaHQ/rasa_platform/issues/51
Proposed changes:

changes
f = tempfile.NamedTemporaryFile("w+", suffix=suffix, delete=False, encoding="utf-8")
to
f = tempfile.NamedTemporaryFile("w+b", suffix=suffix, delete=False)
for python 3

Status (please check what you already did):

[x] made PR ready for code review
[ ] added some tests for the functionality
[ ] updated the documentation
[ ] updated the changelog

would be great if you could add a test & add your change to the changelog as well.


Added Distributed Systems and Bash Shell Scripting Tutorial

What does this PR do?
Add resource(s)
For resources
Description
Added Distributed Systems tutorial by MIT
Added Bash Shell Scripting tutorial by Joe Collins
Why is this valuable (or not)?
How do we know it's really free?
For book lists, is it a book? For course lists, is it a course? etc.
It is a course.
Checklist:

[x] Read our contributing guidelines
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction)

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

/labelthis: detached

Duplicate of #6140


[Compute] Create a new extension image-gallery

Feature request: https://github.com/Azure/azure-cli/issues/19882
Related PR: https://github.com/Azure/azure-cli/pull/20129
Add a new extension to support requirements related to image gallery (include community gallery)
Please note that at present, due to the REST service does not release the features of list operation, so the code related to list operation has been hidden by comments

This checklist is used to make sure that common guidelines for a pull request are followed.

For new extensions:

[x] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your PR is merged into master branch, a new PR will be created to update src/index.json automatically.
The precondition is to put your code inside this repo and upgrade the version in the PR but do not modify src/index.json.

Compute


[Bug]: interaction floating window of nvim-bqf

Hi 👋🏿 ,
Thanks for your work on this plugin, It's really great.
I recently just realised that when using the nvim-bqf which opens a floating window preview for quickfix entries the win blend is set to 100 making the content illegible

I narrowed this issue down to an interaction with this plugin. I'm not sure how or why, but the figdet seems to cause the window blend for the floating window from that plugin to be set to 100. On tweaking this plugin so that the window blend is 0 it works fine. I think that maybe the fidget is being attached to floating window for this plugin rather than being fixed to the window that it was associated with where the lsp was being loaded

Perhaps related to #32 ?
Then again, I have no idea why Fidget would clash with bqf's floating preview.. Fidget only ever sets winblend for windows it creates.
In any case, this is yet another one of those cases where Fidget would be better off if with some setting to blacklist certain buffers and windows. Do you know if there's any kind of clue plugins can use to determine whether they are in bqf's preview window?

@j-hui it could be related, although didn't really understand that issue entirely. Re. detecting bqf's window, I guess you could as a general rule check if the window that the fidget is inside is a float and if it is then don't attach to it. e.g.
using win_gettype which should return popup if fidget is indeed applying settings to a popup

So I hit this issue again with another plugin and the author managed to track it down to an issue in neovim core but with a workaround suggested in the thread https://github.com/b0o/incline.nvim/issues/4#issuecomment-1114777698
essentially, I think this plugin probably sets the winblend using vim.opt somehow, which is currently buggy when setting window options. The fix is essentially to create a wrapper function that call setlocal via vim.cmd instead for now.

Wow, thanks for catching this @akinsho ! We'll probably have to keep in your workaround until the issue in Neovim is fixed in a stable release.


Please add .cmd file extension to PC98 es_systems.cfg entry

Before submitting your issue or feature request.  DO NOT REQUEST ASSISTANTS FOR PRELOADED IMAGES.  I do not support or condone the use of preloaded ArkOS images.  Preloaded meaning images that come with copyrighted roms preincluded.  Look for support from the creator or supplier of those preloaded images, not from here!  If a ticket is submitted for assistance for such images or if there's an indiciation that a preloaded image is what the support request is for, the issue ticket will be closed with no further response.

This is not Anbernic Stock Emuelec or 351Elec.  ArkOS is a different distribution from those systems and will have differing features.  The only somewhat similarity is that they both use EmulationStation as a frontend.  Even with that, the versions of EmulationStation that's used in between ArkOS and Anbernic Emuelec/351Elec is different with different capabilities.  If there are features you prefer with Anbernic Emuelec/351Elec, just use those distributions instead.  The choice is yours.

Have you reviewed the Frequently Asked Questions available at https://github.com/christianhaitian/arkos/wiki/Frequently-Asked-Questions---RG351P ?
Yes

If your issue is related to being able to run certain emulators or ports, have you reviewed the Emulators and Ports section available at https://github.com/christianhaitian/arkos/wiki/ArkOS-Emulators-and-Ports-information for needed bios files and supported rom extensions?
Yes

Have you reviewed the known issues section available at https://github.com/christianhaitian/arkos/wiki/Known-issues ?
Yes

Describe the Issue (If applicable)
A clear and concise description of what the bug is.
Feature request: Please add .cmd file extension to PC98 es_systems.cfg entry. Nekop2 and NP2Kai support .cmd files for mounting multiple disk images on boot. The file format is:
np2kai "image file for FDD1" "image file for FDD2"
The image files can be any support disk image file, so it can mount hard drive images as well as CD images.
The 'np2kai' command at the beginning of the line is necessary and works with both emulators. The double quotes around the file names may not be necessary, but handles spaces in filenames.
How can the issue be reproduced? (If applicable)
What device are you using?
RG353M
What version of ArkOS are you on?

You can find this during the initial boot process right before the Emulationstation loading screen
2.0 (04012023)

Anything else you'd like to include that may help to review this issue or feature request?
example file contents:
np2kai "Mugen Senshi Valis 2 (1986)(Nihon Telenet)(Disc 1 of 3)(Disk A).FDI" "Mugen Senshi Valis 2 (1986)(Nihon Telenet)(Disc 2 of 3)(Disk B).FDI"

Sure

This has been accommodated with the latest update.


Hubble: add option to filter for pods and services in any namespace

Please ensure your pull request adheres to the following guidelines:

[x] All code is covered by unit and/or runtime tests where feasible.
[x] All commits contain a well written commit description including a title,
description and a Fixes: #XXX line if the commit addresses a particular
GitHub issue.
[x] All commits are signed off. See the section Developer’s Certificate of Origin
[x] Provide a title or release-note blurb suitable for the release notes.

We now allow service and pod filters in the form of /foo, which will filter for any service/pod starting with foo in any namespace.
Related to: https://github.com/cilium/hubble/issues/359

/test

/test

The CI failures seem unrelated and most likely was because this branch was >400 commits behind main/CI. Rebased on main. Could you please re-trigger tests? :)

/test

Test failures seem like unrelated flakes:

https://github.com/cilium/cilium/actions/runs/7038145700/job/19154490022 Fails during provisioning kind
https://github.com/cilium/cilium/actions/runs/7038145505/job/19154442498 hit #24990
https://github.com/cilium/cilium/actions/runs/7038145539/job/19154443132 hit #27762

/ci-ipsec-upgrade

/ci-ginkgo

/ci-e2e


Cleanup docker example

Looks like your tests are broken, but this has nothing to do with my PR.

@bberenberg something to do with how Github Actions' backend infrastructure deals with TLS. Re-running the check a few times fixes this for now. We will look into improving this. I've approved and merged the PR. Thanks a lot!


evs test coverage

Improves test coverage and incorporates a Kind. Also introduces a JSON formatted error format.

Addresses https://github.com/thenorthnate/evs/issues/3


Various questions / notes

Hi,
This is not really an issue, but I would like to ask you various questions and leave some notes about the current code. They  are not necessarily related and I may have some more later. I'll post my other minor questions and remarks on this topic.
I am currently reviewing the code in utils.js:

_formatAttachment

There is a comment TODO: THIS IS REALLY BAD but does not explain what is the problem.

How do I know which properties are available on the attachments ?

Solve the facebookUrl: attachment1.url, // wtf is this? comment

This function not only formats the attachment but merges two objects, maybe rename this function ? Why are there two objects to be merged ? I've seen that sometime you only have the first one.

Why are video attachments not documented ?

presenceEncode and the related functions seems to have been copied from the minimified Facebook's code.
It is quite cryptic and could be more commented. I guess that you reverse engineered it. Maybe add some of your observations ?

getFrom does not seem to handle the case when endToken is not found. Is the current behaviour normal ?

makeParsable: This sounds scary, why are we applying a regex on some HTML ? Also it looks like its used with JSON.parse. What is happening here ?

genTimestampRelative: why is generate abbreviated here while it's not in some other functions (ie. generateThreadingID) ? It's not that important, but it's just consistency

make_defaults: The way it captures values from the html (with getFrom) feels a bit hacky :/

mergeWithDefaults: There is some unreachable code because of the duplication of if(!obj), no ?

saveCookies should use forEach instead of map (it just iterates other the array)

In src/getThreadInfo.js, the threadData in the payload exposes custom_color instead of customColor.
https://github.com/Schmavery/facebook-chat-api/blob/master/src/getThreadInfo.js#L41

How do I know which properties are available on the attachments ?
They aren't defined anywhere and we have no way of guaranteeing they'll stay the same...

presenceEncode
This is indeed copy pasted from the minified JS, we don't really care about what it's doing. Most of utils is copy pasted really...

makeParsable
Simply removes for(;;); from the beginning of the JSON response. This is a common security technique.

makeDefaults
It's been working fine for over a year ;)

Always with the tests, there is a risk to call done multiple times with the current construct to to test events (if multiple errors are fired).
¯_(ツ)_/¯


Typing "Db" as a table name in CommunityIntegration forces to lowercase

Description
It appears this comes from "db" being in the binding, therefore it is selected as a variable name, and overrides the casing the has typed in.
Steps to reproduce
Context: DnD, groovy, silverheels, autocomplete
Start typing a commonly-used query in a console pel = db.iiveTable("DbInternal", "ProcessEventLog").where("Date=currentDateNy()")
After typing pel = db.i("Db" press tab to prompt autocomplete (cursor should be before the last quote).
https://user-images.githubusercontent.com/84355699/234416231-6afbe9cb-a992-412c-8067-d22350485426.mov
Expected results
No change to an appropriately-cased input as typed by the user.
Actual results
In this case it makes “Db” go lowercase to “db”.
Additional details and attachments
“DbI” then <tab> has no effect. This seems to match up with the idea that it is the variable in the binding causing this.
The simplest solution (if the timeframe can line up) could be the implementation of https://deephaven.atlassian.net/browse/DH-14362
Once the server/engine is returning a list of GetCompletionItems, that will override whatever is already there (i.e. the current variables in the binding).
Versions
DHE Versions=1.20230131.129 and 0.21.1

We can disable word based suggestions in Monaco which is what is happening here. If the server does not respond with any autocomplete suggestions, Monaco is defaulting to word based so in this case since the line contains db. it suggests db as a valid option
https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IGlobalEditorOptions.html#wordBasedSuggestions

ya, if the suggestions are coming from monaco itself, disabling word suggestions is the only option.
It may also be worth it to always have the server respond w/ an autocomplete of "change nothing".  i.e. default autocomplete option is "keep it the same", and give it a high priority. This might trick things enough that db<tab> would just emit db.  Matt idea sounds like a decent choice.  I know the builtin guessing it does helps to reuse tokens we have seen inside of strings, but we could just make our own completer do something similar to replace the builtin.

Followed up w/ Rachel. DnD autocomplete has some support for PQ table names now, so this is in an acceptable state. We could consider disabling word completion (default/fallback in monaco) in the future, but closing for now


pull request for e2e test at 01/02/2017 10:15:09

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


BEL sound should be customizable

Description of the new feature/enhancement
I'm not sure who's idea it was to make the BEL "critical stop", but it was a terrible one. (I know, something something conpty something something beep.sys, either way, I acknowledge the reasons why things are the way they are)
I have custom sound schemes and hearing the "critical stop" sounds when I hold down backspace is annoying. It would be great if a path to a sound file could be specified, other than the binary enable/disable option

See issue #8366.

See issue #8366.

My apologies! This didn't show up in my searches 😅

/dup #8336
thanks all!

Ugh. I typoed it, of course. It doesn’t mean anything in the backend, fortunately. :)


Need Update of ACG for Proper Handling of Aerosol Longnames

the issue
For carbonaceous aerosols the State Spec reads
*MASS        | kg kg-1      | xyz   | C     |                                | * Aerosol Mass Mixing Ratio
which creates the short name BCMASS and long name CA.bc Aerosol Mass Mixing Ratio.
the fix
Please modify the automatic code generator so that the long name reads as "BC Aerosol Mass Mixing Ratio".
Please consult with @amdasilva if any questions.
This is needed for M21C and GEOS FP.

First, I've added @darianboggs as he is our ACG expert.
But, I think this is a deliberate choice by GOCART2G (and I hope @amdasilva can weigh in).
This line (say) in CA2G_StateSpecs.rc:
 *EXTCOEF     | m-1          | xyz   | C     | size(self%wavelengths_profile) | * Aerosol Extinction Coefficient

when processed by the ACG substitutes the component name for the *. And per the instance definitions in GOCART2G_GridComp.rc, the component names are CA.bc, CA.oc, and CA.br.[^1]
The only reason, you get BCEXTCOEF in a history output is because it is renamed in HISTORY.rc from CA.bcEXTCOEF to BCEXTCOEF:
         'CA.bcEXTCOEF'     , 'CA.bc'    , 'BCEXTCOEF'  ,

But, as the ACG currently works, the long name is based on the component name so you get:
                BCEXTCOEF:long_name = "CA.bc Aerosol Extinction Coefficient" ;

I suppose we could put in a translation table into the ACG so that it knows CA.bc is BC. But to me that seems to be outside the purview of MAPL as we'd be encoding GOCART-specific information into a generic MAPL script. GOCART itself decided that the name of the black carbon instance of the Carbonaceous aerosol gridded component is CA.bc and MAPL is honoring that.
One possible path[^2] I can see that keeps the separation of concerns to update the long name is perhaps putting the override information inside of the CA GridComp itself and then having the ACG ingest that. This would require:

Creating and adding the info in CA (either as RC or YAML) with the correct override (aka CA.bc long name = 'Black Carbon')
Updating the ACG with a command line argument to use this translation table and "override" the comp_name used in mangling the long name info
Updating the CMake code that runs the ACG with an option that adds the command line option.

But, I guess we'd need affirmation from @amdasilva (for GOCART) and @tclune (for MAPL) that this is the right way forward to do this.
[^1]: Internal to the CA Grid Comp there is a sort of translation of the component names, but as far as MAPL and GOCART are concerned, the Gridded Component running is called, e.g., CA.bc
[^2]: The other path is having GEOS-FP and M21C run ncatted a posteriori on the collections. Not hard, but then it's another postprocessing script.

I concur with Matt's analysis.  To really do this "right" would require introducing a bit more grammar into the ACG.     Probably would not need to be "GOCART specific", but we'd need something a bit more complex than expanding "*" in the current manner.
I'll note that in History3g, we probably already have an acceptable solution (but incomplete implementation) in that the history collection can override the long name and not just given an alias as with current History.   And putting that back capability into the current history is problematic only because the list
         'CA.bcEXTCOEF'     , 'CA.bc'    , 'BCEXTCOEF'  ,

is already highly positional.   (3g uses yaml which gives us clearer mechanisms for such customizations).  But we could in principle but an alternate long name in the 5th column in the collection.   Including @bena-nasa so that he could comment on how useful/difficult this extension to current history is.

Okay. I think we have a possible solution. I've discussed with @darianboggs and we might be "in luck".
First, my thought above cannot work. Why? well as @darianboggs reminded me, all the ACG does is make Fortran code. So, it makes, for example:
   call MAPL_AddExportSpec(gc,&
        & short_name=''//trim(comp_name)//'MASS', &
        & units='kg kg-1', &
        & dims=MAPL_DimsHorzVert, &
        & vlocation=MAPL_VlocationCenter, &
        & long_name=''//trim(comp_name)//' Aerosol Mass Mixing Ratio', &
        & _RC)

So, to have the long_name be something different, the Fortran code must know what that something different is. But, we are in luck. In CA2G we have this chunk of code:
    if (comp_name(1:5) == 'CA.oc') then
       GCsuffix = 'OC'
    else if (comp_name(1:5) == 'CA.bc') then
       GCsuffix = 'BC'
    else if (comp_name(1:5) == 'CA.br') then
       GCsuffix = 'BR'
    end if

So, what I'm proposing is we add a new option to the ACG, something like:
... --long_name_prefix "GCsuffix" ...

and then the ACG says, oh, we have that option set so instead of mangling the long_name with trim(comp_name) we mangle it with that variable: trim(GCsuffix):
   call MAPL_AddExportSpec(gc,&
        & short_name=''//trim(comp_name)//'MASS', &
        & units='kg kg-1', &
        & dims=MAPL_DimsHorzVert, &
        & vlocation=MAPL_VlocationCenter, &
        & long_name=''//trim(GCsuffix)//' Aerosol Mass Mixing Ratio', &
        & _RC)

@darianboggs can add the Python option and then I can fix up the CMake.
The "nice" thing about this is that the only GOCART code that need change is the CMakeLists.txt where a new option needs to be passed to mapl_acg.
Is this portable? Sort of? At least in the sense that someone has to add code to the GridComp which has a translation, but that seems to be the only way.

@mathomp4 , that block of code in CA2g_Gridcomp was exactly what I was thinking of when I was talking with Ben about trimming the component!

@acollow Thanks to @darianboggs we have a PR (#2858) that works for me. I get out, say:
        float BCCMASS(time, lat, lon) ;
                BCCMASS:_FillValue = 1.e+15f ;
                BCCMASS:add_offset = 0.f ;
                BCCMASS:fmissing_value = 1.e+15f ;
                BCCMASS:long_name = "BC Aerosol Column Mass Density" ;
                BCCMASS:missing_value = 1.e+15f ;
                BCCMASS:regrid_method = "conserve" ;
                BCCMASS:scale_factor = 1.f ;
                BCCMASS:standard_name = "BC Aerosol Column Mass Density" ;
...

where BCCMASS is due to a history rename and the long_name is changed via a CMake change in CA.
Once @tclune can take a look at it, we can get this into develop with the PR, but what we need to know from you is what other branches/versions of MAPL need it.
I suppose that would be R21C for M21C but I'm not sure which FP would want this? Upcoming FP from @rtodling? Or a current ops tag?

Awesome! Thank you to the SI Team for working on this! It will need to go into the R21C branch (and ultimately the next M21C tag) and a future FP. It would be great to have @rtodling include it in an x run so I can verify it there as well. It is NOT needed for GEOS-IT or the currently operational FP as those systems do not include GOCART-2G.

Awesome! Thank you to the SI Team for working on this! It will need to go into the R21C branch (and ultimately the next M21C tag) and a future FP. It would be great to have @rtodling include it in an x run so I can verify it there as well. It is NOT needed for GEOS-IT or the currently operational FP as those systems do not include GOCART-2G.

Okay. I'll work on a PR to get it into R21C once it's settled. And @rtodling do you know what version of MAPL I should look at for the FP ?

@mathomp4 , Note that M21C will also need the MAPL patch that corrects the "001" bug.

I vaguely remember that. I'll talk with @atrayano because I think he fixed that


Improve inventory testing of paths in manifest

Fixes #51

Coverage increased (+0.1%) to 94.63% when pulling b1d1acda8f7797dea5240edae9cba9bb8e3ed2f1 on issue-51 into b955d49be56e58ab0a012617f929ff6ec5eda100 on develop.


Wallet syncing stuck at 2425855 block

Wallet syncing stuck at 2425855 block
Each time I'm trying to sync (recovered wallet) it stuck at some block... Maybe always at this one...

at console:
id: 1, batch: 0/61, blocks: 0/1000, decryptions: 0, tx_scan: 0
id: 1, batch: 0/61, blocks: 0/1000, decryptions: 0, tx_scan: 0
id: 1, batch: 0/61, blocks: 0/1000, decryptions: 0, tx_scan: 0
id: 1, batch: 0/61, blocks: 0/1000, decryptions: 0, tx_scan: 0
id: 1, batch: 0/61, blocks: 0/1000, decryptions: 0, tx_scan: 0
id: 1, batch: 0/61, blocks: 0/1000, decryptions: 0, tx_scan: 0

I think that issue related to connection lose... If you close / lose connection during syncing - it will stuck and not possible to continue... wallet will print only this lines

4 try to sync and always some error like this and not possible to end the sync:
qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 2264, resource id: 20971556, major code: 42 (SetInputFocus), minor code: 0

Update to the newest version


Remove comments about inverted classes

I couldn't get the tests involving inverted classes of the form [^-0-9] to fail. Has this problem been fixed?
This PR updates the README to remove references to there being issues. It also enables the tests.
(This includes the commits that are part of #48 but I can rebase and force push once/if that PR is accepted.)

Hi @pyrmont - thanks alot!

I couldn't get the tests involving inverted classes of the form [^-0-9] to fail. Has this problem been fixed?

I did some small fixes guided by @DavidKorczynski in https://github.com/kokke/tiny-regex-c/issues/44 - maybe they fixed the problems. I haven't tracked the defects as diligently as I maybe should have.
I will merge these changes, since I think you've found the cause for the test-failures in #48

Hi @pyrmont - thanks alot!

I couldn't get the tests involving inverted classes of the form [^-0-9] to fail. Has this problem been fixed?

I did some small fixes guided by @DavidKorczynski in https://github.com/kokke/tiny-regex-c/issues/44 - maybe they fixed the problems. I haven't tracked the defects as diligently as I maybe should have.
I will merge these changes, since I think you've found the cause for the test-failures in #48


Map TimeSpan to DbType.Int64

In my project I have a row with a field type that is TimeSpan. Serenity maps this to DbType.Time, which cannot correctly store a TimeSpan. While TimeSpan can correctly support the DbType.Time value, the reverse is not true. A timespan has maximum value of 10675199.02:48:05.4775807, or slightly more than 10,675,199 days, which can only be store in DbType.Int64. This seems to be an issue with Dapper - https://github.com/StackExchange/Dapper/issues/319.
I am trying to figure out how to use TimeStampField but store the value in the database as Int64.
I have tried the following in my row:
        [DisplayName("Audio Length")]
        public Int64? AudioLength
        {
            get { return Fields.AudioLength[this].GetValueOrDefault().TotalSeconds; }
            set { Fields.AudioLength[this] = TimeSpan.FromSeconds(value); }
        }

        ...

        public class RowFields : BaseRowFields
        {
            ...
            public TimeSpanField AudioLength;
            ...
        }

But this does not seem to work.
I have also tried editing Program.cs and adding
        public static void Main(string[] args)
        {
            SqlMapper.AddTypeHandler(typeof(TimeSpan), new TimeSpanHandler());
            CreateHostBuilder(args).Build().Run();
        }

    public class TimeSpanHandler : SqlMapper.TypeHandler<TimeSpan>
    {
        public override TimeSpan Parse(object value)
        {
            throw new InvalidOperationException("Never called!");
        }

        public override void SetValue(IDbDataParameter parameter, TimeSpan value)
        {
            throw new InvalidOperationException("Never called!");
        }
    }

But neither exception is ever thrown, so this doesn't seem to be a correct method.
Is there any other way to get the TimeSpan to store as Int64? I am using TimeSpan in many different rows and the values can sometimes exceed 24 hours which requires storing it as Int64.

Does anyone have any suggestions on this?


⚠ Fetchers has degraded performance

In 8b67962, Fetchers ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 759 ms

Resolved: Fetchers performance has improved in 71b2228.


Issues when releasing from a git worktree

I encountered some warts when using dune-release from a git worktree. Unfortunately, I closed the shell I was using in the subtree so I can't paste all output.
When I ran dune-release opam submit I got an error from git complaining about the index. Indeed, I had a merge conflict that I hadn't committed yet. The command seemed a bit odd with the worktree. Not sure if this is a bug.
reynir@spurv:~/workspace/ocaml-ssh-agent$ git worktree add ../fix-ssh-agent master
Preparing worktree (checking out 'master')
HEAD is now at 3e5b8ff732 Update example to cmdliner.1.1.0

After I fixed this merge conflict I ran dune-release opam submit and it worked, but while the files in the directory seemed untouched the git worktree was checked out as release-ssh-agent-v0.3.1, the opam-repository release branch. Git status in the worktree complained about all the files deleted in packages/ and untracked files that were files from my project.
reynir@spurv:~/workspace/ocaml-ssh-agent$ git worktree list
/home/reynir/workspace/ocaml-ssh-agent<PHONE_NUMBER> [ssh-ed25519]
/home/reynir/workspace/fix-ssh-agent    7610b693a3 [release-ssh-agent-v0.3.1]

Thanks for the investigation, these are pretty good insights and should be a big help to solve this issue!