Select with react-hook-form Control

Hi!  I'm having a bit of an issue with the Select setup using react-hook-form.
What I'm trying to do is display a form with default values, there is a button to populate the content from an api. When this api is called all the fields in the form should update to the data from the api.
This works fine for all the fields except for Select.  I set it up with a plain html select and it's working but I can't seem to get it to work with the Select component from shadcn.
Here is a snip of the parts I'm confused by.
Here is the form setup
  const npcForm = useForm<z.infer<typeof npcFullRandomZodSchema>>({
    resolver: zodResolver(npcFullRandomZodSchema),
    values: npc,
    defaultValues: {
      class: 'none',

    },
    resetOptions: {},
  });

Here is the Select setup:

      <Controller
        name="class"
        control={npcForm.control}
        render={({ field }) => (
          <FormItem>
            <FormLabel>Class</FormLabel>
            <Select
              onValueChange={field.onChange}
              defaultValue={field.value}
            >
              <FormControl>
                <SelectTrigger>
                  <SelectValue />
                </SelectTrigger>
              </FormControl>
              <SelectContent ref={field.ref}>
                {dnd5eClasses
                  .sort((a, b) => a.label.localeCompare(b.label))
                  .map((option) => (
                    <SelectItem key={option.value} value={option.value}>
                      {option.label}
                    </SelectItem>
                  ))}
              </SelectContent>
            </Select>
          </FormItem>
        )}
      />

And here is the html select that works.
          <Controller
            name="class"
            control={npcForm.control}
            render={({ field }) => (
              <select {...field}>
                {dnd5eClasses
                  .sort((a, b) => a.label.localeCompare(b.label))
                  .map((option) => (
                    <option key={option.value} value={option.value}>
                      {option.label}
                    </option>
                  ))}
              </select>
            )}
          />

I've tried using FormField in addition to just the controller but can't figure out what I'm missing.  I'm sure it's simple but there isn't anything I can find related in docs to help.

Thanks!

I tested with react-select and it works also.  So it's either a bug in the Select or I'm not sure where the "ref" goes :)

@rogueturnip try use value={field.value} instead of defaultValue={field.value}

@rogueturnip try use value={field.value} instead of defaultValue={field.value}

I did. It's not working. Can you check my code sample? sample

Hey @rogueturnip, if your issue is the same as @yousihy. Make sure the value prop of SelectItem is a string Codesandbox

I'm having the same issue with Input. It doesn't catch the register field result.

can u share how did you used RHF Controller component please

Here's how i solved this issue:

create a state that will notify that you already updated the form

const [isDone, setIsDone] = useState(false);

After you reset/update the form values, update the state

reset((v) => ({
        ...v,
        productType: `${product.product_type}`,
        productName: `${item.id}`,
        price: `${product.price}`,
        code: `${product.code}`,
        stocks: `${product.stocks}`,
        stocksWarning: `${product.stocks_warning}`,
        weight: `${product.weight}`,
        unit: `${product.unit}`,
        vatable: `${product.vatable}`,
        description: `${product.description}`,
        status: `${product.status}`,
      }));
      setIsDone(true);

on your form element add this:

<form key={isDone ? 0 : 1} className="mt-6" onSubmit={handleSubmit(onSubmit)}>

This will force re-render the form element together with the select elements that are not updating

can u share how did you used RHF Controller component please

Same way described in the docs.
See the example section.

I'm having the same issue. I'm pulling in data and using that to populate various form values. Input and Switch work fine, select does not.
Essentially, I'm able to dynamically update the values of the other fields based on my data. However, Select doesn't update.. it just goes back to it's original state.
I’m encountering an issue with the Select component for the type field. The form correctly retrieves initial values from session storage and uses form.reset to set these values. While form.reset works for setting initial values of other components like Input and Switch, the Select component’s value does not persist and resets to an empty string. Manually setting the value with form.setValue() works for other components but not for the Select component. Despite seeing the correct value being loaded and set in the console logs, the type field value unexpectedly clears, causing inconsistencies in the form state.
I've tried defaultValue={field.value} and value={field.value}
// Create form schema using Zod
const formSchema = z.object({
    name: z.string().min(1, { message: "Name must be at least 1 character long" }),
    type: z.string().min(1),
    notifications: z.boolean()
});

export type FormSchema = z.infer<typeof formSchema>;

// Set Session Storage:
const setSessionStorage = (key: string, formData: FormSchema) => {
    console.log("Storing data in session storage:", formData);
    sessionStorage.setItem(key, JSON.stringify(formData));
};

// Get Session Storage
const getSessionStorage = (key: string) => {
    const data = sessionStorage.getItem(key);
    console.log("Retrieved data from session storage:", data);
    return data ? JSON.parse(data) : null;
};

// OnboardingForm Component
const OnboardingForm = ({ onSubmit }: { onSubmit: (data: FormSchema) => void }) => {
    const [sessionFormData, setSessionFormData] = useState<FormSchema>({
        name: '',
        type: '',
        notifications: false,
    });

    // Create form object and initialize default values using session storage or blank object.
    const form = useForm<FormSchema>({
        resolver: zodResolver(formSchema),
        defaultValues: sessionFormData,
    });

    // Fetch session storage data on mount
    useEffect(() => {
        const storedData = getSessionStorage('onboardingFormData');
        console.log("Retrieved stored data on mount:", storedData);
        if (storedData) {
            setSessionFormData(storedData);
            console.log("Calling form.reset with:", storedData);
            form.reset(storedData); // Reset form with retrieved data
        }
    }, [form]);

    console.log(sessionFormData)

    // Watch the form for any input changes and update SessionStorage
    const formValues = useWatch({
        control: form.control,
    });

    useEffect(() => {
        const formData = form.getValues();
        console.log("Form Values Changed:", formData);
        setSessionStorage('onboardingFormData', formData);
    }, [formValues]);

    return (
        <Card className="mx-auto w-full">
            <CardHeader>

Welcome!

                <CardDescription>
                    Let's get some details and then we'll create your account
                </CardDescription>
            </CardHeader>
            <CardContent>
                <Form {...form}>
                    <form className="w-full space-y-4" onSubmit={form.handleSubmit(onSubmit)}>
                        <FormField
                            control={form.control}
                            name="name"
                            render={({ field }) => (
                                <FormItem>
                                    <FormLabel className='pl-2'>Name</FormLabel>
                                    <FormControl>
                                        <Input className='w-full' placeholder="Mo Tanveer" {...field} />
                                    </FormControl>
                                    <FormMessage />
                                </FormItem>
                            )}
                        />

                        <FormField
                            control={form.control}
                            name="type"
                            render={({ field }) => (
                                <FormItem>
                                    <FormLabel className='pl-2'>License Type</FormLabel>
                                    <Select value={field.value} onValueChange={field.onChange}>
                                        <FormControl>
                                            <SelectTrigger >
                                                <SelectValue  placeholder="Select your license type..." />
                                            </SelectTrigger>
                                        </FormControl>
                                        <SelectContent>
                                            <SelectItem value="Road">Road License</SelectItem>
                                            <SelectItem value="Circuit">International Circuit License</SelectItem>
                                            <SelectItem value="Rally">International Rally License</SelectItem>
                                        </SelectContent>
                                    </Select>
                                    <FormMessage />
                                </FormItem>
                            )}
                        />

                        <FormField
                            control={form.control}
                            name="notifications"
                            render={({ field }) => (
                                <FormItem className="flex flex-row items-center justify-between rounded-lg border p-3">

                                        <FormLabel>
                                            Notifications
                                        </FormLabel>
                                        <FormDescription>
                                            Receive Race Event Notifications?
                                        </FormDescription>

                                    <FormControl>
                                        <Switch
                                            checked={field.value}
                                            onCheckedChange={field.onChange}
                                        />
                                    </FormControl>
                                </FormItem>
                            )}
                        />
                        <Button className='w-full' type="submit">Next</Button>
                    </form>
                </Form>
            </CardContent>
        </Card>
    );
};

use:
<Select onValueChange={field.onChange} {...field}>
....

You can see this in StackOverFlow

https://stackoverflow.com/questions/75815473/how-can-i-implement-react-hook-form-with-radix-ui-select

Here's how i solved this issue:

create a state that will notify that you already updated the form

const [isDone, setIsDone] = useState(false);

After you reset/update the form values, update the state

reset((v) => ({
        ...v,
        productType: `${product.product_type}`,
        productName: `${item.id}`,
        price: `${product.price}`,
        code: `${product.code}`,
        stocks: `${product.stocks}`,
        stocksWarning: `${product.stocks_warning}`,
        weight: `${product.weight}`,
        unit: `${product.unit}`,
        vatable: `${product.vatable}`,
        description: `${product.description}`,
        status: `${product.status}`,
      }));
      setIsDone(true);

on your form element add key:

<form key={isDone ? 0 : 1} onSubmit={handleSubmit(onSubmit)}>

This will force re-render the form element together with the select elements that are not updating

in this case use key={form.watch(<FIELDNAME>)} instead off declaring a separate state

I understand there are likely work-arounds to this, and it may not even be a bug at all, but user implementation.
But for anyone finding this thread I wanted to say I'm experiencing a very similar situation to motanveer above ..
In my case however I'm getting the empty string value for the Select value when I navigate back and retrieve the values out of a form.reset() . He's getting his previously entered form values from local / sesh storage and I'm pulling mine out of a context-store and then form.reset(contextFormObj) and it's doing the same confounding thing where all the other shad-cn components like Input or Radio or any other ones (oh by the way .. THANK YOU @shadcn for this exceptionally awesome library) repopulate just fine .. but just the single lone Select value is an empty string .. even though I can see it's value is submitted correctly and is stored in context correctly (Meaning this is really purely a UI issue where we want to show the user that indeed that value is there to their own eyes).

I encountered this problem too. It seems that something is firing the onValueChange event with an empty string when the route changes. I just checked if the value being passed onValueChange is an empty string before updating the value. Hopefully we can get a better solution in the future.
  <ShadSelect         disabled={!!disabled}         onValueChange={(val: string) => {           if (val) onChange(val);         }}         value={value}       >       </ShadSelect>

Specifying key={field.value} solved the issue for me.
 <FormField
      control={control}
      name={name}
      render={({ field }) => {
        return (
          <FormItem key={field.value} className="w-full">
            <FormLabel>{label}</FormLabel>
            <Select
              onValueChange={(value) => field.onChange(Number(value))}
              value={String(field.value)}
            >
              <FormControl>
                <SelectTrigger>
                  <SelectValue placeholder={placeholder} />
                </SelectTrigger>
              </FormControl>
              <SelectContent>
                {options.map((option) => (
                  <SelectItem key={option.id} value={option.id.toString()}>
                    {option.name}
                  </SelectItem>
                ))}
              </SelectContent>
            </Select>
            <FormMessage />
          </FormItem>
        );
      }}
    />

if i use "" as default value, the first options is always selected when submit with form element before I made a selection

Specifying key={field.value} solved the issue for me.
 <FormField
      control={control}
      name={name}
      render={({ field }) => {
        return (
          <FormItem key={field.value} className="w-full">
            <FormLabel>{label}</FormLabel>
            <Select
              onValueChange={(value) => field.onChange(Number(value))}
              value={String(field.value)}
            >
              <FormControl>
                <SelectTrigger>
                  <SelectValue placeholder={placeholder} />
                </SelectTrigger>
              </FormControl>
              <SelectContent>
                {options.map((option) => (
                  <SelectItem key={option.id} value={option.id.toString()}>
                    {option.name}
                  </SelectItem>
                ))}
              </SelectContent>
            </Select>
            <FormMessage />
          </FormItem>
        );
      }}
    />

This fixed the issue for me.

For me, I fixed by adding a useState of type any, just put the value of the form field to the useState variable, you don't need the useState variable just put the value to it inside the onValueChange, and it works fine. I don't know why it works but it does some how.
If you have multiple select field you can use the same useState to all of them, thats why i said it can be type of any.
export function SelectForm() {
  // add useState (We don't need the variable value,
  // We just use setExample inside the onValueChange and that's it.)
  const [example, setExample] = useState<any>();

  const form = useForm<z.infer<typeof FormSchema>>({
    resolver: zodResolver(FormSchema),
  });

  function onSubmit(data: z.infer<typeof FormSchema>) {
    toast({
      title: "You submitted the following values:",
      description: (

          {JSON.stringify(data, null, 2)}

      ),
    });
  }

  return (
    <Form {...form}>
      <form onSubmit={form.handleSubmit(onSubmit)} className="w-2/3 space-y-6">
        <FormField
          control={form.control}
          name="email"
          render={({ field }) => (
            <FormItem>
              <FormLabel>Email</FormLabel>
              {/* modify onValueChange */}
              <Select
                onValueChange={(e) => {
                  // add setExample
                  setExample(e);
                  field.onChange(e);
                }}
                defaultValue={field.value}
              >
                <FormControl>
                  <SelectTrigger>
                    <SelectValue placeholder="Select a verified email to display" />
                  </SelectTrigger>
                </FormControl>
                <SelectContent>
                  <SelectItem value="m<EMAIL_ADDRESS>                  <SelectItem value="m<EMAIL_ADDRESS>                  <SelectItem value="m<EMAIL_ADDRESS>                </SelectContent>
              </Select>
              <FormDescription>
                You can manage email addresses in your{" "}
                <Link href="/examples/forms">email settings</Link>.
              </FormDescription>
              <FormMessage />
            </FormItem>
          )}
        />
        <Button type="submit">Submit</Button>
      </form>
    </Form>
  );
}

Please refer to this website.
React Hook Form - shadcn-ui

Please refer to this website. React Hook Form - shadcn-ui

Please test what u send before :) !

<FormField
      control={form.control}
      name={name}
      render={({ field }) => (
        <FormFieldItem label={label} required={required} error={error} className="lg:col-span-2">
          <Select
            onValueChange={(v) => {
              field.onChange(v);
              onChange && onChange(v);
            }}
            defaultValue={field.value}
            name={field.name}
          >
            <SelectTrigger>
              <SelectValue placeholder={placeholder} />
            </SelectTrigger>
            <SelectContent>
              {subjects.map(({ label, key }) => (
                <SelectItem key={key} value={key}>
                  {label}
                </SelectItem>
              ))}
            </SelectContent>
          </Select>
        </FormFieldItem>
      )}
    />

FormFieldItem is jus the base FormItem we get from the installation. The difference is it Wraps everything in a  since i was looking for an reuseable approach.
This is my solution. The key part is here and what we focus on:
<Select
            onValueChange={(v) => {
              field.onChange(v);
              onChange && onChange(v);
            }}
            defaultValue={field.value}
            name={field.name}
          >

since we cant use everything from the field that the render gives us we gotta use it partly.
the important parts are what the examples already states :
onValueChange -> using field.onChange with the value we get back (since the Select has no onChange)
defaultValue -> For the default Value.
name -> fixed it for me, the send data had no name before i put it inside.
Important DONT spread with {...field} else we get values that Select doesnt support.
Might be interesting that my solution is build using serverActions, shouldnt make a difference but just fyi.

For me, I fixed by adding a useState of type any, just put the value of the form field to the useState variable, you don't need the useState variable just put the value to it inside the onValueChange, and it works fine. I don't know why it works but it does some how. If you have multiple select field you can use the same useState to all of them, thats why i said it can be type of any.
Check it: https://codesandbox.io/p/devbox/hoshang-select-jgzsk4
export function SelectForm() {
  // add useState (We don't need the variable value,
  // We just use setExample inside the onValueChange and that's it.)
  const [example, setExample] = useState<any>();

  const form = useForm<z.infer<typeof FormSchema>>({
    resolver: zodResolver(FormSchema),
  });

  function onSubmit(data: z.infer<typeof FormSchema>) {
    toast({
      title: "You submitted the following values:",
      description: (

          {JSON.stringify(data, null, 2)}

      ),
    });
  }

  return (
    <Form {...form}>
      <form onSubmit={form.handleSubmit(onSubmit)} className="w-2/3 space-y-6">
        <FormField
          control={form.control}
          name="email"
          render={({ field }) => (
            <FormItem>
              <FormLabel>Email</FormLabel>
              {/* modify onValueChange */}
              <Select
                onValueChange={(e) => {
                  // add setExample
                  setExample(e);
                  field.onChange(e);
                }}
                defaultValue={field.value}
              >
                <FormControl>
                  <SelectTrigger>
                    <SelectValue placeholder="Select a verified email to display" />
                  </SelectTrigger>
                </FormControl>
                <SelectContent>
                  <SelectItem value="m<EMAIL_ADDRESS>                  <SelectItem value="m<EMAIL_ADDRESS>                  <SelectItem value="m<EMAIL_ADDRESS>                </SelectContent>
              </Select>
              <FormDescription>
                You can manage email addresses in your{" "}
                <Link href="/examples/forms">email settings</Link>.
              </FormDescription>
              <FormMessage />
            </FormItem>
          )}
        />
        <Button type="submit">Submit</Button>
      </form>
    </Form>
  );
}

hey i check your sandbox and it doesnt work on my end.


Create Test Strategy

Create a high level test strategy

An example from Challenge 24 team here
This ticket will require:

researching the elements required to create a test strategy (possibly using the ISTQB Certified Tester syllabus to guide)
updating the model of the system created in the first week with any new information from our research
writing a test strategy
highlighting any TBC areas requiring more information from the mentors
getting a peer review?

Initial strategy created, in peer review from Max & Rich Rogers


Apple TV tvOS widevine CDM?

Is there anyway me to use Netflix addon with Apple TV 4K 2021?
Currently, I have gotten error message that the widevine CDM is not available on this system architecture.
Any suggetions?

think you need this PR to be merged in:
https://github.com/emilsvennesson/script.module.inputstreamhelper/pull/429

think you need this PR to be merged in: https://github.com/emilsvennesson/script.module.inputstreamhelper/pull/429
In the meantime, you can try installing the "Video Test Streams" add-on from Slyguy repo (https://www.matthuisman.nz/2020/02/slyguy-kodi-repository.html)
Then try to play the "Inputstream Adaptive - Dash with Widevine"
Then follow prompts to install Widevine CDM.
(slyguy CDM installer should already support Darwin ARM64)
Or, manually download this file:
https://k.slyguy.xyz/.decryptmodules/widevine/4.10.2198.0-mac-arm64.dylib
and rename it to libwidevinecdm.dylib and put it in a folder called cdm in the kodi userdata directory

Thank you for the suggetions. I did try but it says "Darwin AppleTV11,1 Kodi v19 does not yet support Widevine playback"
I may have to wait. Thanks.

oh strange - seems platform.machine() on that is returning "AppleTV11" instead of something like arm64.
Can you write exactly what it says between Darwin and Kodi
Was it actually AppleTV11,1  (with the comma and 1?)
then I can hack in the supported platform to be that.

"Darwin AppleTV11,1 Kodi v19 does not yet support Widevine playback"

This is exactly what says.

@AntiBigmac
ok, try install again now :)

@AntiBigmac
ok, try install again now :)
I made Darwin AppleTV11,1 point to the Darwin arm64 cdm
https://www.theiphonewiki.com/wiki/J305AP
The model identifier is: AppleTV11,1

Thanks. I am really apppriciated all of your efforts.
But now I have another error message.

"One or more items failed to play. Check the log for more information about this message."

Right. So it probably isn't supported if it's still not playing widevine content. A debug log would help confirm

We definitely need a full debug log: https://kodi.wiki/view/Log_file/Easy

I am trying to get full log file but Apple TV 4K couldn't use keyboard.
Is there any other way to get log file?

Here is log file.
https//paste.kodi.tv/ajubiyahuz

@AntiBigmac
Do all the other test streams in that addon play?

@AntiBigmac
Do all the other test streams in that addon play?

I did test with "video test stream". I did choose different resolutions.
The other test beside with widevine, all good.
Also I set debugging for the video components.

Here is log for the all test from Video test addon.
https://paste.kodi.tv/akipokoaw

looks like you may not have a decrypter
You should have a "Found decrypter" line after "Searching for decrypters"
eg.
 I will try after he will be home.

Thank you so much all of your hard works to address these issues. 👍👍

If it works, I'll be quite surprised :)

If it works, I'll be quite surprised :)

I hope so. Will post result and log file after testing.

@AntiBigmac
did you test?

@AntiBigmac
did you test?

My son is still at Summer camp.  Will test after, he will be back home.

found another user to test, and no good.
The mac ARM64 widevine blob doesn't seem to work on iOS or tvOS
https://forum.kodi.tv/showthread.php?tid=363757&pid=3052325#pid3052325

found another user to test, and no good.
The mac ARM64 widevine blob doesn't seem to work on iOS or tvOS
https://forum.kodi.tv/showthread.php?tid=363757&pid=3052325#pid3052325

Too bad but at least it was worth of the shot.
Thank you very much for the your efforts. Really appriciate.

So I guess this can be closed?


Close (X) button to close popup

Feature request
Overview
Please add Close (X) button to close popup
Examples in other libraries

Who does this impact? Who is this for?

Additional context

If you mean Popover, it does support close button.
And the example also implements it:


Fixed typo (Micorsoft and Micosoft)

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

Verified the updates; merging.
@hubalazs - Thank you for submitting these fixes.


GH-1577 / Optimize FIND_RUNS_WITH_URI query

Long term fix for of https://github.com/Hyperfoil/Horreum/issues/1577
Describe the issue
Right now the query https://github.com/Hyperfoil/Horreum/blob/3849f043bb457deb86df5fb8ecab5fc8fc3de588/horreum-backend/src/main/java/io/hyperfoil/tools/horreum/svc/RunServiceImpl.java#L91-L103 is really slow as it perform a full (sequential) scan over all the runs looking into all jsonbobjects searching for$schema` key.
This is the query plan (obtained in local machine using prod backup):
                                                                                QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Seq Scan on run  (cost=0.00..103758.07 rows=7746 width=8) (actual time=37775.492..37775.493 rows=0 loops=1)
   Filter: ((NOT trashed) AND (can_view(access, owner, token) OR has_role('horreum.system'::text)) AND (((data ->> '$schema'::text) = 'urn:achme:0.1'::text) OR CASE WHEN (jsonb_typeof(data) = 'object'::text) THEN (SubPlan 1) WHEN (jsonb_typeof(data) = 'array'::text) THEN (SubPlan 2) ELSE false END OR ((metadata IS NOT NULL) AND (SubPlan 3))))
   Rows Removed by Filter: 28414
   SubPlan 1
     ->  Function Scan on jsonb_each "values"  (cost=0.00..1.25 rows=100 width=32) (actual time=0.653..0.785 rows=6 loops=25827)
   SubPlan 2
     ->  Result  (cost=0.00..2.02 rows=100 width=32) (actual time=7.914..8.241 rows=2 loops=95)
           ->  ProjectSet  (cost=0.00..0.52 rows=100 width=32) (actual time=7.912..8.239 rows=2 loops=95)
                 ->  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.000..0.000 rows=1 loops=95)
   SubPlan 3
     ->  Result  (cost=0.00..2.02 rows=100 width=32) (actual time=0.001..0.001 rows=1 loops=6345)
           ->  ProjectSet  (cost=0.00..0.52 rows=100 width=32) (actual time=0.001..0.001 rows=1 loops=6345)
                 ->  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.000..0.000 rows=1 loops=6345)
 Planning Time: 0.470 ms
 Execution Time: 37775.565 ms
(15 rows)

Worth to note that the worst case happens when we are creating a new Schema that is not referenced anywhere, as in that case it has to look into every place for every run.
Moreover as the number of runs increase, the performance of this query can only get worse.
Describe the solution you'd like
After some discussion we came up to a possible solution which will require a bit of refactoring.
Here a summary of required changes that could speed up the overall process:

The run_schemas table needs to be updated on creation/update of a Run

Add records even if the referenced schema does not exist yet, e.g., keep schemaId null but schemaUri set.
Ensure that Horreum can manage run_schemas.schemaId as null and no other parts wil break.

Update the query to scan the run_schemas table rather than looking into every run's jsonb object

The run_schemas will contain all information that we need

Update the run_schemas records accordingly, e.g., if we are creating a schema that is referenced there, we should update all records with new id.
Make this process sync again, i.e., revert https://github.com/Hyperfoil/Horreum/issues/1579

Additional information
n/a

On Hold due to https://github.com/Hyperfoil/Horreum/discussions/1603


Gerbers from some versions of Eagle render at the wrong scale

Example: gerber_1.zip (from Eagle version 7.7.0)

Same issue with Eagle 6.6.
Gerber-business_card.zip

PR https://github.com/Andrew-Dickinson/photonic-etcher/pull/17 should fix this issue.


[BUG] create network form width issue on mobile

Describe the bug
See create network form on mobile phones, the width get broken out of screen.

Not reproducible


Athena query results cannot be fetched using awswrangler

Moto version 4.1.2, but also tested on 4.2.1 with similar results
Issue
It seems that some Athena queries can't be fetched using the awswrangler.athena.get_query_results function.
I'm not sure if awswrangler is necessarily supposed to be supported by moto. I couldn't find anywhere explicitly stating whether or not awswrangler was explicitly supported. If its not, then feel free to close this issue.
The following example should demonstrate how the error was caused.
Here is the code that I was trying to test:
import awswrangler as wr
def foo():
    response = wr.athena.start_query_execution(
        sql="SELECT * from test-table",
        database="test-database",
        wait=True,
    )
    query_execution_id = response.get("QueryExecutionId")

    df = wr.athena.get_query_results(query_execution_id=query_execution_id)
    return df

And here was my test code (located in the same file):
import pandas as pd
from pandas.testing import assert_frame_equal
import pytest
import moto
import boto3
@pytest.fixture(scope="function")
def mock_athena():
    with moto.mock_athena():
        athena = boto3.client("athena")
        yield athena

def test_foo(mock_athena):
    result = foo()
    assert_frame_equal(
        result.reset_index(drop=True),
        pd.DataFrame({"test_data": ["12345"]}),
    )

I also had a moto server setup following the moto documentation and I had uploaded fake data following the moto documentation. When running the tests, I had expected it to fail, but I I had expected the get_query_results function to return data that I had uploaded to the Queue in the server.

        Parameters
        ----------
        query_execution_id : str
            SQL query's execution_id on AWS Athena.
        use_threads : bool, int
            True to enable concurrent requests, False to disable multiple threads.
            If enabled os.cpu_count() will be used as the max number of threads.
            If integer is provided, specified number is used.
        boto3_session : boto3.Session(), optional
            Boto3 Session. The default boto3 session will be used if boto3_session receive None.
        categories: List[str], optional
            List of columns names that should be returned as pandas.Categorical.
            Recommended for memory restricted environments.
        dtype_backend: str, optional
            Which dtype_backend to use, e.g. whether a DataFrame should have NumPy arrays,
            nullable dtypes are used for all dtypes that have a nullable implementation when
            “numpy_nullable” is set, pyarrow is used for all dtypes if “pyarrow” is set.

            The dtype_backends are still experimential. The "pyarrow" backend is only supported with Pandas 2.0 or above.
        chunksize : Union[int, bool], optional
            If passed will split the data in a Iterable of DataFrames (Memory friendly).
            If `True` awswrangler iterates on the data by files in the most efficient way without guarantee of chunksize.
            If an `INTEGER` is passed awswrangler will iterate on the data by number of rows equal the received INTEGER.
        s3_additional_kwargs : Optional[Dict[str, Any]]
            Forwarded to botocore requests.
            e.g. s3_additional_kwargs={'RequestPayer': 'requester'}
        pyarrow_additional_kwargs : Optional[Dict[str, Any]]
            Forwarded to `to_pandas` method converting from PyArrow tables to Pandas DataFrame.
            Valid values include "split_blocks", "self_destruct", "ignore_metadata".
            e.g. pyarrow_additional_kwargs={'split_blocks': True}.
        athena_query_wait_polling_delay: float, default: 0.25 seconds
            Interval in seconds for how often the function will check if the Athena query has completed.

        Returns
        -------
        Union[pd.DataFrame, Iterator[pd.DataFrame]]
            Pandas DataFrame or Generator of Pandas DataFrames if chunksize is passed.

        Examples
        --------
        >>> import awswrangler as wr
        >>> res = wr.athena.get_query_results(
        ...     query_execution_id="cbae5b41-8103-4709-95bb-887f88edd4f2"
        ... )

        """
        query_metadata: _QueryMetadata = _get_query_metadata(
            query_execution_id=query_execution_id,
            boto3_session=boto3_session,
            categories=categories,
            metadata_cache_manager=_cache_manager,
            athena_query_wait_polling_delay=athena_query_wait_polling_delay,
        )
        _logger.debug("Query metadata:\n%s", query_metadata)
        client_athena = _utils.client(service_name="athena", session=boto3_session)
        query_info = client_athena.get_query_execution(QueryExecutionId=query_execution_id)["QueryExecution"]
        _logger.debug("Query info:\n%s", query_info)
        statement_type: Optional[str] = query_info.get("StatementType")
        if (statement_type == "DDL" and query_info["Query"].startswith("CREATE TABLE")) or (
            statement_type == "DML" and query_info["Query"].startswith("UNLOAD")
        ):
            return _fetch_parquet_result(
                query_metadata=query_metadata,
                keep_files=True,
                categories=categories,
                chunksize=chunksize,
                use_threads=use_threads,
                boto3_session=boto3_session,
                s3_additional_kwargs=s3_additional_kwargs,
                pyarrow_additional_kwargs=pyarrow_additional_kwargs,
                dtype_backend=dtype_backend,
            )
        if statement_type == "DML" and not query_info["Query"].startswith("INSERT"):
            return _fetch_csv_result(
                query_metadata=query_metadata,
                keep_files=True,
                chunksize=chunksize,
                use_threads=use_threads,
                boto3_session=boto3_session,
                s3_additional_kwargs=s3_additional_kwargs,
                dtype_backend=dtype_backend,
            )
>       raise exceptions.UndetectedType(f"""Unable to get results for: {query_info["Query"]}.""")
E       awswrangler.exceptions.UndetectedType: Unable to get results for: SELECT * from test-table.

venv/lib/python3.10/site-packages/awswrangler/athena/_read.py:724: UndetectedType
================================================================================================= short test summary info ==================================================================================================
FAILED tests/test_foo.py::test_foo - awswrangler.exceptions.UndetectedType: Unable to get results for: SELECT * from test-table.

I suspect that the root of the issue might be caused by this line. I noticed that awswrangler checks the StatementType in the get_query_results function. Because it is hardcoded to "DDL", but the Query starts with "SELECT" (here's a link to that section in the awswrangler repo), the function ends up raising the above error. If I'm completely off and something else is actually going on, feel free to close this issue. If not, then I'd love to open up a PR to try and resolve this issue.

Hi @frenchytheasian! It would make sense to have the StatementType depend on the actual query, instead of hardcoding it, so a PR is very welcome.

I couldn't find anywhere explicitly stating whether or not awswrangler was explicitly supported

We don't explicitly support it. However, Moto should behave exactly the same as AWS (where possible..). If awswrangler exposes that Moto behaves differently, then we should fix it.

@bblommers Okay sounds good. I'll work on that PR. Thanks for the response!


bump mesos-module to bring in fix for SOAK-118

High-level description
This patch brings in two fixes:

The new docker version (18.x) has changed its iptables CHAIN name from DOCKER-ISOLATION to DOCKER-ISOLATION-STAGE-1 and DOCKER-ISOLATION-STAGE-2. As DC/OS overlay modifies docker isolation rules, the change in CHAIN name has broken the DC/OS overlay. This patch bumps mesos-module which fixes the issue

The dcos-net watchdog has been modified to restart the stuck Erlang VM. This fix should work as a good workaround till we have the actual fix for the SSL deadlock issue from the Erlang community

Corresponding DC/OS tickets (obligatory)
These DC/OS JIRA ticket(s) must be updated (ideally closed) in the moment this PR lands:

DCOS-38600 Deadlock when SSL sockets are simultaneously sending/receiving data and buffers are full
SOAK-118 - Elastic does not deploy to Soak 112 Strict

Checklist for all PRs

[ ] Added a comprehensible changelog entry to CHANGES.md or explain why this is not a user-facing change:
[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain here:
[ ] Read the DC/OS contributing guidelines
[ ] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[ ] Change log from the last version integrated (this should be a link to commits for easy verification and review):
[ ] Test Results: [link to CI job test results for component]
[ ] Code Coverage (if available): [link to code coverage report]

PLEASE FILL IN THE TEMPLATE ABOVE / DO NOT REMOVE ANY SECTIONS ABOVE THIS LINE
Instructions and review process
What is the review process and when will my changes land?
All PRs require 2 approvals using GitHub's pull request reviews.
Reviewers should be:

Developers who understand the code being modified.
Developers responsible for code that interacts with or depends on the code being modified.

It is best to proactively ask for 2 reviews by @mentioning the candidate reviewers in the PR comments area. The responsibility is on the developer submitting the PR to follow-up with reviewers and make sure a PR is reviewed in a timely manner. Once a PR has 2 ship-it's, no red reviews, and all tests are green it will be included in the next train.

@mesosphere-mergebot bump-ee

@mesosphere-mergebot label Ready For Review

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee


Error: No value on nested Option

OS: Linux Mint 20.1 Ulyssa
VSCode version:  1.58.2
CodeLLDB version: v1.7.0
Compiler: rustc 1.61.0
Debuggee: binary target generated by cargo new project_name

Debugger in watch and locals show <error: No value> on a nested option.
Steps to reproduce:

Create a new cargo package with cargo new {project_name}
Generate default launch.json suggested by the extention
main.rs

#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ListNode {
    pub val: i32,
    pub next: Option<Box<ListNode>>,
}

impl ListNode {
    #[inline]
    fn new(val: i32) -> Self {
        ListNode { next: None, val }
    }
}

fn main() {
    let three_node = ListNode { val: 3, next: None };
    let two_node = ListNode {
        val: 4,
        next: Some(Box::new(three_node)),
    };
    println!("Hello, world!");
}

Place a breakpoint on the println! in the main function and press f5

Verbose log
Running `cargo build --bin=bad_debug --package=bad_debug --message-format=json`...
warning: unused variable: `two_node`
  --> src/main.rs:17:9
   |
17 |     let two_node = ListNode {
   |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_two_node`
   |
   = note: `#[warn(unused_variables)]` on by default
warning: associated function is never used: new
--> src/main.rs:10:8
|
10 |     fn new(val: i32) -> Self {
|        ^^^
|
= note: #[warn(dead_code)] on by default
warning: 2 warnings emitted
Finished dev [unoptimized + debuginfo] target(s) in 0.01s

Raw artifacts:
{
fileName: '/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug',
name: 'bad_debug',
kind: 'bin'
}
Filtered artifacts:
{
fileName: '/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug',
name: 'bad_debug',
kind: 'bin'
}
configuration: {
type: 'lldb',
request: 'launch',
name: "Debug executable 'bad_debug'",
args: [],
cwd: '${workspaceFolder}',
__configurationTarget: 5,
relativePathBase: '/home/user/Projects/RustProjs/bad_debug',
program: '/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug',
sourceLanguages: [ 'rust' ]
}
liblldb: /home/user/.vscode/extensions/vadimcn.vscode-lldb-1.7.0/lldb/lib/liblldb.so
environment: {}
params: {
evaluateForHovers: true,
commandCompletions: true,
sourceLanguages: [ 'rust' ]
}
[2022-05-24T00:29:28.844Z DEBUG codelldb] New debug session
INFO(Python) 20:29:29 formatters: Initializing
INFO(Python) 20:29:29 formatters.rust: Initializing
[2022-05-24T00:29:29.072Z DEBUG codelldb::dap_codec] --> {"command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code","adapterID":"lldb","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en-us","supportsProgressReporting":true,"supportsInvalidatedEvent":true},"type":"request","seq":1}
[2022-05-24T00:29:29.073Z DEBUG codelldb::dap_codec] <-- {"seq":1,"type":"response","request_seq":1,"success":true,"command":"initialize","body":{"exceptionBreakpointFilters":[{"default":true,"filter":"rust_panic","label":"Rust: on panic"}],"supportTerminateDebuggee":true,"supportsCancelRequest":true,"supportsCompletionsRequest":true,"supportsConditionalBreakpoints":true,"supportsConfigurationDoneRequest":true,"supportsDataBreakpoints":true,"supportsDelayedStackTraceLoading":true,"supportsEvaluateForHovers":true,"supportsFunctionBreakpoints":true,"supportsGotoTargetsRequest":true,"supportsHitConditionalBreakpoints":true,"supportsLogPoints":true,"supportsReadMemoryRequest":true,"supportsRestartFrame":true,"supportsSetVariable":true,"supportsWriteMemoryRequest":true}}
[2022-05-24T00:29:29.083Z DEBUG codelldb::dap_codec] --> {"command":"launch","arguments":{"type":"lldb","request":"launch","name":"Debug executable 'bad_debug'","args":[],"cwd":"/home/user/Projects/RustProjs/bad_debug","__configurationTarget":5,"relativePathBase":"/home/user/Projects/RustProjs/bad_debug","program":"/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug","sourceLanguages":["rust"],"_adapterSettings":{"displayFormat":"auto","showDisassembly":"auto","dereferencePointers":true,"suppressMissingSourceFiles":true,"evaluationTimeout":5,"consoleMode":"commands","sourceLanguages":null,"terminalPromptClear":null,"evaluateForHovers":true,"commandCompletions":true,"reproducer":false},"__sessionId":"74ea6c42-52a3-4d14-996a-adbcb61770ce"},"type":"request","seq":2}
[2022-05-24T00:29:29.084Z DEBUG codelldb::dap_codec] <-- {"seq":2,"type":"event","event":"capabilities","body":{"capabilities":{"exceptionBreakpointFilters":[{"default":true,"filter":"rust_panic","label":"Rust: on panic"}],"supportTerminateDebuggee":true,"supportsCancelRequest":true,"supportsCompletionsRequest":true,"supportsConditionalBreakpoints":true,"supportsConfigurationDoneRequest":true,"supportsDataBreakpoints":true,"supportsDelayedStackTraceLoading":true,"supportsEvaluateForHovers":true,"supportsFunctionBreakpoints":true,"supportsGotoTargetsRequest":true,"supportsHitConditionalBreakpoints":true,"supportsLogPoints":true,"supportsReadMemoryRequest":true,"supportsRestartFrame":true,"supportsSetVariable":true,"supportsWriteMemoryRequest":true}}}
[2022-05-24T00:29:29.084Z DEBUG codelldb::dap_codec] <-- {"seq":3,"type":"event","event":"output","body":{"output":"Console is in 'commands' mode, prefix expressions with '?'.\n"}}
[2022-05-24T00:29:29.153Z DEBUG codelldb::dap_codec] <-- {"seq":4,"type":"event","event":"initialized"}
[2022-05-24T00:29:29.153Z DEBUG codelldb::debug_session] Debug event: 0x55a47b5ca0d0 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {bad_debug}
[2022-05-24T00:29:29.153Z DEBUG codelldb::dap_codec] <-- {"seq":5,"type":"event","event":"module","body":{"module":{"addressRange":"FFFFFFFFFFFFFFFF","id":"FFFFFFFFFFFFFFFF","name":"bad_debug","path":"/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug","symbolFilePath":"/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.154Z DEBUG codelldb::dap_codec] <-- {"seq":6,"type":"request","command":"runInTerminal","arguments":{"args":["/home/user/.vscode/extensions/vadimcn.vscode-lldb-1.7.0/adapter/codelldb","terminal-agent","--connect=44683"],"cwd":"","kind":"integrated","title":"Debug executable 'bad_debug'"}}
[2022-05-24T00:29:29.161Z DEBUG codelldb::dap_codec] --> {"command":"setBreakpoints","arguments":{"source":{"name":"main.rs","path":"/home/user/Projects/RustProjs/bad_debug/src/main.rs"},"lines":[21],"breakpoints":[{"line":21}],"sourceModified":false},"type":"request","seq":3}
[2022-05-24T00:29:29.168Z DEBUG codelldb::debug_session] Debug event: 0x55a47c37d1d0 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000001 (breakpoint-changed), data = {}
[2022-05-24T00:29:29.168Z DEBUG codelldb::dap_codec] <-- {"seq":7,"type":"response","request_seq":3,"success":true,"command":"setBreakpoints","body":{"breakpoints":[{"id":1,"line":21,"message":"Resolved locations: 0","verified":true}]}}
[2022-05-24T00:29:29.188Z DEBUG codelldb::dap_codec] --> {"type":"response","seq":4,"command":"runInTerminal","request_seq":6,"success":true,"body":{"shellProcessId":38489}}
[2022-05-24T00:29:29.209Z DEBUG codelldb::dap_codec] --> {"command":"setFunctionBreakpoints","arguments":{"breakpoints":[]},"type":"request","seq":5}
[2022-05-24T00:29:29.210Z DEBUG codelldb::dap_codec] <-- {"seq":8,"type":"response","request_seq":5,"success":true,"command":"setFunctionBreakpoints","body":{"breakpoints":[]}}
[2022-05-24T00:29:29.223Z DEBUG codelldb::dap_codec] --> {"command":"setDataBreakpoints","arguments":{"breakpoints":[]},"type":"request","seq":6}
[2022-05-24T00:29:29.223Z DEBUG codelldb::dap_codec] <-- {"seq":9,"type":"response","request_seq":6,"success":true,"command":"setDataBreakpoints","body":{"breakpoints":[]}}
[2022-05-24T00:29:29.231Z DEBUG codelldb::dap_codec] --> {"command":"setExceptionBreakpoints","arguments":{"filters":["rust_panic"]},"type":"request","seq":7}
[2022-05-24T00:29:29.238Z DEBUG codelldb::debug_session] Debug event: 0x55a47c5a6ba0 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000001 (breakpoint-changed), data = {}
[2022-05-24T00:29:29.238Z DEBUG codelldb::dap_codec] <-- {"seq":10,"type":"response","request_seq":7,"success":true,"command":"setExceptionBreakpoints"}
[2022-05-24T00:29:29.244Z DEBUG codelldb::dap_codec] --> {"command":"configurationDone","type":"request","seq":8}
[2022-05-24T00:29:29.245Z DEBUG codelldb::dap_codec] <-- {"seq":11,"type":"event","event":"output","body":{"output":"Launching: /home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug\n"}}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":12,"type":"event","event":"output","body":{"output":"Launched process 38999\n"}}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":13,"type":"response","request_seq":2,"success":true,"command":"launch"}
[2022-05-24T00:29:29.351Z DEBUG codelldb::debug_session] Debug event: 0x55a47c5d1390 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {ld-2.31.so}
[2022-05-24T00:29:29.351Z DEBUG codelldb::debug_session] Debug event: 0x55a47c3e6380 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {vdso}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":14,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7FCF000","id":"7FFFF7FCF000","name":"ld-2.31.so","path":"/usr/lib/x86_64-linux-gnu/ld-2.31.so","symbolFilePath":"/usr/lib/x86_64-linux-gnu/ld-2.31.so","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":15,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7FCE000","id":"7FFFF7FCE000","name":"[vdso]","path":"[vdso]","symbolStatus":"Symbols not found"},"reason":"new"}}
[2022-05-24T00:29:29.351Z DEBUG codelldb::debug_session] Debug event: 0x55a47c5dbb00 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000001 (breakpoint-changed), data = {}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":16,"type":"response","request_seq":8,"success":true,"command":"configurationDone"}
[2022-05-24T00:29:29.351Z DEBUG codelldb::debug_session] Debug event: 0x55a47c5d4800 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000001 (breakpoint-changed), data = {}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":17,"type":"event","event":"breakpoint","body":{"breakpoint":{"id":1,"line":21,"message":"Resolved locations: 1","verified":true},"reason":"changed"}}
[2022-05-24T00:29:29.351Z DEBUG codelldb::debug_session] Debug event: 0x55a47c5d48d0 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {bad_debug}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":18,"type":"event","event":"breakpoint","body":{"breakpoint":{"id":2,"message":"Resolved locations: 1","verified":true},"reason":"changed"}}
[2022-05-24T00:29:29.351Z DEBUG codelldb::debug_session] Debug event: 0x55a47c424b40 Event: broadcaster = 0x55a47c5b8df8 (lldb.process), type = 0x00000001 (state-changed), data = { process = 0x55a47c5b8dc0 (pid = 38999), state = running}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":19,"type":"event","event":"module","body":{"module":{"addressRange":"555555554000","id":"555555554000","name":"bad_debug","path":"/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug","symbolFilePath":"/home/user/Projects/RustProjs/bad_debug/target/debug/bad_debug","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.351Z DEBUG codelldb::dap_codec] <-- {"seq":20,"type":"event","event":"continued","body":{"allThreadsContinued":true,"threadId":0}}
[2022-05-24T00:29:29.355Z DEBUG codelldb::debug_session] Debug event: 0x7f571000e070 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {ld-linux-x86-64.so.2}
[2022-05-24T00:29:29.355Z DEBUG codelldb::debug_session] Debug event: 0x7f57100060b0 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000001 (breakpoint-changed), data = {}
[2022-05-24T00:29:29.355Z DEBUG codelldb::debug_session] Debug event: 0x7f5710012570 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000001 (breakpoint-changed), data = {}
[2022-05-24T00:29:29.355Z DEBUG codelldb::debug_session] Debug event: 0x7f571000f900 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000004 (modules-unloaded), data = {ld-linux-x86-64.so.2}
[2022-05-24T00:29:29.355Z DEBUG codelldb::dap_codec] <-- {"seq":21,"type":"event","event":"module","body":{"module":{"addressRange":"FFFFFFFFFFFFFFFF","id":"FFFFFFFFFFFFFFFF","name":"ld-linux-x86-64.so.2","path":"/lib64/ld-linux-x86-64.so.2","symbolFilePath":"/lib64/ld-linux-x86-64.so.2","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.355Z DEBUG codelldb::dap_codec] <-- {"seq":22,"type":"event","event":"module","body":{"module":{"id":"FFFFFFFFFFFFFFFF","name":""},"reason":"removed"}}
[2022-05-24T00:29:29.355Z DEBUG codelldb::debug_session] Debug event: 0x7f571000f980 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {vdso}
[2022-05-24T00:29:29.355Z DEBUG codelldb::dap_codec] <-- {"seq":23,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7FCE000","id":"7FFFF7FCE000","name":"[vdso]","path":"[vdso]","symbolStatus":"Symbols not found"},"reason":"new"}}
[2022-05-24T00:29:29.362Z DEBUG codelldb::debug_session] Debug event: 0x7f571001d060 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {libgcc_s.so.1}
[2022-05-24T00:29:29.362Z DEBUG codelldb::dap_codec] <-- {"seq":24,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7F8C000","id":"7FFFF7F8C000","name":"libgcc_s.so.1","path":"/lib/x86_64-linux-gnu/libgcc_s.so.1","symbolFilePath":"/lib/x86_64-linux-gnu/libgcc_s.so.1","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.376Z DEBUG codelldb::dap_codec] --> {"command":"threads","type":"request","seq":9}
[2022-05-24T00:29:29.377Z DEBUG codelldb::dap_codec] <-- {"seq":25,"type":"response","request_seq":9,"success":true,"command":"threads","body":{"threads":[{"id":38999,"name":"1: tid=38999 "bad_debug""}]}}
[2022-05-24T00:29:29.415Z DEBUG codelldb::debug_session] Debug event: 0x7f57102f0100 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {libpthread.so.0}
[2022-05-24T00:29:29.415Z DEBUG codelldb::dap_codec] <-- {"seq":26,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7F69000","id":"7FFFF7F69000","name":"libpthread.so.0","path":"/lib/x86_64-linux-gnu/libpthread.so.0","symbolFilePath":"/usr/lib/debug/.build-id/e5/4761f7b554d0fcc1562959665d93dffbebdaf0.debug","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.415Z DEBUG codelldb::debug_session] Debug event: 0x7f571001d060 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {libdl.so.2}
[2022-05-24T00:29:29.415Z DEBUG codelldb::dap_codec] <-- {"seq":27,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7F63000","id":"7FFFF7F63000","name":"libdl.so.2","path":"/lib/x86_64-linux-gnu/libdl.so.2","symbolFilePath":"/lib/x86_64-linux-gnu/libdl.so.2","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.422Z DEBUG codelldb::debug_session] Debug event: 0x7f57102dfa70 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {libc.so.6}
[2022-05-24T00:29:29.422Z DEBUG codelldb::dap_codec] <-- {"seq":28,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7D71000","id":"7FFFF7D71000","name":"libc.so.6","path":"/lib/x86_64-linux-gnu/libc.so.6","symbolFilePath":"/lib/x86_64-linux-gnu/libc.so.6","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.422Z DEBUG codelldb::debug_session] Debug event: 0x7f571001d000 Event: broadcaster = 0x55a47b660d88 (lldb.target), type = 0x00000002 (modules-loaded), data = {libgcc_s.so.1, libpthread.so.0, libdl.so.2, libc.so.6}
[2022-05-24T00:29:29.422Z DEBUG codelldb::dap_codec] <-- {"seq":29,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7F8C000","id":"7FFFF7F8C000","name":"libgcc_s.so.1","path":"/lib/x86_64-linux-gnu/libgcc_s.so.1","symbolFilePath":"/lib/x86_64-linux-gnu/libgcc_s.so.1","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.422Z DEBUG codelldb::dap_codec] <-- {"seq":30,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7F69000","id":"7FFFF7F69000","name":"libpthread.so.0","path":"/lib/x86_64-linux-gnu/libpthread.so.0","symbolFilePath":"/usr/lib/debug/.build-id/e5/4761f7b554d0fcc1562959665d93dffbebdaf0.debug","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.422Z DEBUG codelldb::dap_codec] <-- {"seq":31,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7F63000","id":"7FFFF7F63000","name":"libdl.so.2","path":"/lib/x86_64-linux-gnu/libdl.so.2","symbolFilePath":"/lib/x86_64-linux-gnu/libdl.so.2","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.423Z DEBUG codelldb::dap_codec] <-- {"seq":32,"type":"event","event":"module","body":{"module":{"addressRange":"7FFFF7D71000","id":"7FFFF7D71000","name":"libc.so.6","path":"/lib/x86_64-linux-gnu/libc.so.6","symbolFilePath":"/lib/x86_64-linux-gnu/libc.so.6","symbolStatus":"Symbols loaded."},"reason":"new"}}
[2022-05-24T00:29:29.425Z DEBUG codelldb::debug_session::breakpoints] Callback for breakpoint location 1.1: where = bad_debug`main + 196 at main.rs:21:5, address = 0x000055555555bb24, resolved, hit count = 1
[2022-05-24T00:29:29.425Z DEBUG codelldb::debug_session] Debug event: 0x7f5710003350 Event: broadcaster = 0x55a47c5b8df8 (lldb.process), type = 0x00000001 (state-changed), data = { process = 0x55a47c5b8dc0 (pid = 38999), state = stopped}
[2022-05-24T00:29:29.426Z DEBUG codelldb::dap_codec] <-- {"seq":33,"type":"event","event":"stopped","body":{"allThreadsStopped":true,"reason":"breakpoint","threadId":38999}}
[2022-05-24T00:29:29.444Z DEBUG codelldb::dap_codec] --> {"command":"threads","type":"request","seq":10}
[2022-05-24T00:29:29.444Z DEBUG codelldb::dap_codec] <-- {"seq":34,"type":"response","request_seq":10,"success":true,"command":"threads","body":{"threads":[{"id":38999,"name":"1: tid=38999 "bad_debug""}]}}
[2022-05-24T00:29:29.454Z DEBUG codelldb::dap_codec] --> {"command":"stackTrace","arguments":{"threadId":38999,"startFrame":0,"levels":1},"type":"request","seq":11}
[2022-05-24T00:29:29.456Z DEBUG codelldb::dap_codec] <-- {"seq":35,"type":"response","request_seq":11,"success":true,"command":"stackTrace","body":{"stackFrames":[{"column":5,"id":1001,"line":21,"name":"main","source":{"name":"main.rs","path":"/home/user/Projects/RustProjs/bad_debug/src/main.rs"}}],"totalFrames":17}}
[2022-05-24T00:29:29.879Z DEBUG codelldb::dap_codec] --> {"command":"scopes","arguments":{"frameId":1001},"type":"request","seq":12}
[2022-05-24T00:29:29.880Z DEBUG codelldb::dap_codec] <-- {"seq":36,"type":"response","request_seq":12,"success":true,"command":"scopes","body":{"scopes":[{"expensive":false,"name":"Local","variablesReference":1002},{"expensive":false,"name":"Static","variablesReference":1003},{"expensive":false,"name":"Global","variablesReference":1004},{"expensive":false,"name":"Registers","variablesReference":1005}]}}
[2022-05-24T00:29:29.881Z DEBUG codelldb::dap_codec] --> {"command":"stackTrace","arguments":{"threadId":38999,"startFrame":1,"levels":19},"type":"request","seq":13}
[2022-05-24T00:29:29.882Z DEBUG codelldb::disassembly] bad_debugcall_once<fn(), ()> + 11 at function.rs:227:5 [2022-05-24T00:29:29.882Z DEBUG codelldb::disassembly] bad_debug__rust_begin_short_backtrace<fn(), ()> + 14 at backtrace.rs:125:5
[2022-05-24T00:29:29.883Z DEBUG codelldb::disassembly] bad_debug{closure#0}<()> + 17 at rt.rs:145:18 [2022-05-24T00:29:29.883Z DEBUG codelldb::disassembly] bad_debuglang_start_internal + 1022 [inlined] core::result::Result$LT$T$C$E$GT$::unwrap_or::h4840467289045427 at result.rs:1439:22
bad_debuglang_start_internal + 1022 [inlined] std::rt::lang_start_internal::_$u7b$$u7b$closure$u7d$$u7d$::ha7dad166dc711761 + 6 at rt.rs:128:48     bad_debuglang_start_internal + 1016 [inlined] std::panicking::try::do_call::hda0c61bf3a57d6e6 at panicking.rs:492:40
bad_debuglang_start_internal + 1016 [inlined] std::panicking::try::hbc940e68560040a9 at panicking.rs:456:19     bad_debuglang_start_internal + 1016 [inlined] std::panic::catch_unwind::haed0df2aeb3fa368 at panic.rs:137:14
bad_debuglang_start_internal + 1016 at rt.rs:128:20 [2022-05-24T00:29:29.887Z DEBUG codelldb::disassembly] bad_debuglang_start<()> + 48 at rt.rs:144:17
[2022-05-24T00:29:29.887Z DEBUG codelldb::disassembly] bad_debugmain + 28 [2022-05-24T00:29:29.888Z DEBUG codelldb::disassembly] libc.so.6__libc_start_main + 243
[2022-05-24T00:29:29.889Z DEBUG codelldb::disassembly] bad_debug`start + 46
[2022-05-24T00:29:29.889Z DEBUG codelldb::dap_codec] <-- {"seq":37,"type":"response","request_seq":13,"success":true,"command":"stackTrace","body":{"stackFrames":[{"column":0,"id":1006,"line":6,"name":"call_once<fn(), ()>","presentationHint":"subtle","source":{"name":"@core::ops::function::FnOnce::call_once::h5566f5639b0dd8be","sourceReference":1000}},{"column":0,"id":1007,"line":6,"name":"__rust_begin_short_backtrace<fn(), ()>","presentationHint":"subtle","source":{"name":"@std::sys_common::backtrace::__rust_begin_short_backtrace::hb8fa6d4dbc8b88b9","sourceReference":1001}},{"column":0,"id":1008,"line":7,"name":"{closure#0}<()>","presentationHint":"subtle","source":{"name":"@std::rt::lang_start::$u7b$$u7b$closure$u7d$$u7d$::h2b24e76a314ac08d","sourceReference":1002}},{"column":0,"id":1009,"line":216,"name":"core::ops::function::impls::$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$F$GT$::call_once::had4f69b3aefb47a8","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1010,"line":214,"name":"std::panicking::try::do_call::hf2ad5355fcafe775","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1011,"line":214,"name":"std::panicking::try::h0a63ac363423e61e","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1012,"line":214,"name":"std::panic::catch_unwind::h18088edcecb8693a","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1013,"line":214,"name":"std::rt::lang_start_internal::$u7b$$u7b$closure$u7d$$u7d$::ha7dad166dc711761","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1014,"line":214,"name":"std::panicking::try::do_call::hda0c61bf3a57d6e6","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1015,"line":214,"name":"std::panicking::try::hbc940e68560040a9","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1016,"line":214,"name":"std::panic::catch_unwind::haed0df2aeb3fa368","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1017,"line":214,"name":"lang_start_internal","presentationHint":"subtle","source":{"name":"@std::rt::lang_start_internal::h9c06694362b5b80c","sourceReference":1003}},{"column":0,"id":1018,"line":13,"name":"lang_start<()>","presentationHint":"subtle","source":{"name":"@std::rt::lang_start::h6f42e49cfa811b86","sourceReference":1004}},{"column":0,"id":1019,"line":10,"name":"main","presentationHint":"subtle","source":{"name":"@main","sourceReference":1005}},{"column":0,"id":1020,"line":64,"name":"__libc_start_main","presentationHint":"subtle","source":{"name":"@__libc_start_main","sourceReference":1006}},{"column":0,"id":1021,"line":15,"name":"_start","presentationHint":"subtle","source":{"name":"@_start","sourceReference":1007}}],"totalFrames":17}}
[2022-05-24T00:29:29.895Z DEBUG codelldb::dap_codec] --> {"command":"variables","arguments":{"variablesReference":1002},"type":"request","seq":14}
[2022-05-24T00:29:29.900Z DEBUG codelldb::dap_codec] <-- {"seq":38,"type":"response","request_seq":14,"success":true,"command":"variables","body":{"variables":[{"evaluateName":"three_node","name":"three_node","type":"bad_debug::ListNode","value":"{val:3}","variablesReference":1022},{"evaluateName":"two_node","name":"two_node","type":"bad_debug::ListNode","value":"{val:4}","variablesReference":1023}]}}

I have this same issue with a nested arkworks-rs polynomial. Were you able to figure out a fix for this?

Same cause as #605, ListNode is a recursive type.


Corrected file name: ResumeIndexing.ps1

The file name StartSearchIndexing.ps1 does not exist, but instead it's: ResumeIndexing.ps1

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


In macros invocation, a comma is inserted after struct/enum declaration

TLDR: a , is inserted between struct/enum declaration and other fragment specifiers in macros, which cause them to break after formatting.
This happens for both tupled and named structs and enums, but does not happen for unions. This is clearly not linked to the macro definition itself.
Input
mac!(struct Foo {} bar);
mac!(struct Foo; bar);
mac!(enum Foo {} bar);

Output
mac!(struct Foo {}, bar);
mac!(struct Foo;, bar);
mac!(enum Foo {}, bar);

Notice the , inserted between the struct/enum declaration, which can break the macro.
Expected output
mac!(struct Foo {} bar);
mac!(struct Foo; bar);
mac!(enum Foo {} bar);

I have created a playground link, so that it is easier to see what's wrong.
Meta

rustfmt version: rustfmt 1.4.15-stable (530eadf 2020-06-02) (tested, also reproducible on the playground)
From where did you install rustfmt?: Installed via NixOS package manager, but also happens on the playground.

Feel free to ping me if other information is needed.
Edits

2020/08/27: specify that this is independent from the macro definition itself, mention enums and unions.

More sophisticated solutions would require us to look at how the macro is defined, which we don't have access to at the AST level. I am saying this because it's possible to fix, but would be kind-of hacky and may bring more problems.

Completely agree: this is not the best way to fix the issue. Additionally, this wouldn't solve the issue when the macro itself is not defined.
IMO no tokens should be added or removed in macros (unless the macro is defined for instance in the standard library), but I may be wrong.

Confirming this is still reproducible with rustfmt 1.5.1-nightly (a451a39d 2022-07-25)


unsupported format '.tgz'

Hi,
I get this when trying to extract a .tgz (which is a tar.gz)
⇒  arc ls ~/Downloads/srv_scripts.tgz
unsupported format '.tgz'
⇒  tar -xzvf ~/Downloads/srv_scripts.tgz
scripts/
scripts/stop.sh

Fixed in 526228db02717285609233ec22606d727e53fd9c

nice! that was fast thanks !


fix: Remove custom logic for extracting RGB and alpha components for setBorderColor

Overview
Upgrading React Native to 0.76 causes a build crash due to a change in the signature of setBorderColor in version 0.76 (ReactViewGroup.java).
This PR introduced the new signature: https://github.com/facebook/react-native/commit/58c726a6bade42946cc28191de5f7ddb109d63f0
You can see the relevant diff here: https://github.com/facebook/react-native/commit/58c726a6bade42946cc28191de5f7ddb109d63f0#diff-0830ad3c2f92a395a52a1175e0868ce8c7f195ca2a95958e932077d00dd79021L308.
With this change, we no longer need to extract the RGB and alpha components; we can now directly pass the color.

@Naturalclar Can we release this fix??

I'm also waiting for this fix to be released

@chakrihacker @benjaminkomen thanks for the ping! the fix is released in 1.1.5


convert::millis can't convert large Durations

This test fails in mod convert:
#[test]
fn convert_big_duration() {
    millis(Duration::from_secs(::std::u64::MAX));
}

fn timeout already returns a TimerResult, so probably convert::millis should return a result as well, which would then be propagated out, instead of panicking.

It would probably be better to just return u64::MAX in that case. u64::MAX milliseconds are still many million years, and any longer timeout just doesn't make any difference.

This is fixed by https://github.com/carllerche/mio/commit/7108b3de0ff050202c7340dfef3510bcf81a0539


Too much space between tab labels with TabNavigator

Tab labels/names take up so much space that I cannot even fit three tab labels on the screen (half the label disappears of the screen for the third one). The labels are pretty short too (3, 4 and 6 characters each).
How can we make tab labels take up less space?

Ah, I noticed this issue occurs only when scrollEnabled is set to true on android. However, I think labels could still take up less space even with scrolling enabled?

You can specify the width you want for the tabs in tabStyle - https://reactnavigation.org/docs/navigators/tab


New App Tessie

Added a new app that allows users to get battery information on their Tesla using the Tessie API.

I have read the CLA Document and I hereby sign the CLA

Hey @inderpal, and thanks for the PR! It would be great if you could update the app to display a default graphic when no configuration is provided. That will allow us to display a an illustrative preview to users, showing them what to expect from the app once they've provided their own API key.

@matslina thanks for the feedback! I added better error handling and view creation and plan to do more in the future - can you please review?


Fix "cvat-aws-ap-northeast-1-all.yaml"

Fix ModelDataUrl paths in cvat-aws-ap-northeast-1-all.yaml

Commit Fix CFn in ap-northeast-1 Tokyo Region is a fixed entire file of Tokyo region CloudFormation YAML file
In Commit fix CFn ModelDataUrl in Tokyo Region, you can see the diff with the original YAML file
Please ignore the commit Delete fix-cvat-aws-ap-northeast-1-all.yaml


⚠ Bofrost.lu has degraded performance

In ea0a532, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 978 ms

Resolved: Bofrost.lu performance has improved in 822f47e after 6 minutes.


/load with no parameters to clear chat context

It would be fantastic to have a command that clears a chat's context.
At the moment, getting a fresh context can be done with

/bye, then starting the client again. Few keystrokes, but long wait time for the model to be reloaded.
/load <model>, where <model> is the name of the most recently loaded model. Fast (same model stays in memory), but many keystrokes, especially with non-latest models.

As discussed here, it would be great to add a /load command (no parameters) which has the same effect as /load <most recent model>.
Thank you for ollama, it's awesome!

I had a desire for something like this as well. What about a command /clear that removes your chat history, or are you wanting it to keep the initial session info that could be saved in the modelfile?

For my use, /clear that removes chat history is perfect! Many thanks!


good for dataflow graphs?

hi,
I just came here from a medium article on ramda.
Is this library capable of stream merging and splitting?

Hi @hp8wvvvgnj6asjm7. Yes 😄
If possible, please use the newer @mostjs/core, e.g. npm install --save @most/core, as the cujojs/most repo is older and in maintenance mode.  It is a newer implementation of the same ideas in cujojs/most.  You can find the docs here: https://mostcore.readthedocs.io/en/latest/
For merging, see the api docs for merge operations.  For splitting, you can use multicast to allow a stream to be consumed by multiple consumers.
One caveat is that if you need "back pressure", aka flow control, then you may want to look into other options.  Both @most/core and cujojs/most are intended to deal with events as they happen.
I hope that helps.
I'll close this issue, but please feel free to continue the discussion if you need.


[BUG] When modifying workflows, remove only works on the last item.

Describe the bug:
When a user is modifying a workflow, when attempting to remove a step that is not the last one, a step is instead added.
To Reproduce:
Steps to reproduce the behavior:

Go to #85 branch
Start the server
Login as any user that is not a kiosk
Go to modify workflows from the home page
Click on remove this step from not the last step
See a step added, instead of removed.

Expected behavior:
The step at that index should have been removed.
Actual Behavior:
Rather than be removed, a step at the end was added. Only the last step is able to be removed.
Environment:

OS: Windows venv
Branch: #85 Branch

Additional context:
This feature is still a work in progress, and so may be a more minor problem.
Possible Fix
N/A

Closing this due to #158 having other related bugs.


Add dnn_trainer::train_one_step iterator signature

Add an overload of dnn_trainer::train_one_step that takes a pair of
iterators rather than a std::vector.

Super, thanks for the PR :+1:


Remove unused KingfisherScrapyItem class

Closing as there's a reason to fill in the item class #291.


Document TownCrier

Proposed Changes
Update the PULL_REQUEST_TEMPLATE.md to include information about towncrier and how it is used.
Justification
It was not clear to me:

Clarity on that it is required
Between changed and fix, when I am "fixing an issue" as an example
Clarity when there is not an existing issues, what should the number be

In general I am not sure community members will understand the process without documentation on the template.

If periods are required on the fragements: https://github.com/nautobot/nautobot/pull/2614/files#r995141707 would be good to add a test for it as well.

https://docs.nautobot.com/projects/core/en/stable/development/#creating-changelog-fragments
https://github.com/nautobot/nautobot/blob/develop/.github/PULL_REQUEST_TEMPLATE.md?plain=1#L27


[laravel] \Routing\Router\group() parameters

https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php#L56
        Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));

Could it be that in the example app laravel/laravel group() should get (array $attributes, $routes) instead of a string?
https://github.com/laravel/framework/blob/5.5/src/Illuminate/Routing/Router.php#L335-L342
public function group(array $attributes, $routes)

See here: https://github.com/laravel/framework/blob/5.6/src/Illuminate/Routing/RouteRegistrar.php#L103

@arjasco Thanks.
ide-helper + phpstan told me that group() is in Router.php
What could be the cause?

It seems like ide-helper generates two group()-s.


[1.15.2] Crash on world creation

Please take a look through the existing issues to see if your problem has already been reported and reply to that rather than creating a new thread :)
Description
Upon attempting to create a world, the client crashes from attempting to create the new world.
How to reproduce
The crash was somewhat reproduceable since it didn't happen 100% of the time.
Additional information
Crash Log:
crash-2020-04-28_15.15.54-server.txt

A biome feature provided by one of those other mods is set up wrong and causing TF to crash.
If you could link me to the modpack (or zip the mods and send me them) I could probably find which one is the problematic mod.

Is there a way that I can PM you it?  It's a custom pack that hasn't released publicly

Yeah sure. You can contact me on discord or through a curseforge private message if you prefer


Add optional TLS configuration for tesla-http-proxy

Overview
This PR introduces a new command line flag --skip-tls, which allows users to opt out of using TLS for serving HTTP requests. When this flag is set to true, the application will use http.ListenAndServe() instead of http.ListenAndServeTLS(), enabling the server to handle HTTP requests without TLS encryption.
This change is fully backwards compatible as it introduces a new flag with a default behavior that maintains the existing functionality (using TLS).
Motivation
The motivation behind this change is to provide flexibility for scenarios where TLS encryption may not be necessary, such as in a secure, internal network or for local development and testing purposes. This helps in reducing the complexity and overhead associated with managing TLS certificates, especially in environments where security requirements are relaxed.
Documentation
Updated the relevant sections of the documentation to include information about the new --skip-tls flag and its usage.

Thanks for the feedback and the PR.
We've had some internal discussion on whether or not add a flag like this. I'm concerned that making it easy to disable TLS will result in folks who don't know better setting up an insecure deployment. We've had issues with this before, in the form of a popular third-party application that is intended to be run on a trusted network, but is often exposed to the public internet.
On the other hand, people who understand the danger and can secure an internal network shouldn't have too much difficulty creating an application without TLS. It sounds like you're in this group. To help with this, we deliberately made the tesla-http-proxy application a thin CLI on top of the proxy package so that more advanced users could create their own proxy service quickly without forking the repository.
Would that solution work for you? If not, we'd appreciate feedback on the obstacles to doing this. If we do go with the -skip-tls route, we should clearly communicate the dangers. This could include documentation and renaming the flag -insecure or similar.

Thanks for the feedback and the PR.
We've had some internal discussion on whether or not add a flag like this. I'm concerned that making it easy to disable TLS will result in folks who don't know better setting up an insecure deployment. We've had issues with this before, in the form of a popular third-party application that is intended to be run on a trusted network, but is often exposed to the public internet.
On the other hand, people who understand the danger and can secure an internal network shouldn't have too much difficulty creating an application without TLS. It sounds like you're in this group. To help with this, we deliberately made the tesla-http-proxy application a thin CLI on top of the proxy package so that more advanced users could create their own proxy service quickly without forking the repository.
Would that solution work for you? If not, we'd appreciate feedback on the obstacles to doing this. If we do go with the -skip-tls route, we should clearly communicate the dangers. This could include documentation and renaming the flag -insecure or similar.

Thanks for the response @sethterashima. We are actually doing what you suggested and adding our own wrapper. To give you some context, we are deploying this within our own infrastructure which has ssl termination, etc, at the load balancer level, so we don't need the TLS at the app level. The main reason we wanted to use this proxy server is so that we don't lose any upstream changes from you (Tesla).
I can do two things:

I can close this PR
Update this flag to be insecure. The pro here is that it would remove some friction for developers to try it out quickly.

I'll defer to you on what I should do. Thanks again!